一. 简介

自物联网被提出至今,大量的物联网设备已经被应用于智慧出行、智能家居、智慧城市等新领域,设备的数量之庞大,类型和功能之多样,正逐渐刷新人们的认知,仅共享单车的应用就超过了千万量级3。但是,随着物联网设备的快速应用,设备也被大量的暴露在互联网上,这些设备包括网络摄像头、路由器、打印机,甚至船只5也被Shodan等网络空间搜索引擎扫描到。这些暴露在互联网上的设备,一旦被发现有漏洞,并被不法分子利用,将对国家、社会、企业、个人造成严重的损失。由绿盟科技《2018物联网安全年报》1中描述的2018年物联网七大安全事件可知,这些物联网安全问题已经对个人、公司、社会,甚至是国家产生了极大的威胁。

2019年1月,中国联通网络技术研究院在《邮电设计技术》发布了一篇名为《物联网安全体系思考与探讨》2,文章中提到物联网面临着6大挑战。这6大挑战分别是全面防护难、全程监测难、分析建模难、数据保护难、物理保障难、安全管理难。由此可见,物联网设备的防护工作面临巨大的挑战。

本文针对物联网设备的现状,探讨物联网设备安全能力的防护内容和防护形式,以尝试应对这一巨大挑战。其中,防护内容的部分主要讨论设备内部实现哪些安全能力,呈现形式部分主要讨论这些安全能力是以什么样的形式集成在设备内部,如安全SDK、安全Agent、安全芯片等。

二. 防护内容

前文中提到了“六大难”的挑战,难并不能说明解决不了,这或许证明我们对物联网设备、管端、云端的整体认知不足,或许需要我们投入更多的精力来实验、分析,以不断地了解物联网体系下的防护方法。本章我们一起探讨设备侧的防护内容。

从信息安全的角度,设备侧包含的信息可分两类,分别是本地信息和网络信息。本地信息包含硬件、固件信息、系统运行状态等;网络信息是指需要传输到网络的信息(传输到设备外的信息)。黑客在攻击物联网设备之前,必然要对特定的物联网设备做详细的功能分析、端口分析、系统分析等,以尝试发掘脆弱点,假设攻击者获取不到这些信息,他也就没有发掘漏洞的信息输入,也就很难发掘出漏洞。

基于这些思考,该防护的内容,是尝试对本地信息和网络信息做加密、认证保护,并指出已有的安全防护方法。

1、本地信息保护

1.1 本地信息内容

先对现有的物联网设备简单分类,分类依据为:固件中是否包含嵌入式Linux、VxWorks等较复杂的操作系统。带复杂操作系统的设备通常是路由器、摄像头等,与使用者的交互较丰富。不带复杂操作系统的一般是智能插座、智能门磁、智能门锁等交互性比较单一的设备。这两类设备的本地信息所含内容分别如图1和图2所示。

图 1 带复杂操作系统的设备信息图

信息可分三个域,分别为主板域、固件域、操作系统域。由外向里看,主板上会有各种元器件,能带给攻击者信息的是三类,如上图所示。

其中芯片型号有助于攻击者在互联网上查阅芯片手册,以找到获取固件的多种途径,一旦对固件防护不严谨,则很有可能被攻击者利用某一个途径将固件获取到。

硬件接口分两类,一类是数据通信接口,一类是设备调试接口。尽管这样分类有些不严谨,但是从这两类接口对攻击者的价值看,显然调试接口更具价值。因为攻击者一旦利用成功了调试接口,就可以获取到更多的信息,调试接口一般为支持DAP标准的调试接口(JTAG等)、可接入shell的UART接口、可做ADB调试的USB接口等。通信数据接口一般指不能被用于调试、提供shell交互的接口,这类接口一般有IIC、SPI、UART、RS232等等。

板内通信数据是指第二类硬件接口中传输的数据,这类数据可以用来分析设备行为,以辅助挖掘漏洞。例如攻击者可以使用逻辑分析仪接入到总线中,嗅探整个总线中的数据,进而分析设备的芯片之间的通信行为。

操作系统为大家所熟知,这个域中的数据一般指操作系统和应用程序在运行过程中的数据,例如存储在文件系统中的日志、操作系统运行时开启的端口、进程等等,考虑到读者对这部分信息熟知,在此不再赘述。

图2 不带复杂操作系统的设备信息图

主板域和图1相同,不同的是软件不一样。其原因在于其存储器的大小有所差异,本质上是该设备的处理性能和图1的设备有较大的差距,这种智能插座可以运行的固件,从固件大小、固件结构上都有所差别。具体差别在这里不做具体分析,具体可以阅读《物联网设备固件的安全性分析》6。

