嵌入式应用正在包括硬件在内的各个层次上构建安全性。不过,广泛的加密应用、标准和协议使得人们很难创建一个通用的平台。表1所示的常用加密标准和表2所示的常用加密协议只是给出了一些可选择的加密线索。
硬件可以解决许多安全性问题。例如,rabbit semiconduct公司rabbit 4000中的高级加密标准(aes)加密加速功能可以与ssl堆栈一起使用。它能加快处理过程,但它只能为于8位微控制器和另一个网络设备之间传送的数据提供安全性。它不能保证信息的正确性,或来自特定的源,只能保证从a点到b点传输的数据不会被篡改或浏览。
ssl/tls提供端点的认证和加密,但错误的配置很容易受到如中间人攻击(man-in-the-middle attack)之类的影响。由于会被不恰当的使用,所以开发人员不但需要了解怎样使用安全软件和硬件还要了解怎样不滥用或错用它们。简单的在硬件上做文章并不意味着这种方法在长期运行中也能一直管用。安全数字音乐协会(sdmi)是一个数字版权管理(drm)机构,它使用基于硬件的密钥系统实现数字水印方案。sdmi被发现是有缺陷的,并因此在互联网档案中不见踪影。它与dvd电影中使用的内容加扰系统(css)非常相似。
表1:常用加密标准。
表2:常用加密协议。
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安全引擎集成在一起,因此开发人员不必直接处