物联网目前是继移动互联网之后的又一个未来IT发展的蓝海。智能设备的不断涌现已经在不知不觉中占领我们的生活,颠覆我们的原有的思维模式,记得前几年我还带着一块天梭的机械手表,近段时间地铁好多人都佩戴iWatch等智能手表。还有智能手环、智能灯等在不断的改变我们的生活方式。那么这些智能设备具体的IT架构是什么?他们的安全性设计如何?对于信息安全工作者,有必要研究一下。
物联网操作系统,其实和传统的windows操作系统大同小异,但是经过一段时间的调研,才发现它不光由本地物联网设备上的操作系统组成,还包括提供物联网终端设备支持的云端架构。所以,我们的安全研究范围锁定在以下3个方面:
针对于智能家居等物联网设备,接入到互联网进行数据交换,安全风险性就非常大,如果处理不好,可能就会像黑客电影中桥段:通过网络把你家的智能门锁打开。
那么,物联网操作系统具体怎么连接互联网呢?
其中物联网终端(例如:灯泡)有两种连接方式,
这两种连接方式都有现实存在的意思,直连的一般都是大型家电设备,因为节点量比较少,互联网可以通过物联网协议直接控制,wifi模块信号强。但是像插座、灯泡这种小的终端设备还是连接到IoT gateway网关中转后再连接互联网。
那么物联网协议都有哪些呢?
那么,从商业模式上分析,大公司一般是通过移动端(手机开发SDK)、云端(建立开源物联网云平台)、设备端(物联网连接硬件和软件SDK)、然后使开发者通过众筹方式,开发硬件,但是传递到云端的数据归物联网公司平台拥有。最后通过自己的电商销售渠道卖给用户。通过上述流程物联网生态系统,拥有物联网大数据,在资本市场上大捞一笔。
很显然,如果要研究物联网通讯协议,就必须了解做为展示和输入输出设备的手机端物联网SDK调用,物联网设备端硬件支持的协议SDK、以及云端对以上各种协议支持的具体体现。
国外市面上有很多开源的协议。
国内在这些开源协议之上有建立了一层物联网操作系统。
那么,我们先分析一下其相关的SDK,是怎么处理数据的:
安全层可以看出一般在协MQTT等议栈中实现,如果协议栈中没有实现,那只能在Application SDK API中实现。
在终端实现其安全特性还有几个问题要考虑:
一般和云通讯会有Cloud key 和自己设备本身的private key。通过SSL隧道交换秘钥。
和云端通讯函数。
同时,查看了iOS手机端控制部分,由于是部分开源,dot m实现函数已经屏蔽,无法了解其内部逻辑。
小结:由于某云厂商相应的硬件端源码开发不完全,只能看到这些,同时、强烈鄙视这种伪开源的行为。
可以看出使用非对称秘钥加密传输数据到云端。同时,发现设置开发测试模式和生产环境的云端连接域名。当然,证书验证等没看到。
云端设计、一般要有几个模块要考虑:
当然,还有很多功能,就不一一讲解。先举例说明一下OTA模块
文件存储服务。向BlobStore服务上传文件。
提供存储服务是为了进行固件升级。同时,物联网硬件开发商可以在自己的私有云中上传固件,然后存储到物联网云平台,更新给联网的物联网终端设备。
设计设备的管理员用户获取设备的分享码。
小结:云端对多租户的设计,主要体现在不同DNS域名隔离不同的企业物联网应用。服务器端么法发现使用HTTPS的通讯协议,难道是云服务商为了节省成本?设备分享码的设计确实很前卫。
目前,物联网还在发展之中,把通讯协议直接裸奔在固件上也无可厚非。但是还是有几条提醒各位物联网玩家。