小米云服务短信搜索项目历程

短信搜索的项目上线了两个周,详见这里 https://i.xiaomi.com/#sms/full

这是我在小米做的第一个项目,我觉得有必要记录一下。

来小米之后,小米云服务的负责人范老师找到我,希望我们搜索组做小米云服务Web页面上的短信搜索。

我:“短信搜索?好啊,我是做过大搜索的人”

范:“哦,你做过啥大搜索”

我:“bing, soso”

范:“。。。”

我:“对了,我还是SenseiDB Committer,你知道什么是Committer吧”

范:“。。。”

我:“一共多少条短信”

范:“先按照100亿做吧”

我:“。。。” (目前小米云服务的短信远超100亿了)

我:“这个项目好做的一点是不用爬虫了,分词器,实时建索引,检索,弄三四个人搞搞应该可以”

范: “我们是创业公司,你一个人搞搞”

我: “。。。”

然后我叮叮咣咣干了段时间,范老师来了。

范:“对了,为了安全硬盘必须加密,要保证即使磁盘被别人拿走了用户短信也不能泄露”

我:“我搜索不存短信正文,都是倒排表,而且索引格式是咱们自己定的”

范:“万一人家破解了索引格式呢,就能看到短信里面的词了,虽然用户id是加密的,但是短信里面的关键词可能会泄露用户的身份” (小米云服务后台存储的用户id并不是小米id,而是小米id的加密结果)

我:“但是硬盘加密会导致读写性能下降30%”

范:“这个不重要,安全第一这是我们小米云服务的态度。雷总说过:炮制虽繁必不敢省人工,品味虽贵必不敢减物力”

我:“好吧” (我作为程序员很大的一个优点就是态度好)

然后我又叮叮咣咣干了段时间,范老师又来了。

范:“对了,我想了一下硬盘加密不行,因为硬盘加密防外不防内,我们内部能登录上机器的人是可以直接看到磁盘上的明文。你应该对索引内容进行加密然后再存在磁盘上”

我: “。。。这加密后我完全没法debug搜索结果啊”

范:“这个不重要,安全第一这是我们小米云服务的态度。雷总说过:炮制虽繁必不敢省人工,品味虽贵。。。”

我:“行”

然后我又叮叮咣咣干了段时间,范老师又来了。

范:“你的加密算法,要保证用户的密钥不相同,因为如果密钥相同的话,每个用户下相同的词加密结果都一样,得到对大量用户数据后,是有可能通过自然语言中的词频分布来破解加密算法的。” (加密后出现频率高的词就是自然语言中出现频率高的词)

我: “。。。这需要单独维护一个密钥的服务啊”

范:“这个不重要,安全第一这是我们小米云服务的态度。雷总说过:炮制虽繁必不敢省人工,。。。”

我:“好行!”

然后我又叮叮咣咣干了段时间,终于差不多,需要做一下性能测试。

我:“我需要些用户的短信数据,建索引做性能测试,只是做性能测试,不看任何内容”

范:“不行,你自己用程序生成些数据就可以了”

我:“程序生成的,和真实的情况可能差别很大”

范:“这个不重要,安全第一这是我们小米云服务的态度。雷总说过。。。”

我:“好好,行了!”

就这样几经波折,终于上线了。做项目之前就想到了真的登录小米云服务的Web页面然后使用短信搜索的人并不会很多,但是就这么一个项目确实让我感受到了小米云服务的态度,大家都感受下。

BTW:这个项目还有个额外收获就是我们的加密算法申请了个专利,赚了点小米的专利奖金。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:小米云服务短信搜索项目历程 | QingGe's Blog

One thought on “小米云服务短信搜索项目历程

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据