9

物联网操作系统安全性分析 | WooYun知识库

 6 years ago
source link:
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

0x00 前言


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

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

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

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


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

那么,物联网操作系统具体怎么连接互联网呢?

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

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

这两种连接方式都有现实存在的意思,直连的一般都是大型家电设备,因为节点量比较少,互联网可以通过物联网协议直接控制,wifi模块信号强。但是像插座、灯泡这种小的终端设备还是连接到IoT gateway网关中转后再连接互联网。

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

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

很显然,如果要研究物联网通讯协议,就必须了解做为展示和输入输出设备的手机端物联网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. 云端处理好多租户问题,尽量做到操作系统层面、数据层面的隔离。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK