公告
back

小米首席安全官陈洋:小米IoT安全思考与实践

由 九三 于 2018-12-04 00:00:00 发表

随着18世纪60年代开始的第一次工业革命,人类在技术发展史上创造了一次又一次的奇迹,之后的电力革命、计算机信息技术革命,直到我们正经历的第四次全新技术革命。这个科技爆发的历程印证了全人类不断发展新技术,追求并创造全新生活方式的探索精神。


AI 与 IoT 作为第四次工业革命的基础支撑,从诞生之日就伴随着严峻的安全挑战,但不可否认的是它依然是改变未来的「金钥匙」。小米就是这样一家决心创造未来的企业,我们已经建立了目前全球规模最大的消费类 IoT 平台,连接超过1.32亿台智能设备,AI语音服务累计唤醒50亿次。

那么小米是如何保障如此庞大且复杂的 IoT 生态平台的呢?从今天开始,本公众号会陆续为大家揭秘 2018 小米 IoT 安全峰会的诸多亮点,敬请关注。


今天第一个重磅内容来自小米首席安全官陈洋(cy07)的分享——《小米 IoT 安全思考与实践》



小米自家与其生态链下的 IoT 设备五花八门,有牙刷、有电动玩具、对讲机、摄像头甚至是守护家里大门的智能门锁等,覆盖我们生活的方方面面。面对如此复杂庞大的产品品类,小米是如何保障它们安全的呢?相信这也是大家心里的疑问。



我们要考虑不同设备的攻击面,比如指纹锁有自学习功能,这个容易被贴片攻击;蓝牙通讯是否可以被劫持,篡改;NB-iot通讯也可以被伪基站劫持,发一些虚假消息和控制指令;GPS协议自身也存在安全缺陷,容易被伪造。以及硬件设备自身又会存在很多调试接口,在一定场景下会暴露权限。如果说每款设备都要解决这些问题的话,那工作量是相当巨大的。


面对这个问题,小米的方案很干练,那就是减少设备的攻击面。这里主要分为六个层面:

  1. 认证层面 保证每台设备预制不同密钥,用户绑定产生唯一关联性的token,利用密钥与token的关系防止越权操作问题。

  2. 通讯层面 要做流量加密与数据签名。

  3. 硬件层面 尽可能的把调试接口关掉,并且引入安全芯片,安全存储密钥信息。

  4. 固件层面 防止固件被篡改,所以验签与防降级的保护是基本要求。

  5. 系统层面 禁止开启任何处miio外的通讯或管理功能服务端口,局域网是不可信的环境。

  6. 应用层面 向开发者提供成熟可靠的SDK,减少额外开发带来新的安全风险。

这样去看,即使再复杂的设备,再复杂的攻击手段,利用这样的 MioT 设备架构去实施,就会把安全风险控制到最低的程度。在利用定制化的硬件模块,比如Wi-Fi模块,把通讯协议进行安全封装提供给开发者,提供对应的SDK进行开发。这样的好处不言而喻,即使开发者疏忽安全,那开发出的产品也会有一个最基础的安全保障。但即使这样,也不能掉以轻心,小米针对生态行业的开发者们提供了《小米IoT产品安全规范》,从八个层面提出一些详细的安全要求以及实现手段,协助生态企业的开发能力也进入到一个比较高的安全标准。



以上努力让设备有了较为基础的安全保障,看起来似乎不错,但仍然不能大意。多年的安全经验告诉我们人总是会犯错的。那么小米要如何用有限的人力来覆盖大量的产品生产呢?这里就需要引入一些自动化的测试手段。


比如之前提到的禁止设备开放端口问题,我们会将每款设备放到 IoT 测试环境中,自动扫描开放的端口以及对应的服务,以及这些服务潜在的安全隐患,这跟传统的主机安全扫描相似。并且还会自动化的对流量进行劫持攻击,检查证书的校验情况,同时自动化的把OTA行为进行劫持,替换恶意的固件。另外小米还有一个特有的优势,我们可以利用调试版的固件向设备自动植入根证书,将SSL通讯解密,对数据进行分析是否涉及隐私上传,以上都是可以通过自动化手段来实现的。



在经过了这黑盒与白盒的自动化分析后,并不能达到理想的安全效果。所以我们依然要从攻击者视角去思考,人为角度去攻击设备。


人为分析角度首先要进行风险建模,如果一个黑客拿到了设备,那么他最感兴趣的是什么?怎样的攻击最能获取成就感?如果要达到这个目标需要什么条件,这样的思路去寻找整个攻防的关键点。然后我们会拆解每一款产品,分析硬件设计的风险,模拟一些攻击场景。


以上是我们内部最大化发现问题的种种思路与手段,这些还不够,我们还提出了一种防御链的概念。因为防御是不同层面的问题,并不是某一个层面的防御能够解决所有问题,必须一层一层立体布防。比如大家熟悉的GPS定位是可以伪造的,如果附近有伪造的信号发射源,那GPS芯片获取的坐标可能就是假的,在这个层面上进行攻防成本非常高,还不一定能解决。再比如一些设备通过GSM进行联网,也可以被吸附到伪基站上进行攻击,如果我们在这一层跟他死磕到底,未必是明智的方法。所以我们要构建一条防御链,这一层可能失控,我们通过其他技术手段去弥补。以定位为例,GPS不可信的话我们用Wi-Fi等其他手段辅助定位,看整体数据是否一致。这个就是 IoT 风控,我们要看数据是否互恰,意思就是一款设备会跟云端通讯,会有很多维度的信息,一般的攻击者攻破了某个点并不是不可能,但是很难让所有数据成对出现,流程中一旦出现不合理的数据流程,我们会认为这台设备的请求都存在风险。