这类固件由两个部分组成,分别是启动代码和功能代码,启动代码的主要功能是指定功能代码的main函数口,这个过程由芯片厂商使用汇编代码实现,并在SDK中提供,安全性较强的启动代码中会会读取安全存储区域的密钥,验证固件签名等安全能力。在功能代码中,除了实现电机控制、液晶显示等基本功能外,还会使用一种或者多种通信协议,以和其他物联网设备或者云端通信。

1.2 本地信息防护方法

芯片型号

芯片型号可以不用抹去,我们假设攻击者可以看到芯片型号,而且可以在网上获取到该芯片的相关信息,如参考手册、数据手册等。攻击者获取到这些信息之后,会找到设备上的调试接口,最起码是可以通过使用调试器使自己的PC和设备之间建立正确的硬件的连接。

调试接口

硬件接口这些可以保留,但是处于安全考虑,对调试接口做访问控制的能力成为了一种需求。2018年,Ramesh Bhakthavatchalu和Nirmala Devi.M发布了一篇对JTAG接口做访问控制的文章7,然而,在现有的JTAG调试器和IC中并没有看到基于密码学对该接口做访问控制的实现案例,大部分厂商的做法反而是禁用JTAG接口。这样,即便攻击者使用调试器与设备建立了连接,也没有办法调试设备,因为设备不会响应调试器发起的信号。

固件信息

前面的防护方法,尽管可以保证固件很难被读取,但是也不能排除攻击者通过社工等手段获取了固件。如果攻击者伪造了一个固件,得就防范攻击者能正常运行伪固件。针对固件的防篡改保护,需要结合安全存储把密钥放到一个OTP(一次性烧写)或者其他安全存储区域,这样密钥写入后将无法被更改,利用该密钥做代码签名认证,可以防止代码被篡改。因为做校验的密钥是无法被更改的,在攻击者获取不到相应的私钥的前提下,即便通过一些文档或者经验,找到了前面方法,也无法伪造合法的固件签名。进一步想,读取密钥、验证签名的代码则成为整个安全的核心。可以利用芯片中对flash的读保护的功能,对这段代码做好读保护功能,使攻击者无法获取这段代码。同时还可以利用这段代码做好固件的解密,密钥存储在相同的区域即可。

近期,一些存储器的研发厂商,如Micron Technology4,在Nor Flash中集成了数据访问控制功能,对数据的访问需提供密码。

图3 MT25QL128ABB数据手册

当固件很难篡改、固件很难读取或很难被解密出明文信息时,固件中的用于安全通信的密钥也就无法读取和篡改,所以安全通信的密钥存储有了一定程度的保证,该保证是在攻击者没有对芯片做拆解、拍照、逆向的过程,由于对芯片的拆解成本太高,所以对物联网设备的防护,到这种程度已经足够强。

固件信息保护好,操作系统的信息在本地对攻击者是不可见的。而且,操作系统的安全话题近年来是个热点,各位多多少少都了解一些,笔者对操作系统知之甚少,在此就不再班门弄斧了。

2、网络信息保护

图4 Intel 的物联网通信框架(图源于网络9)

网络上的信息承载于通信协议中传输,Intel描画了一张物联网通信框架图,如上所示。对本地的信息的保护,需要对不同的本地信息分类以对不同的信息做防护。而对网络信息的防护,只需要关注通信协议即可。如果通信协议中支持认证、加密方式,只需要稍做配置即可做好通信的认证、加密。如果协议本身不支持认证和加密的配置,就需要利用密码学库,基于该协议的通信方式做双向认证的访问控制和加密的数据传输功能。

不同的网络通信模式,对访问控制的要求也有些许不同。姑且把网络协议分为点对点的模式、点对多的模式。点对点的模式比较好理解,比如HTTP、SSH等协议是点对点的协议,像MQTT等具备订阅、分发模式的是我们暂时称为点对多的协议。对点对点的协议,只要在通信双方之间做好双向认证、加密,在物联网通信场景下已经足够安全。而对点对多的协议,即便做了客户端和Broker之间的双向认证,涉及一个因信息共享导致的问题:信息泄露。以MQTT为例,MQTT的网络结构如下图所示:

图5 MQTT工作模式(图源于网络8)

MQTT以Topic作为信息的标签,订阅topic相同,则能收到MQTT Broker转发的相同的信息。如果“mobile device”是一个攻击者身份,他遍历地订阅了1000个Topic,如果这1000个Topic有10个Topic确实被物联网设备使用,则这10个Topic数据同时传输到了攻击者的手机上。所以,对Topic访问控制也是必须的,这方面可以结合ACL访问控制规则实现,此处不再赘述。

