文| 谷歌IoT开发技术专家 (GDE) 王玉成 (York Wang)
Google IO 2017圆满结束了。这次大会上,聊到了Android生态系统的一系列变化,聊到了人工智能,聊到了增强现实,聊到了机器学习。Keynote中也只是简单的提到了Android Things的发布,但是Android Things相关的Session却在大会上完全铺开了。
今年的IO大会,为我们带来的Android Things相关的Session有7个,
这七个Session把Android Things的生态,系统,开发工具,硬件开发,软件开发,安全,以及云端服务,做了全方位的介绍。对比之前公开的Android Things的相关代码以及文档,这次又提出了一些新的视角。我们一起来看看Android Things的安全,以及Cloud IoT Core这两个亮点。
关于物联网的安全,是一个不容忽视,长期探讨的话题。那么Android Things又给我们带来安全相关的哪些视角呢?
从安全角度来讲,我们也需要对以下类型的攻击加以防备:
那么,Google从安全的角度来考虑,最好的策略是,增加攻击的成本,减少攻击的回报,减少安全防护的成本。
对于Android Things来说,安全防护,主要是来源于Android Things的系统防护,Google已经为我们考虑到了。
OS Hardening
我们应该还记得,Android系统安全性做了大量的工作。现在,这些安全措施完全平滑迁移到Android Things上了。这些措施集中在Kernel与Framework层
从操作系统层面来讲,Android Things已经为我们做了大量的工作了,那么开发者只需要申请各种权限即可。相当方便了。
这儿需要补充一下,Android Things相对于Android,更多的集中操作各种外设,总线。
做过linux bsp的人都知道,开发driver会直接影响到系统的稳定性。特别对于中断,同步,异步,锁等特性使用不当,会造成系统的不稳定性。那么,Android Things给开发者的外设接口,也极大的简化了操作系统层面的问题。只需要实现外设的基本功能即可。
OS Update
从之前的资料中,我们知道Android Things的升级完全由Google完成的。那么,在系统升级这一部分,Google又做了哪些安全措施呢?
我们先来还原一下Android Things升级的内容,
升级包括两个部分,一部分是用户开发的App,一部分是Google的OS,然后这两部分内容,都需要根据需求,完成升级。
对于系统的升级,会采用AB升级的模式,也就是把当前的系统做一个备份,如果升级不成功,那么会自动回退到先着的版本。
对于App,开发者不需要主动触发升级,最新的App会自动的安装到在线的所有设备上去。但是会留给开发者做测试的时间窗口。
只有经过认证的系统,才能够正常启动。这一部分工作,是由bootloader完成的。那么问题来了,OEM厂商提供bootloader以及OS BSP的支持,Google提供Android Things的系统的升级,他们之间的认证,是怎样一个工作流程?
在产品开发之前,会为当前的产品原型准备一个密钥,这个密钥只能用于这个设备中。
正式产品的系统升级,采用AB式的升级模式,会备份之前的版本,并且旧版本和新版本有不同的key,如果是升级后,系统启动失败,会回退到老版本加以启动。如果是新版本启动成功,则把验证的key替换成新版本的key,老版本也就再也不能启动了。
Bootloader又是怎么去验证Key的呢?它用的还是Android Verified Boot(AVB)的机制。
关于AVB的详细介绍,请参考[https://android.googlesource.com/platform/external/avb/]
如果用户恶意的去更改验证的代码,最后会造成系统无法启动。没办法修复。
Google在系统的安全性上下足了功夫,也确实防备了之前提到的三类安全问题,用户只考虑开发中的问题即可。
参考去年Android Things发布的相关文章,我们还记得,当时可以用Android Things连接到云端的一些服务。现在在Google Cloud中增加了新的功能,Android Things只需要连接Cloud IoT Core,即可以完成云端的各种服务的连接。现在这部分功能处于内测阶段。我们可以先了解一下IoT Core的作用。
说到IoT Core,我们得回顾一下Google Cloud的发展:
2010年开始立足于BigQuery,从2014年开始,数据处理相关的各种服务,就慢慢登上Google Cloud,今年TPU开发完成,并且Google Cloud已经可以直接调用TPU。数据相关的各种服务,也就理所当然的用于Cloud IoT Core了。
云端数据相关的服务,一般包括数据的存储及处理。刚才我们提到的都是数据处理技术,那么,IoT与Cloud又是怎么进行数据的上传与下载的呢?
Cloud IoT Core利用MQTT协议,用于数据传输,这样可以保证节点与云端可以进行双向的数据交互。这样数据从Android Things到云端的通路完全打通。
用Device Manager来管理各个节点的工作状态,管理员可以在控制去管理一个,或者一组节点的当前运行状态,比如说关机等操作。给予管理员完全管理权限。
Cloud IoT Core提供了相当简单的设备管理操作界面。
有了这些服务的介绍,我们就能够汇总Android Things连接IoT Core的完整流程了。
整个工作流程如下:
可以前往如下链接进行申请试用 https://cloud.google.com/iot-core/
听完一些Session,我还特意跑到Android Things的展台
展台展示了一些Demo的应用。
用Android Things检测天气状况。
工作人员现场仔细讲解:
最后这一张照片,讲述的是Android Things如何用TensorFlow去识别动物。玩法是这样的,预备了两张照片,一张是猫,一张是狗。如果把猫的照片对着摄像头,然后Android Things会识别出这个动物是猫。如果照片是狗,Android Things会识别出来是狗。
结语
看完Session的技术讲解, 再看平台展示的Demo。是不是觉得Android Things会如此亲切呢?对于物联网系统的每一个环节,Google都替我们贴心的考虑到了,开发应用是如此简单。不枉今年IO之行。
Android Things的大幕在缓缓拉开。更多的期待还在未来。