风控的另一个方面就是账号服务,设备都是一个用户在用,必然会绑定在这个用户账号上。如果设备没有安全问题,但用户的账号丢失,控制权也会丢掉。一个账号下有摄像头的用户和只有空气净化器的用户账号风控等级是不一样的,所以要对账号风控进行详细分级对待,并保证用户体验。



IoT 现阶段又有了更高的安全挑战——2B。曾经我们认为设备安全做好之后,物理接触是个可接受的范围内。但有了2B场景,这条安全边界被打破了。比如说酒店里面用一个智能音箱去控制所有的设备,如果说入住的客人往里面写入一个后门固件,那这个房间的隐私就得不到保障。还有像共享汽车,如果说把后门写进去,有可能会造成车祸。


所以说第一它要防拆,不一定保证设备的完好,但是拆了之后要知道。还有就是要有一定的自我感知的能力,如果设备被人动过手脚,不管成功没成功都需要有一定的感知能力,这样的话可以知情并进行检查。甚至说做成类似于以前PC时代的还原卡的方式,它具有一定的还原能力,发生故障、发生一些不可预期的情况的情况下,能够把一些程序进行还原。


那么问题又来了,做好了这些就足够保障IoT的安全了吗?这些我们只做到了产品层,或者说我们自己可控的方面,但现在IoT行业是一个产业链。比如说我们任何一款产品都会有很多很多的元器件,来自于世界各地,这每一个元器件里面,它是不是足够安全,这些模组里面自带的代码、自带的SDK是否足够安全。一旦这些元器件、模组或者芯片有问题,后期修复的成本是很高的,运气好的一些可能能够通过代码贡献分析的方式,有些可能还只能通过硬件迭代的方式才能够去修复。


所以,我们对引入的第三方的代码、核心的元器件,在使用之前一定要对它本身攻击面、本身的安全性进行比较深入的评估,以及说可能会引入第三方的云服务、CDN等等。我们是不是足够信任,如果说不是足够信任,那么我们就完全不信任它,就是把它作为一个通路,通过它的数据都进行加密与校验,存储在云服务商的数据,这个磁盘本身也需要加密。设备最后一定要进入售卖环节,要通过电商去售卖,电商要把产品卖给用户,肯定需要用户的收货地址,用户的手机号,才能够把产品送给用户,存储在仓储、物流、经销商这个阶段里面,他们是否可行?


信息的泄露往往并非企业自身问题所致,而是整条行业链中的诸多环节相互协调出现纰漏,但不论哪个环节出现问题,都会给用户造成严重的经济损失风险。所以小米最近搞了一个叫做隐私号码的东西,隐私号码大家应该不陌生,因为滴滴早就用了,比如说滴滴打车的时候,跟司机联系的时候,那个号码其实是一个中间的隐私号码。这个过程比较简单,就是下单的时候给他分配一个临时的手机号,这个手机号码是在商场、仓储、物流、快递看到的号码,在这个快递结束之后它就无效了。即使出现不可控的信息泄露风险,最终骗子也难以对应到实际的用户实施诈骗攻击。


再说说隐私问题,产品经理都有各种各样的需求,希望获取用户更多的信息,为什么呢?因为只有更了解客户,才能做更多的产品。面对这样的业务需求,我们怎么样去保护用户隐私?首先我们回归初心,把自己当成用户去看,这个信息是否必要,用户如果知道了,他是否高兴。如果你是用户,你还会这么做吗?其次小米内部成立了安全与隐私委员会,涉及用户隐私的产品都要经过委员会的评估,全部表决通过才可以。最后今年GDPR开始实施,我们花了十个月的时间,600多人参与按照GDPR的要求对产品进行评估。


再来讲一些更常见的问题,我们手机上很多APP打开之后它会提示我要取你的IMEI。一些敏感的用户会点击拒绝,但很多应用如果用户不给权限,它就不让你用。面对这样一个两难的选择怎么办?可能有些用户没办法,只能允许了。所以基于这个头疼的问题,我们在手机上做了一个叫做隐私模式的东西。开启隐私模式之后,即使用户授权应用获取IMEI,那它拿到的也是一个假的号码,这样就避免了那些应用要求用户必须授权,用户又不想授权,就没法用这个应用。这个已经在MIUI系统的体验版上上线了。


去年我们发布了一个智能生活的安全守护计划,最高奖金上限是50万元。但如果大大小小的设备,有的复杂有的简单,如果全部都按照50万去,好像也不是很合理。所以,我特地去申请把这个奖励的额度上限提高到了100万,也希望大家去帮助我们共同来做更多的安全测试。


也是去年这个会上,雷总提出“把朋友搞的多多的,把敌人搞的少少的”,其实我们做安全也是这样的。安全是一个生态,需要每个人共同去维护,需要产业链的上上下下各个环节一起去打造,不是说某一家企业能够独自去完成的。很多用户最初是报着挑剔的目光去看,这样很好,我们会多聆听用户的声音,让大家加入一起把控产品安全质量环节,哪里有问题,我们就积极的改善哪里,最终为所有人打磨出完美的产品。


PPT下载链接:https://cnbj1.fds.api.xiaomi.com/src/xiaomi-IoT-security-conference/27%E6%97%A5IoT%E5%AE%89%E5%85%A8%E6%80%9D%E8%80%83%E4%B8%8E%E5%AE%9E%E8%B7%B5-%E9%99%88%E6%B4%8B.pdf