近来,嵌入式应用正在包括硬件在内的各个层次上构建安全性。不过,广泛的加密应用、标准和协议使得人们很难创建一个通用的平台。表1所示的常用加密标准和表2所示的常用加密协议只是给出了一些可选择的加密线索。嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能,对可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统本身是一个相对模糊的定义。目前嵌入式系统已经渗透到我们生活中的每个角落,工业、服务业、消费电子……,而恰恰由于这种范围的扩大,使得“嵌入式系统”更加难于明确定义。
根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
如为了加快处理过程可以将Rabbit 4000的加密加速功能可以与SSL堆在一起使用,但它只能为于8位微控制器和另一个网络设备之间传送的数据提供安全性。这样,硬件也可以提供一些安全保障。不过它不能保证信息的正确性,或来自特定的源,只能保证从A点到B点传输的数据不会被篡改或浏览。
虽然SSL/TLS提供端点的认证和加密,但错误的配置很容易受到如中间人攻击(man-in-the-middle attack)之类的影响。由于会被不恰当的使用,所以开发人员在了解怎样使安全使用的同时还要了解怎样不滥用它们。安全数字音乐协会(SDMI)呵用基于硬件的密钥系统实现数字水印方案,虽是一个数字版权管理(DRM)机构,但是被发现是有缺陷的,因此在互联网档案中不见踪影,它与DVD电影中使用的内容加扰系统(CSS)非常相似。
表1:常用加密标准。
表2:常用加密协议。
1999年,音乐界及有关人士组成了SDMI(安全数字音乐促进:Secure Digital Music Initiative)组织,目前加入SDMI的技术和娱乐公司已经超过了160家。SDMI建议所有在Internet上发行的CD和音乐数据都应该加入数字水印编码,而与SDMI相容的播放器或播放软件就可以知道音乐数据被拷贝的次数,若超出限制次数则无法播放。
SDMI最初是使用唯一的、不可更改的密钥。但通常情况下,这样做必须使用更多的硬件来防止篡改。对于物理安全不成问题的许多系统来说,诸如Trusted Computing Group公司的信任平台模块(TPM)这样的平台就可以为系统提供基本的安全性。 威盛科技(VIA)公司开发的Padlock版本则增加了像AES加密之类的性能。这类平台可以支持许多操作系统特性,比如Vista的加密文件系统BitLocker。
Zilog公司开发的基于32位ARM922T的Zatara微控制器集成了保证微控制器安全所要求的大部分功能,包括安全启动ROM和篡改检测支持(图1)。更值得一提的是它带有40kB的安全RAM,如果篡改检测电路受到攻击,这部分RAM将归零。
图1:Zilog公司的32位Zatara安全事务微控制器采用了ARM922内核,与安全有关的特性包括安全启动ROM和电池支撑的SRAM。
在篡改检测变的越来越普遍的同时,在向食物链上游的更大处理器转移,大多数64位处理器配备了外部硬件电路来解决这个问题。诚然,从里到外保证系统的安全对整个安全系统来说至关重要。当然,极端安全的系统只有在某些特殊环境下才有要求,例如控制核反应堆或管理大量汇款。在这些情况下,为控制微处理器而增加成本和复杂性不是问题。
软件端的安全保障
计算机系统由计算机硬件和软件两部分组成。
软件系统的最内层是系统软件,它由操作系统、实用程序、编译程序等组成。操作系统实施对各种软硬件资源的管理控制。实用程序是为方便用户所设,如文本编辑等。编译程序的功能是把用户用汇编语言或某种高级语言所编写的程序,翻译成机器可执行的机器语言程序。支援软件有接口软件、工具软件、环境数据库等,它能支持用机的环境,提供软件研制工具。支援软件也可认为是系统软件的一部分。应用软件是用户按其需要自行编写的专用程序,它借助系统软件和支援软件来运行,是软件系统的最外层 。
诚然,运行软件来保持系统的安全性,需要由系统提供一部分资源,所以这并不是最好的处理方法。
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
DES的原始思想可以参照二战德国的恩格玛机,其基本思想大致相同。传统的密码加密都是由古代的循环移位思想而来,恩格玛机在这个基础之上进行了扩散模糊。但是本质原理都是一样的。现代DES在二进制级别做着同样的事:替代模糊,增加分析的难度。
它是一种不再被经常使用的加密标准,很早以前就被许多更强大的技术所代替。同样,3DES(三重DES)已经被更具鲁棒性的AES所替代。当然,AES也不是终极标准。这正是为什么片上加密系统要不断发展以适合最新安全技术的原因。片上加速器通常支持多种加密标准。
另外一种正在部署的流行加密系统采用的是椭圆形曲线加密法(ECC)。ECC是一种公钥加密系统,基于的是有限域上椭圆曲线的代数结构。对ZigBee等无线技术来说这是一项可选功能。使用它的原因是可扩展性。不管是理论上还是实践上,ECC的扩展性都要好于最流行的加密标准AES。
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
DES是一种比较安全的算法,前只有一种方法可以破解该算法,那就是穷举法。采用64位密钥技术,实际只有56位有效,8位用来校验的。譬如,有这样的一台PC机器,它能每秒计算一百万次,那么256位空间它要穷举的时间为2285年。所以这种算法还是比较安全的一种算法。
尽管从推出到被大众接受往往都需要很长时间,但加密技术一直在不断创新。挑战一种新方法通常要求更新的思路。来自SecureRF的lgebraic Eraser就是一个很好的例子。它使用线性的安全协议,适用于对称(秘钥)和不对称(公钥)加密算法。
DRM无很好的安全保障
DRM,英文全称Digital Rights Management, 可以翻译为:内容数字版权加密保护技术。 由于数字化信息的特点决定了必须有另一种独特的技术,来加强保护这些数字化的音视频节目内容的版权,该技术就是数字权限管理技术---DRM(digital right management)。
DRM分为两类,一类是多媒体保护,例如加密电影、音乐、音视频、流媒体文件。另外一类是加密文档,例如Word, Excel, PDF等。DRM主要通过技术手段来保护文档、电影、音乐不被盗版。 这项技术通过对数字内容进行加密和附加使用规则对数字内容进行保护,其中,使用规则可以断定用户是否符合播放。
DRM对许多系统来说很重要,甚至是很多不安全因素的克星,但它倾向于固定链接基于硬件的安全和加密。它之所以要依赖于硬件支持,部分原因是它需要端到端的内容保护以及满足系统要求的吞吐量。例如,音频流或视频流的加密/解密必须以线速进行,否则回放质量将受到影响。
DRM技术的工作原理是,先建立数字节目授权中心。编码压缩后的数字节目内容,可以利用密钥(Key)进行加密保护(lock),加密的数字节目头部存放着KeyID和节目授权中心的URL。用户在点播时,根据节目头部的KeyID和URL信息,就可以通过数字节目授权中心的验证授权后送出相关的密钥解密(unlock),节目方可播放。需要保护的节目被加密,即使被用户下载保存,没有得到数字节目授权中心的验证授权也无法播放,从而严密地保护了节目的版权。
消费者要求似乎在推动DRM退出音频领域,但它在视频领域仍很重要。高带宽数字内容保护(HDCP)技术可以保护当前的一些HDTV内容,并且它已被集成进包括蓝光和HDTV驱动设备在内的HDTV源和目标设备中。幸运的是,这些器件之间传送的数据一般被认为是明码数据,因此它不涉及任何加密或保护。一般来说,只有作为端点的设备需要满足这种类型的DRM。
另一方面,保护应用程序的目标代码经常是需要的。当代码来自不安全的片外器件(如闪存芯片)时,就可能需要加密。在这种情况下,处理器必须在执行时进行数据解码。这种情况并不常见,但有多种微控制器可以完成这个功能,比如美信公司基于8051的DS5250。
另外一种方法是复用启动装载工具(boot loader)将片外代码解密到片上RAM,然后从RAM执行。当断电时解密代码会丢失。典型的替代方法是使用片上代码保护机制,它通常能防止闪存被常用的调试方法所读取。在没有附加密钥的情况下它通常会阻止对闪存进行编程。否则一个欺诈应用程序可能被装载进存储器的一小部分空间中,这段程序再将剩下的代码下载进攻击器。
多级安全
微控制器的存储器和系统保护系统的一部分功能是控制代码和对代码的访问。高安全性系统一般会将这个功能与安全启动及安全存储等功能结合起来形成一个安全的操作系统,如来自美国国家安全署(NSA)的安全增强型Linux(SE Linux)。据悉今后还可扩展支持虚拟机。
除了安全启动和安全存储外,加密并不是系统安全的必要部分。相反,标准微控制器对虚拟存储器和虚拟机的支持能力足够用来实现多级安全(MLS)。系统中虽然可以集成很多的硬件特性,但在标准微控制器上很少见到。
开发人员需要了解这些安全因素的理由是,他们不需要额外的硬件,但软件确实对系统的起点做了某种假设,如启动过程和操作系统。无法满足这些假设的系统如果不借助于任何加密手段的话通常会降低性能。遗憾的是,这些安全因素超出了本文讨论的范围,因此不要认为只要简单地包含了硬件加密或者甚至只是包含了安全启动特性就能够提供足够安全的系统。