3、设备安全维护

仅仅依托信息保护,使用者或者管理者对设备依然心存忧虑。最理想的情景是:设备的信息是比较安全的,但是也需要看到设备能正常的、安全的运行状态才放心。由于同一个物联网设备的使用场景差异较大,有可能会处于异常状态,如摄像头、温湿度传感器可能会被断电,导致无法工作。而如何分析物联网设备的运行状态,增强管理者对设备的异常把控则成为一个话题。

根据笔者对设备的认识,在设备侧采集运行信息,以上报给分析服务,以实时分析设备的异常状态,是比较合适的方式。如果设备不上传必要的信息,云端只能根据通信状态来猜设备处于何种状态,对于设备内的进程、端口信息、网络连接情况一无所知,云端对设备的行为分析始终有限。

可行性上,越简单的设备采集的信息越少,设备采集的信息和存储能力是匹配的。例如插座,除了上报自身的控制信息外,还可以将一段时间内的网络连接信息上传到云端,一旦出现不可控的IP、端口,则可以认定设备处于威胁中。

4、小结

本章主要探讨了物联网设备会有哪些信息,这些信息,如果物联网设备防护不当,则有可能被攻击者收集,进而通过调试等手段挖掘到漏洞;后面探讨了这些信息的防护方式,即使用读保护功能限制固件的获取方式,将调试接口禁用限制攻击者的调试手段,再利用双向认证和加密传输等功能将传输的数据加密,以保证网络信息的安全。这样,攻击者即便买到了、拆开了设备,将设备配置到自定义的热点,截取到通过热点的流量,依旧无法获取有效的信息,也就没有进一步的信息参考来找到方法获取设备的权限。设备的信息也就得到了保护。此外,可以把设备的信息上传到分析服务中,以分析设备的行为,做好设备的风险控制。

三. 防护形式

上文谈到物联网设备的防护内容与防护方法。《五大顶级物联网安全公司的安全建设思路及产品》10一文中谈到了5家公司的防护思路,如部署安全设备到智能家居和工控领域,应用SDP到认证的场景等等,除此之外,也有许多公司提供安全芯片,以解决密钥、用户关键信息的安全存储需求。接下来进一步探讨三种物联网设备的防护形式:部署安全设备,应用安全芯片,植入安全Agent或者SDK。

1、部署安全设备

部署安全网关是一个思路,如前文提到的网络信息保护和安全维护,通过部署安全网关,可以把物联网设备隐藏在内网,实现对设备的网络侧的保护。安全网关利用协议转换、风险检测、行为分析等分析物联网设备的行为。

部署安全设备的缺点是不能保证物联网设备的本地数据的安全。显然,本地的安全主要是信息的安全存储,该功能需保证数据的完整性、保密性,对这部分的数据的保护,需要结合MCU、MPU本身的安全能力来做。

例如部署物联网设备认证网关,所有的设备连入认证网关,利用网关把物联网设备隐藏起来,设备的网络安全,设备与云端的交互则通过网关和云端的数据交互保证,这个安全网关可以是定制的安全路由器,之所以说是定制,是因为如果网关负责转发数据和多协议的适配。笔者以为,部署认证网关有以下挑战:内网数据采集,部署位置和设备的距离、设备数量之间的冲突。由于物联网设备数量大,部署距离不定,一旦到城域网、广域网的部署模式下,安全设备也就没有优势。尽管部署IDS也能做到物联网设备的攻击行为检测,前提是IDS规则能适配到相应的物联网设备遭受不同攻击的场景。

由于大部分物联网设备本身的价值小,数量多,部署距离不定,这种花费较大成本却无法得到很好的防护效果的方式显然是不可取的。

2、应用安全芯片

安全芯片一般会被应用在计算机、公交卡、USB Key这类设备,而且应用安全芯片的这类设备,从实际应用看,破解起来均有很大难度,所以,在物联网场景中,在设备中内置安全芯片看上去是另一种选择。

安全芯片内部一般会集成MCU的功能。目前来看,安全芯片的应用方式有两种,一种是作为MCU外部设备来应用,就像是给MCU装上了一个安全应用,安全应用里面的数据很难被非法获取或者非法篡改,另一种则是替代MCU,既实现MCU的功能,又实现安全能力。第一种带来的是成本上的增加和芯片间通信带来的风险。假如攻击者可以获取到主控器和安全芯片之间的连接数据,或者可以在主控器和安全芯片之间建立连接,则安全芯片的功能也就失效了。第二种应用模式将成为一种趋势,因为这样能把代码、数据非常可靠地保证起来。因此,很多安全芯片的安全能力正逐渐被MCU、MPU、Flash芯片厂商加入到自身产品中,如读保护,OTP、安全存储功能等,但是由于存储量的限制,安全芯片对协议等代码的支持依旧有限。

