当今社会的很多商业行为,如通信、金融交易及娱乐在很大程度上依赖于互联网。随着越来越多的设备连接到物联网( IoT )中,对互联网的依赖性将不断增加。如果设备不安全,这种依赖将导致互联网存在重大的安全漏洞,并使设备遭到攻击和破坏。
目前,很多正在使用的物联网设备,根据不同的应用范围将持续使用。例如,公用事业使用的仪表几乎不会更换;通信基础设施的设计使用年限为50年;电力传输系统使用寿命在30年以上;住宅、办公室、工业建筑和其他建筑物可以每10年装修一次以便长期使用。如果这些系统不安全,在威胁增加时,它们很快会被抛弃。
为增加用户对智能设备的投资信心,保护设备免遭破坏,安全成为所有新型设备的基本要求。在未来的几年中,将有500亿个物联网设备连接到互联网,其中很大一部分是使用微控制器和资源有限的微处理器。幸运的是,与大型设备相比,这些小型设备更容易保护,不易受同类型威胁的攻击,因此更安全。但并不意味着安全很容易实现,只是如果能正确利用 MCU 和小型MPU的特性,开发安全的设备不困难而已。本文的后续部分将讨论如何保护物联网中的小型设备。
物联网安全特征
为了充分保护MCU或小型MPU,下列安全功能通常是必须的,当然,并不是每个系统都必须具备所有功能。使用标准信息技术实现安全解决方案是嵌入式MCU和MPU产品安全机制的核心。
这些安全协议包括:TLS、IPSec/VPN、SSH、SFTP、安全启动和自动回退、过滤、HTTPS、SNMPv3、安全的无线连接、加密和解密、加密文件系统、DTLS(用于UDP安全)和安全电子邮件。其中TLS、IPSec/VPN、HTTPS、安全的无线连接及DTLS意味着安全的通信连接,SFTP提供了安全的文件传输,SSH提供了安全的远程访问,而安全电子邮件提供了基于加密连接的邮件服务。支持自动回退的安全启动程序(Bootloacler)确保系统不被破坏,SNMPv3、数据加密和加密文件系统通过加密来保护本地数据或传输到其他机器的数据,过滤实际上是起到防火墙的功能,用于阻止不受欢迎的访问。各种协议将在系统安全一节之后讨论。
系统安全
只有系统中最薄弱的连接或组件都可靠时,整个系统才是安全的。为保证系统的安全,其所有的通信通道、文件传输、数据 存储 和系统更新方式都必须是安全的。在系统支持动态加载、可执行文件修改及其他复杂功能时,实现系统安全是非常困难的。
想象一下这些场景:
①入侵者通过电子邮件、FTP或其他方式将文件传入设备。
②文件动态加载运行时,会破坏其他可执行文件,然后需要清理现场并删除自己。
③如果病毒很新,系统不认识该病毒,它将获准进入,从而感染系统。
考虑另外一种情况,在不安全或者没有正确安全设计的通信连接中,有可能会读取少量的数据,还可能会在数据流中添加新的数据,并破坏正在接收数据的系统。通过互联网加载不安全的镜像文件到设备就是这种情况的一个实例。当新加载的镜像文件运行时,如果该文件可以正确访问系统,则这个不安全的镜像文件将接管整个系统。还有一种情况,设备的关键数据会被窃取。只有数据被加密或保存在安全文件系统中,才可能从设备中恢复加密的数据。
为了确保系统安全,最好的方式是考虑如何访问设备信息。通常,良好的安全系统要求:你知道的(密码),你拥有的(借记卡或可穿戴式设备)和你是谁(虹膜扫描设备)。
对小型设备来说,这些安全措施过头了。但是如果系统有非常高的安全要求,可以通过间接方式来实现,只要确保系统的各个组件都是安全的。通过与服务器的安全交互,服务器可以安全地访问设备,安全设备 接口 可以运行在大型设备上,也可以用于小型设备。
安全系统的另一个关键要素是分层安全,假设一些人只需要访问系统的一部分,好的设计原则采用分层安全机制。这种情况下,如果没有重要的工作,入侵者仅能访问一部分系统。一个实例是使用两个防火墙级联来保护服务器,这样,一个防火墙的漏洞可以被第二个防火墙隔离。
图1是提供了安全功能的软件概述。后面将针对前面列出的场景,讨论如何使用这些软件来保护系统。
通信安全
通信安全协议确保机器到机器间的通信安全,有一个可以依赖的信任等级,以建立安全通信。
TLS及其前身SSL是为TCP套接字流和需按顺序交付的流连接提供通信安全最常用的方式。DTLS是一个新协议,提供可靠的UDP传输和基于TLS的数据包传输,TLS和DTLS协议是面向应用到应用间的通信。
IPSec或虚拟专用网络(VPN)在TCP协议栈的基础上使用虚拟链路安全技术,设置比较困难,但它允许应用通过链路通信,即使应用没有提供安全保护。通常情况下,由于设置困难,并且很多人认为NSA(国家安全局)参与开发的算法不安全,导致它没有被广泛使用。
HTTPS是建立在TLS上的安全网络服务器访问协议,它提供了安全的应用访问,通过与SSH相同的方式,为远程用户提供安全的模拟终端访问。
安全的无线连接确保无线信息不会被收集,数据不会被其他人通过天线获取。
安全电子邮件用于确保数据不会通过电子邮件直接传输。一种方式是在邮件发送之前加密数据,另一种更简单更通用的方案是在加密连接中提供邮件服务,以确保管理邮件的服务器接收的所有邮件数据都是安全的。
基于SNMPv3的安全文件传输
使用加密和解密程序保护数据时,SNMPv3用于加密数据。如果所有的数据都很重要,可以使用文件加密,尽管文件加密方式会降低性能。
过滤和防火墙
防火墙通过过滤网络服务器发送的所有数据包,拒绝未授权的访问。通过过滤,设计者可以确保只有真正的用户才能访问系统,阻止非法访问,以保证系统安全。这些过滤规则需要在设备上配置,过滤功能通常需要结合SSH或SNMPv3使用。
安全启动
安全启动是安全系统的重要组成部分(图2),支持固件更新并通过安全的方式实现更新非常重要。固件更新可以删除所有工厂固件,并通过自动回退(fall back)机制增强该功能。通过自动回退,如果新的固件(可能损坏)导致启动失败,可以使用旧的安全版本重新启动系统,这是分层安全机制的部分功能。
通过解释器或其他方式加载的程序运行时,可能破坏系统。Unison的操作系统在底层提供了额外的安全启动功能来保护系统,该功能使得系统很难被攻击。
系统安全的考虑
MCU或资源有限的MPU如果需要应用很多协议来实现安全目的,一个参考实例是Unison的操作系统,它是一个小型的POSIX实时操作系统,以非常小的代码尺寸提供了安全功能。
Unison系统使用了安全通信协议,目标设备的所有应用都是安全的。这些应用包括手机应用、面向小型网络服务器的安全Web访问等。类似缓冲区溢出之类的攻击是不可能出现的,因为Unison系统在运行时占用很少的资源,禁止任何不合理的资源占用,还可以使用安全无线连接,但要使用VPN。
可以使用SFTP将文件传输到系统,该机制保证数据在传输时不被破坏,对安全系统更新非常重要。在TCP服务器前端增加过滤处理,可以确保只处理授权的请求和更新,防止设备被入侵,极大提高了安全性。此外,还可以使用终端通过SSH协议远程配置设备,与使用网络服务器相比,使用脚本的方法更可靠,这种配置方式确保了配置设备也是安全的。此时,设备接收和发送的数据是安全的,任何更改或配置是可靠的,授权的应用和用户可以使用设备的数据和功能。
如果设备被偷了,怎么办?为了防止这种情况发生,可以加密设备存储的数据,不使用本地数据而使用加密文件系统,这将确保设备的关键数据是安全的。如果用户的设备有密码,通常这被认为是合适的安全措施,还可以使用其他安全措施,如增加 指纹 扫描、虹膜扫描、掌纹和其他功能给设备或将其连接到安全工作站,以增加设备的可靠性。
前面列出的安全场景,除了程序执行时,可能破坏系统安全的情况都考虑过了。对MCU或一些MPU来说,程序是一个运行在Flash中的单个映像文件,在这种情况下,由于整个映像在Flash中运行,并且如果启动机制和刷新机制是安全的,不可能添加任何东西到系统中,因此入侵者不能加入新的代码。在使用Unison时,该功能是可以实现的,因此Uni son使整个系统非常安全。
但如果系统中有解释器,Unison不能保证整个系统是安全的。解释程序可以在MCU或MPU上自由运行,不受限制地更改系统映像,除非建立了安全机制,例如使用了内存管理单元(MMU)。
结语
通过使用标准IT安全协议、安全启动及限制解释器,可以完全保护MCU和小的MPU系统。安全不应该事后考虑或位于操作系统之上,而应该集成到系统中,作为一个功能单元 测试 ,以实现真正的系统安全。
责任编辑:ct