防护方式
本节讨论上文提到的5种防护方式的优缺点。非常明显的是SDK在防护方式上具备天然优势,因为SDK可以直接参与到产品设计种,而终端的许多问题都是设计缺陷导致,SDK能从根源上解决一部分问题。其次为可信系统,可信系统可以被认为是基于SDK实现的一套可信机制,这一套机制包含了认证、加密等能力,从软件上保护关键资产。可信系统的缺陷是没有对可信根做读保护,安全存储、PUF(PhysicalUnclonableFunction)等安全能力可以参与到可信根的保护中,进而保证可信根的安全性。安全芯片可以保证关键资产不会被人从芯片中获取,但是主芯片和安全芯片之间的通信过程可以通过逻辑分析仪读取,所以安全芯片应用的终端应是不会被轻易获取分析的,才能保证关键资产的安全,如手机、车载终端等。安全探针则可以配合安全厂商对物联网终端做安全分析,如异常检测和处理,这一点在下一节中会详细说明。安全设备,如安全网关则适用于企业内网等环境,使用受限。下面,我们详细介绍每个防护方式。
1.部署安全设备部署安全网关是一个思路,如前文提到的网络信息保护和安全维护,通过部署安全网关,可以把物联网设备隐藏在内网,实现对设备的网络侧的保护。安全网关利用协议转换、风险检测、行为分析等分析物联网设备的行为。部署安全设备的缺点是不能保证物联网设备的本地数据的安全。显然,本地的安全主要是信息的安全存储,该功能需保证数据的完整性、保密性,对这部分的数据的保护,需要结合MCU(McrocontrollerUnit)、MPU(MicroprocessingUnit)本身的安全能力来做。例如部署物联网设备认证网关,所有的设备连入认证网关,利用网关把物联网设备隐藏起来,设备的网络安全,设备与云端的交互则通过网关和云端的数据交互保证,这个安全网关可以是定制的安全路由器,之所以说是定制,是因为如果网关负责转发数据和多协议的适配。部署认证网关有以下挑战:内网数据采集,部署位置和设备的距离、设备数量之间的冲突。由于物联网设备数量大,部署距离不定,一旦到城域网、广域网的部署模式下,安全设备也就没有优势。尽管部署IDS也能做到物联网设备的攻击行为检测,前提是IDS规则能适配到相应的物联网设备遭受不同攻击的场景。由于大部分物联网设备本身的价值小,数量多,部署距离不定,这种花费较大成本却无法得到很好的防护效果的方式显然是不可取的。
2.应用安全芯片安全芯片一般会被应用在计算机、公交卡、USBKey这类设备,而且应用安全芯片的这类设备,从实际应用看,破解起来均有很大难度,所以,在物联网场景中,在设备中内置安全芯片看上去是另一种选择。安全芯片内部一般会集成MCU的功能。目前来看,安全芯片的应用方式有两种,一种是作为MCU外部设备来应用,就像是给MCU装上了一个安全应用,安全应用里面的数据很难被非法获取或者非法篡改,另一种则是替代MCU,既实现MCU的功能,又实现安全能力。第一种带来的是成本上的增加和芯片间通信带来的风险。假如攻击者可以获取到主控器和安全芯片之间的连接数据,或者可以在主控器和安全芯片之间建立连接,则安全芯片的功能也就失效了。第二种应用模式将成为一种趋势,因为这样能把代码、数据非常可靠地保证起来。因此,很多安全芯片的安全能力正逐渐被MCU、MPU、Flash芯片厂商加入到自身产品中,如读保护,OTP、安全存储功能等,但是由于存储量的限制,安全芯片对协议等代码的支持依旧有限。应用安全芯片有以下限制:
.应用的设备需有人管理,这个人可以是买了一个带有安全芯片功能的扫地机器人的消费者,而对于大量的户外的物联网设备,如果没人维护,被人非法获取后,依然会存在安全风险。
4.成本较高[59]。TPM芯片的进口有政策限制[60],国产的安全芯片成本很高。
5.存储量的限制。大部分安全芯片并不够存储IP协议栈的代码。
6.代替MCU的部署场景,只适用于单片机类的产品,导致应用领域受限。所以,部署安全芯片在物联网设备上,尚不成熟。
7.安全探针安全探针作为一个应用程序,在最高权限下可以控制网络连接和进程,适用于有嵌入式Linux等较大的操作系统的设备。一方面,探针可以采集数据到云端,供云端进行安全分析,以判断终端的安全状态,甚至给出健康分值;另一方面,探针还可以接受云端的安全策略,对终端应用安全策略,以断开恶意网络连接并杀死恶意进程。安全探针需要结合云端的安全分析能力,否则只有一个探针将毫无意义。云端的安全能力又需要专业的物联网安全专家指导,否则安全探针的功能就无法明确。所以,安全探针适合安全厂商来做,并提供配套的安全分析服务,以保证终端的安全与预警。SDK作为软件开发包,可以直接参与到产品研发阶段,能从根本上解决一定的安全问题。在产品的设计研发阶段,有芯片厂商、OEM厂商的参与并提供SDK,所以,基于芯片的安全能力和OEM厂商提供的中间件,完全可以从底层开始对物联网终端做安全防护。芯片上可以设置保护区域和可信区域,固件上可以做好代码检查以及关键资产保护,应用层还可以做流量的认证和加密、安全升级,甚至基于SDK实现一个简单的探针。SDK的应用不限于设备类型,从简单的插座到复杂的摄像头均可以基于SDK做安全方案。
8.应用可信技术简单地说,TEE是利用OTP/Fuse等一次性写入存储区域的数据作为可信根,做内存虚拟化实现安全域和非安全域的一种机制后,在安全域实现一些更复杂的诸如安全存储、代码校验等能力的安全机制,其架构如图5.4所示。利用TEE技术在物联网终端上将数据持久地安全存储,实际上并不能真正的实现%的不可读,因为其根本上还是软件、代码,只要被读出来就有风险,但是却能提高逆向分析终端的难度。而实际上,随着智能手机应用TEE技术,终端自身的安全问题的确少了许多,但是随着攻击者攻击手段和知识水平的提高,仅仅用TEE做安全存储并不是长久之计。还需要结合比如NXP的KinetisSecurityandFlashProtectionFeatures[61],或者ST公司的RDP(ReaDoutProtection)[62]的思路,把密钥写入到一个真正只有拆解芯片来拍照逆向才能读取的一块区域中,这样才能达到芯片级别的防护。而物联网环境下,达到芯片级别的防护,其破解成本已经足够强,而且能很好的应对前两种攻击手段,因为密钥并不在外部的flash中,在开启读保护的前提下,攻击者只能读内存或者拆芯片来获取密钥。而厂家只需要保证自身产品的升级流程是安全的即可,因为升级过程可以重新刷写芯片内部flash区域,如果攻击者利用了升级漏洞,会把读保护标志位置为可读。TEE是可信执行环境,在应对敏感数据持久化存储方面尽管不是目前最好的解决办法,但是自身的安全机制已经提高了破解条件。结合其他技术,物联网终端一定可以比较完美地保护起来。因为TEE机制导致的性能损失,可以经过测试后[6],根据自身产品现状决定需不需要采用TEE这样一套机制,或者决定需不需要优化TEE的性能。图5.4TEE软件结构
终端异常检测和处置
前文介绍了终端侧需要保护的信息,以及保护方式和形式。除了终端侧的加固要完备,云端针对终端的分析,也需要确保终端运行时是否存在异常。接下来,我们将介绍云端分析所需的一些重要功能点,如信息采集、策略接受与处理等。
信息采集
终端侧为配合云端做异常检测,需要上传信息到云端,使云端有准确的数据可分析。我们列出了终端运行过程中需要采集的6类数据,以供参考:终端请求解析的域名、建立的网络连接、启动的进程信息、文件系统变化、流量信息、系统日志。前两项数据可以确定终端连接了哪些域名下的服务,进而连接了哪些IP和端口。在简单的物联网终端中,这些域名、IP会比较固定,一旦出现新的连接,也很容易发现是一个陌生的连接,云端可以根据黑白名单策略即可分析出异常。如图5.5所示。图5.5DNS信息以及网络连接信息中间两项数据可以确定终端的哪个进程发起了异常连接,一旦物联网终端内被植入了恶意程序,则文件系统内的文件内容必然会做更改,此时文件监控可以定位到恶意文件。进程监控信息则能监控到恶意软件的启动时间、启动参数等。一旦被恶意软件入侵,终端需要将异常的二进制程序发到云端,云端做威胁分析,进而推断异常来源。如图5.6所示。图5.6文件系统监控信息以及进程信息最后两项数据可以辅助推断异常二进制程序的来源。如攻击者通过SSH登录时,NetFlow可以监控到SSH协议的流量信息,系统日志可以监控到用户登录信息等,进而确定终端被攻破入口。分别如图5.7和图5.8所示。图5.7系统登陆日志(SSH等)图5.8NetFlow信息其中,前四项数据必须不断上传,后两项数据可以根据基于前四项数据后的结果,再看是否需要后面两个数据的支持。所以,在图5.2中标识为动态上传。
海量终端的数据上传到云平台以后,云平台对数据的处理和分析也是一大挑战。其难度主要在于终端的数量和种类繁多。由于物联网终端的复杂性远小于个人电脑,所以云端的挑战是小于杀毒软件产品的云端分析的,所以云端面临的数据压力比较小,在分布式环境部署方面,现有的方案很多都可以满足。但是,选择合适的传输协议并合理分类终端与数据类型是一个非常重要的工作。根据我们对物联网终端的认识,按照厂商、设备类别、设备系列、设备型号、设备ID的逐层分类的方式比较合理,而且这不是一个挑战。因为安全侧需要的数据明确且小量,所以并不会给终端自身带来计算和带宽上的压力。数据上传到云端或者边缘侧的服务端以后,服务端对每个终端的安全性建立安全模型,从进程行为、网络行为这两个方面做更加细致的分析,具体流程如下:
9.厂商上传设备正常的进程和网络行为。
10.云端接收终端侧采集上来的数据。
11.对每个终端建立安全模型。
12.分析终端的网络行为。
1.分析终端的进程行为。
14.给每个终端做健康评分。
15.对低于分、90分、80分的终端分别告警,级别依次提升。
16.向低于90分的终端发起NetFlow和日志
采集任务。
17.给低于90分的终端生成新的白名单。
18.下发名单到相应的终端中。如果终端被恶意软件入侵,信息采集频次足够强的情况下,进程启动信息和网络连接信息中一定能看到新的进程启动,新的网络连接发起。所以,下一步要解决的问题是如何把恶意程序禁止,断掉恶意连接。物联网终端的结构很简单,利用基于白名单的进程、网络的控制策略来侦测和禁止恶意程序启动并杀死已经启动的恶意程序,已经足够了。所以,终端需要具备的是基于白名单做进程、网络连接的控制能力。服务端需要具备的是数据分析能力、白名单生成能力。终端侧可以基于ps、kill等进程控制程序实现一套基于白名单的控制机制,网络侧可以基于iptables、netstat等网络控制程序实现一套基于白名单的网络控制机制。服务端可以部署分布式集群以满足大量终端的数据分析需要,分析完毕后,将异常结果转化为策略(白名单)并将其通过安全通道下发至终端,形成反馈。随着终端的计算性能逐年提升,CPU、MCU等不再局限于通信接口的完备和低功耗等基础功能,芯片制造厂商在其中加入了安全能力(如AES加密器、只读Flash等),边缘计算概念的提出,终端需要的安全分析工作甚至可以在网关、节点处直接进行,比如特斯拉电动汽车为了满足高实时性的自动驾驶,其搭载的英伟达计算单元说得上是一台超级电脑[64];米尺的Mi-Link智能网关具备LoRa网络的边缘计算能力[65]。一方面,基于物联网终端的防护思路,可以保证边缘计算终端的自身的安全性,另一方面,边缘的分析能力也能为物联网终端的安全保驾护航。
总结
本章介绍了面向终端的物联网安全防护体系,主要详细介绍了两个方面的安全防护,其一是物联网终端的信息保护,其二是物联网终端的异常分析。在终端侧必须结合读保护等安全存储功能以保证物联网终端自身的信息安全,才能避免被黑客从硬件、固件、软件或网络层面破解。然而,即便像STM2芯片有给固件加锁的RDP能力,也是存在一定的安全风险的,这些具备安全能力的MCU已经开始普及,黑客和安全研究人员对它们的