图6 FM15160安全芯片

笔者认为,应用安全芯片有以下限制:

1. 应用的设备需有人管理,这个人可以是买了一个带有安全芯片功能的扫地机器人的消费者,而对于大量的户外的物联网设备,如果没人维护,被人非法获取后,依然会存在安全风险。

2. 成本较高11。TPM芯片的进口有政策限制12,国产的安全芯片成本很高。

3. 存储量的限制。大部分安全芯片并不够存储IP协议栈的代码。

4. 代替MCU的部署场景,只适用于单片机类的产品,导致应用领域受限。

所以,部署安全芯片在物联网设备上,尚不成熟。而具备部分安全能力的MCU和MPU,目前是一种比较合适的方式,所以,物联网安全SDK或者Agent可以作为安全能力,基于MCU和MPU提供。

3、安全Agent和安全SDK

对于搭载嵌入式Linux操作系统的设备,安全Agent和安全SDK是相对比较合适的选择,安全SDK经过少量开发也可包装为一个Agent,安全Agent的部分功能经过拆解、接口化,也可作为安全SDK提供,所以,SDK和Agent是不同的模式,但是功能上可以达到重叠,甚至是100%的重叠。

但是,仅仅从功能上考虑是不够的,还需要考虑到这些安全功能如何集成到设备中。这一点,安全SDK具备优势。首先,安全SDK的功能本身就是模块化的,所以非常适合提供安全功能的全集,得到SDK的厂家或者开发者能根据自身产品所需自由添加、删改模块,以适配到不同的物联网设备中。

而且,以软件形式存在的SDK或者Agent,没有硬件成本的限制。

对于单片机系统的设备,本身不具备运行Agent的环境,因为该设备自身就可以被看作一个Agent,所以只能以SDK的形式赋予设备防护能力。

综上所述:安全SDK是最好的方式,安全Agent适用于带复杂操作系统的物联网设备。

四. 总结

本文探讨了物联网设备的防护内容、防护方法、防护形式。防护内容主要包含本地和网络侧的信息,也就是说,物联网设备的安全能力核心是信息保护。处于信息保护和安全维护的考虑,并提出了信息保护方法和安全维护思路。然后,本文后半段详细分析了三种防护形式,最终认为:安全Agent和安全SDK是比较合适的防护方法。

随着密码学技术逐步促进MCU、MPU、Flash芯片中的安全功能的建设,不论什么应用场景,物联网设备的安全性将逐步受到可靠的保护,笔者期待物联网设备因安全能力的升级而更新换代的一天,相信那也将是具备里程碑意义的转变。

参考资料:

[1]. 2018物联网安全年报,http://www.nsfocus.com.cn/content/details_62_2916.html

[2]. 物联网安全体系思考与探讨,http://image.c114.com.cn/file/ys201901-01.pdf

[3]. 2018年中国共享单车行业发展现状及市场格局分析涨价或将成为企业另一发展出路,https://bg.qianzhan.com/trends/detail/506/190111-e77b3ed6.html

[4]. 美光公司推出安全的NOR闪存解决方案,http://investors.micron.com/news-releases/news-release-details/micron-unveils-secure-nor-flash-memory-solution-accelerate-and

[5]. 使用SHODAN在海上查找网络摄像机,数据库,船只,http://www.kb-iot.com/post/666.html

[6]. 物联网设备固件的安全性分析,http://blog.nsfocus.net/security-analysis-of-the-firmware-of-iot/

[7]. Crypto Keys Based Secure Access Control for JTAG and Logic BIST Architecture,https://pdfs.semanticscholar.org/7959/d6721d38cc65a0ecb2f88a49e10efa31282b.pdf

[8]. API Builder and MQTT for IoT – Part 1,https://devblog.axway.com/apis/api-builder-and-mqtt-for-iot-part-1/

[9]. The Intel IoT Platform-Architecture Specification While Paper Internet of Things,http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/iot-platform-reference-architecture-paper.pdf

[10]. 五大顶级物联网安全公司的安全建设思路及产品,http://blog.nsfocus.net/iot-security-company-product-introduction/

[11]. 国家电网的“芯片计划”:国产化路漫漫需要一些勇气,http://www.csia.net.cn/Article/ ShowInfo.asp?InfoID=83811

[12]. 商用密码管理条例,http://www.jiangsu.gov.cn/xxgk/project/P0201606/ P020160616/P020160616530281719330.pdf

声明:本文来自绿盟科技研究通讯,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。