嵌入式系统安全问题解决之道
硬件可以解决许多安全性问题。例如,Rabbit Semiconduct公司Rabbit 4000中的高级加密标准(AES)加密加速功能可以与SSL堆栈一起使用。它能加快处理过程,但它只能为于8位微控制器和另一个网络设备之间传送的数据提供安全性。它不能保证信息的正确性,或来自特定的源,只能保证从A点到B点传输的数据不会被篡改或浏览。
SSL/TLS提供端点的认证和加密,但错误的配置很容易受到如中间人攻击(man-in-the-middle attack)之类的影响。由于会被不恰当的使用,所以开发人员不但需要了解怎样使用安全软件和硬件还要了解怎样不滥用或错用它们。简单的在硬件上做文章并不意味着这种方法在长期运行中也能一直管用。安全数字音乐协会(SDMI)是一个数字版权管理(DRM)机构,它使用基于硬件的密钥系统实现数字水印方案。SDMI被发现是有缺陷的,并因此在互联网档案中不见踪影。它与DVD电影中使用的内容加扰系统(CSS)非常相似。
|
表1:常用加密标准 |
SDMI最初是使用唯一的、不可更改的密钥。但通常情况下,这样做必须使用更多的硬件来防止篡改。对于物理安全不成问题的许多系统来说,诸如Trusted Computing Group公司的信任平台模块(TPM)这样的平台就可以为系统提供基本的安全性。
最早以独立安全芯片方式实现的许多TPM已被广泛用于IBM笔记本电脑等PC主板中。威盛科技(VIA)公司开发的Padlock版本则增加了像AES加密之类的性能。这类平台可以支持许多操作系统特性,比如Vista的加密文件系统BitLocker。
Zilog公司开发的基于32位ARM922T的Zatara微控制器集成了保证微控制器安全所要求的大部分功能,包括安全启动ROM和篡改检测支持(图1)。更值得一提的是它带有40kB的安全RAM,如果篡改检测电路受到攻击,这部分RAM将归零。
|
图1:Zilog公司的32位Zatara安全事务微控制器采用了ARM922内核,与安全有关的特性包括安全启动ROM和电池支撑的SRAM。 |
篡改检测早已有之。但它变得越来越普遍,并在向食物链上游的更大处理器转移。大多数64位处理器配备了外部硬件电路来解决这个问题,就像附加了一个TPM一样。诚然,从里到外保证系统的安全对整个安全系统来说至关重要。
当然,极端安全的系统只有在某些特殊环境下才有要求,例如控制核反应堆或管理大量汇款。在这些情况下,为控制微处理器而增加成本和复杂性不是问题。
软件端的安全性
不管从哪里开始,软件对系统安全性都至关重要。显然,一开始就运行安全代码是一个最好用硬件方案解决的问题。但一旦运行,系统就需要额外的安全软件来管理系统安全性。
General Software公司推出的带StrongFrame的嵌入式BIOS是解决系统基础软件问题的一种方法。它的启动安全程序(BSA)是一种固件应用程序,能在硬件和应用程序之间建立信任关系。它设计用于防止由于BIOS、操作系统或应用程序进行的未授权篡改而变得不再安全的系统操作。它使用数字签名跟踪受信任的对象。20kB模块可以在ROM中压缩50%。系统可以使用Firmbase Technology公司的信任运算库(TCB)进行扩展,而TCB支持允许定制认证和授权的插件式安全认证机制。
General Software公司的方法可用于许多标准处理器架构和操作系统,而飞思卡尔公司的Mocana设备安全框架(DSF)则主要用于飞思卡尔的处理器,如PowerQUICC系列。PowerQUICC几乎从推出伊始就有了加密引擎,因为它的使用对象包括了提供虚拟专用网(VPN)支持的路由器和网关。硬件加密功能显著提高了安全信息的吞吐量。
Mocana公司有许多软件产品,如嵌入式安全套件(ESS)。Mocana针对飞思卡尔处理器开发的设备安全框架模块可以将这个软件与PowerQUICC安全引擎集成在一起,因此开发人员不必直接处理硬件。这些模块支持SSL服务器、SSL客户端、SSH服务器、SSH客户端、IPsec/IKEv1和IKEv2以及认证管理客户端(CMC)。基于开放标准设计的系统兼容RFC,并能很好地支持多核环境。
提高安全性
将安全加速和支持合并在硬件中有它的优势,但这并不是唯一的方式。将支持功能放在微控制器外面实现通常更容易,并且可能更适合某些特殊的应用场合。
使用安全存储产品是在具有I2C接口的任何微控制器上增加基本安全支持的一种简单方法,比如使用Atmel公司的AT88SC25616C加密存储器(图2)。系统自身具有完备的安全要素,认证全部在芯片内部完成。
|
图2:Atmel的AT885C2561C有多个密码用来限制对EEPROM中区内数据的访问。在成功进行认证交换后才能访问数据。 |
通常,主微控制器上的一个应用可用作进入安全存储器的网关,而该存储器使用外部源(如用户或远端程序)提供的密钥。这样就能访问芯片内部的存储器,而这个芯片通常是另外一个密钥,可被主机用来执行其它安全功能,如认证一个下载的更新或获得对远程系统的访问权。
大多数安全存储器提供这一等级的支持。Atmel还提供具有多个密钥的更复杂的层次结构,可选择访问芯片内不同的存储区。不同的密钥可以访问重叠区域,从而允许对信息的共享式访问。
正常情况下这些芯片只存储附加的加密密码或索引,不过也能存储少量的数据。存储密钥可以使附加的加密数据被存储在芯片外面。例如,密钥可以用来解密硬盘上的数据。
Atmel的13.56MHz RFID CryptoRF采用同样的方式工作,不同的是芯片通过RFID阅读器进行访问。该芯片采用了具有双认证能力的64位加密引擎,存储容量可达64kbits。
通过将数据存放在象希捷的Momentus 5400 PDE.2这样的硬盘上这种方式可以把大量存储数据链接到微控制器(图3)。安全硬盘提供了对庞大存储数据的访问能力,但在主机和硬盘之间转移的是明码(未加密)数据。
|
图3:希捷的Momentus 5400 FDE.2可以存储大量数据,同时提供基于硬件的全盘加密(FDE)。 |
将加密引擎放在硬盘上的一大优点是它可以根据硬盘的传输速率进行调整。硬盘支持多用户和管理密码。Momentus 5400 FDE.2也兼容于信任平台模块(TPM)。
新的加密方法
DES(数据加密标准)是一种不再被经常使用的加密标准,很早以前就被许多更强大的技术所代替。同样,3DES(三重DES)已经被更具鲁棒性的AES所替代。当然,AES也不是终极标准。这正是为什么片上加密系统要不断发展以适合最新安全技术的原因。片上加速器通常支持多种加密标准。
另外一种正在部署的流行加密系统采用的是椭圆形曲线加密法(ECC)。ECC是一种公钥加密系统,基于的是有限域上椭圆曲线的代数结构。对ZigBee等无线技术来说这是一项可选功能。使用它的原因是可扩展性。不管是理论上还是实践上,ECC的扩展性都要好于最流行的加密标准AES。
尽管从推出到被大众接受往往都需要很长时间,但加密技术一直在不断创新。挑战一种新方法通常要求更新的思路。来自SecureRF的lgebraic Eraser就是一个很好的例子。它使用线性的安全协议,适用于对称(秘钥)和不对称(公钥)加密算法。
DRM不提供安全性
DRM对许多系统来说很重要,甚至是很多不安全因素的克星,但它倾向于固定链接基于硬件的安全和加密。它之所以要依赖于硬件支持,部分原因是它需要端到端的内容保护以及满足系统要求的吞吐量。例如,音频流或视频流的加密/解密必须以线速进行,否则回放质量将受到影响。
消费者要求似乎在推动DRM退出音频领域,但它在视频领域仍很重要。高带宽数字内容保护(HDCP)技术可以保护当前的一些HDTV内容,并且它已被集成进包括蓝光和HDTV驱动设备在内的HDTV源和目标设备中。幸运的是,这些器件之间传送的数据一般被认为是明码数据,因此它不涉及任何加密或保护。一般来说,只有作为端点的设备需要满足这种类型的DRM。
另一方面,保护应用程序的目标代码经常是需要的。当代码来自不安全的片外器件(如闪存芯片)时,就可能需要加密。在这种情况下,处理器必须在执行时进行数据解码。这种情况并不常见,但有多种微控制器可以完成这个功能,比如美信公司基于8051的DS5250。
另外一种方法是复用启动装载工具(boot loader)将片外代码解密到片上RAM,然后从RAM执行。当断电时解密代码会丢失。典型的替代方法是使用片上代码保护机制,它通常能防止闪存被常用的调试方法所读取。在没有附加密钥的情况下它通常会阻止对闪存进行编程。否则一个欺诈应用程序可能被装载进存储器的一小部分空间中,这段程序再将剩下的代码下载进攻击器。
多级安全
控制代码和对代码的访问通常是微控制器的存储器和系统保护系统的一部分功能。高安全性系统一般会将这个功能与安全启动及安全存储等功能结合起来形成一个安全的操作系统,如来自美国国家安全署(NSA)的安全增强型Linux(SE Linux)。今后还将扩展支持虚拟机。
除了安全启动和安全存储外,加密并不是系统安全的必要部分。相反,标准微控制器对虚拟存储器和虚拟机的支持能力足够用来实现多级安全(MLS)。系统中还可以集成更多的硬件特性,但在标准微控制器上很少见到。
开发人员需要了解这些安全因素的理由是,他们不需要额外的硬件,但软件确实对系统的起点做了某种假设,如启动过程和操作系统。无法满足这些假设的系统如果不借助于任何加密手段的话通常会降低性能。遗憾的是,这些安全因素超出了本文讨论的范围,因此不要认为只要简单地包含了硬件加密或者甚至只是包含了安全启动特性就能够提供足够安全的系统。
作者:William Wong
嵌入式/系统/软件编辑
《Electronic Design》