物联网操做系统安全性分析

物联网操做系统安全性分析

 

0x00 前言


物联网目前是继移动互联网以后的又一个将来IT发展的蓝海。智能设备的不断涌现已经在不知不觉中占领咱们的生活,颠覆咱们的原有的思惟模式,记得前几年我还带着一块天梭的机械手表,近段时间地铁好多人都佩戴iWatch等智能手表。还有智能手环、智能灯等在不断的改变咱们的生活方式。那么这些智能设备具体的IT架构是什么?他们的安全性设计如何?对于信息安全工做者,有必要研究一下。git

物联网操做系统,其实和传统的windows操做系统大同小异,可是通过一段时间的调研,才发现它不光由本地物联网设备上的操做系统组成,还包括提供物联网终端设备支持的云端架构。因此,咱们的安全研究范围锁定在如下3个方面:github

  1. IoT终端和云端通信协议的安全
  2. 物联网终端安全
  3. 云端IT架构的安全性

0x01 物联网云协议安全性分析


针对于智能家居等物联网设备,接入到互联网进行数据交换,安全风险性就很是大,若是处理很差,可能就会像黑客电影中桥段:经过网络把你家的智能门锁打开。web

那么,物联网操做系统具体怎么链接互联网呢?windows

其中物联网终端(例如:灯泡)有两种链接方式,安全

  1. 链接IoT gateway网关,再经过IoT gateway网关 链接家里的wifi路由器上网。
  2. 物联网设备直接经过本身的wifi模块(或者直接集成GPRS/3G/4G链接模块)链接家中路由器上网。

这两种链接方式都有现实存在的意思,直连的通常都是大型家电设备,由于节点量比较少,互联网能够经过物联网协议直接控制,wifi模块信号强。可是像插座、灯泡这种小的终端设备仍是链接到IoT gateway网关中转后再链接互联网。服务器

那么物联网协议都有哪些呢?网络

那么,从商业模式上分析,大公司通常是经过移动端(手机开发SDK)、云端(创建开源物联网云平台)、设备端(物联网链接硬件和软件SDK)、而后使开发者经过众筹方式,开发硬件,可是传递到云端的数据归物联网公司平台拥有。最后经过本身的电商销售渠道卖给用户。经过上述流程物联网生态系统,拥有物联网大数据,在资本市场上大捞一笔。session

很显然,若是要研究物联网通信协议,就必须了解作为展现和输入输出设备的手机端物联网SDK调用,物联网设备端硬件支持的协议SDK、以及云端对以上各类协议支持的具体体现。架构

国外市面上有不少开源的协议。函数

  • AllSeen Alliance AllJoyn
  • 开放互联网联盟 Open Interconnect Iotivity

国内在这些开源协议之上有创建了一层物联网操做系统。

  • 技术型的华为LiteOS,重点在嵌入式物联网设备。(伪开源,到目前为止github上没看到上传的源码)
  • 业务型的京东智能云,重点是经过众筹吸引硬件开发团队合做。经过本身互联网商城销售。
  • 固然还有一些创新型公司

那么,咱们先分析一下其相关的SDK,是怎么处理数据的:

(一)物联网终端设计

安全层能够看出通常在协MQTT等议栈中实现,若是协议栈中没有实现,那只能在Application SDK API中实现。

在终端实现其安全特性还有几个问题要考虑:

  1. 物联网终端的内存和硬盘都颇有限。
  2. 物联网终端电源有限,不少安全设计,例如:心跳检测时间不能太近等。

通常和云通信会有Cloud key 和本身设备自己的private key。经过SSL隧道交换秘钥。

和云端通信函数。

同时,查看了iOS手机端控制部分,因为是部分开源,dot m实现函数已经屏蔽,没法了解其内部逻辑。

小结:因为某云厂商相应的硬件端源码开发不彻底,只能看到这些,同时、强烈鄙视这种伪开源的行为。

能够看出使用非对称秘钥加密传输数据到云端。同时,发现设置开发测试模式和生产环境的云端链接域名。固然,证书验证等没看到。

(二)物联网云端设计

云端设计、通常要有几个模块要考虑:

  1. 帐号处理模块:主要是和用户互交。
  2. 设备管理模块:绑定用户和设备的关系。
  3. OTA模块:升级固件功能
  4. 定时执行模块:按期执行相关任务
  5. 大数据分析模块:这个要看具体的应用了,好比说:全国路由器信号排行榜,以及你战胜了多少人的路由器。等

固然,还有不少功能,就不一一讲解。先举例说明一下OTA模块

No.1 OTA(Over The Air) 服务 推送文件到设备端。

  • @param $deviceId 整数,是要被升级的设备的逻辑ID。
  • @param $toVersion 字符串,表示升级的目标版本号,如:2-0-3。
  • @param $OTAHash字符串, 验证逻辑固件。

文件存储服务。向BlobStore服务上传文件。

  • @param $bucket 给定的类别名字。
  • @param $filePath 要被上传的文件的本地路径。
  • @param $name 能够指定文件被上传后在服务器端的存储名字。若是未指定,则使用从$filePath在提取到的文件名。

提供存储服务是为了进行固件升级。同时,物联网硬件开发商能够在本身的私有云中上传固件,而后存储到物联网云平台,更新给联网的物联网终端设备。

No.2 设备管理模块:这里面设计一个带时间限制分享码(其实就是web服务中的session的意思)

设计设备的管理员用户获取设备的分享码。

  • @param $deviceId 要操做的对象的逻辑ID。整数。
  • @param $user ACUser对象,表示该设备的管理员用户。
  • @param $timeout 生成的分享码的有效时长。以秒为单位。

小结:云端对多租户的设计,主要体如今不一样DNS域名隔离不一样的企业物联网应用。服务器端么法发现使用HTTPS的通信协议,难道是云服务商为了节省成本?设备分享码的设计确实很前卫。

0x02 物联网操做系统安全建议


目前,物联网还在发展之中,把通信协议直接裸奔在固件上也无可厚非。可是仍是有几条提醒各位物联网玩家。

  1. 当物联网设备无网络链接时、云端马上通知。
  2. OTA升级、出现重大安全漏洞要厂商直接推送更新固件。
  3. 设置强密码Policy 要求12位以上,同时使用数字、特殊符号和字母的组合。若是条件容许尽可能使用双因素方式认证(Two-factor authentication)
  4. 使用SSL/TLS链接云端传输数据(HTTPS+ AES 128bit encryption),尽可能不要在物联网终端设备上存储数据,以避免被黑。若是必须在本地存储请加密,同时加密备份到云端一份。若是再安全一点可使用TPM处理,把秘钥存储到相似U盘的设备当中作认证。
  5. 若是使用SSL,检查两端(服务器和客户端)的证书,不容许使用自签名证书。
  6. 云端处理好多租户问题,尽可能作到操做系统层面、数据层面的隔离。
相关文章
相关标签/搜索