现实世界中的嵌入式安全
数据或向未经授权的接收端发送数据。系统完整性的最好保护是,利用哈希算法检测固件内未经授权的改变,并采取相应措施。
哈希算法生成一种被称为给定信息摘要的压缩指纹。就像人类的指纹一样,这个摘要是唯一的。被广泛采用的著名的安全哈希算法(SHA)就是一个哈希算法的范例。为检测固件篡改,在使用中,您需要定期地产生它的现场摘要,并与出厂时生成的参考进行比较。您也许已经在问,是什么能保证任何人都无法伪造摘要或参考。
我们的做法是,我们需要保证摘要和它的参考不被伪造。在输入哈希算法生成出厂参考之前,我们通过向固件中追加一条任意长度的附加信息的办法实现这一点。如果您保证附加信息是保密的,那么,只有您才能够重新生成相同的摘要,这就是您能保证摘要不被伪造的方法。
在使用中,保证参考不被现场伪造的方法是:将它存储在安全存储器中。若要知道摘要没有被伪造这一事实,必须进行身份验证,本例中,要实现这一点,需要知道嵌入在安全集成电路中的密钥。
所以,加密仅仅是对数据加扰而已,与此相比,身份认证是安全系统的真正基础。明白了这一点,值得注意的是:哈希密码算法本身很适合身份认证,这是由于好的哈希算法必须具有3个基本特征。
首先,它们的运算是不可逆的。这意味着,不可能从摘要中恢复出原始信息,所以,私密信息是安全的。第二点是非冲突性,即各种不同的输入必须生成独一无二的摘要。在验证时,唯一的摘要可提升对固件完整性的信任。第三个同时也是最终的性质被称为雪崩,是指哈希算法输入的任何改变,无论多么小,都会产生摘要的显著变化。
存在一些经过仔细分析的公开方法,这些方法可允许使用加密算法,以实现传统上由哈希算法实现的功能。这类系统可同时实现身份验证和加密。同样,加密算法本身很适合数据加扰,由它们所带来的安全性与密钥一样强大。哈希算法的身份认证特点具有互补性,可实现安全系统中密钥的安全管理。
不同的密码算法可保护系统的不同层面的安全,在对它们的微妙作用、强度、差异和相互影响有了清晰的了解之后,就可以使用更少的算法组合来实现牢靠的安全性能。对于像我们所面临的这样的挑战而言,这尤其重要,因为我们的代码空间十分有限。
配套的安全集成电路
对于您的任务而言,您需要固件空间以及来自防篡改和侵入的安全集成电路的资源。可以通过配套的安全集成电路来解决这一问题。这些安全集成电路与安全MCU一样,具有硬件防篡改和侵入的功能,但做了一些简化,可为各种具体应用提供相应的功能,因而成本更低。
图2 作为配套的安全装置的集成电路很小,成本较低,需要非常少的系统资源,但却可提供与安全MCU相同的物理保护
在我们的例子中,配套的安全集成电路将保护和管理密钥,以对由加密所带来的安全性进行互补。它们也可进行各种类型的身份认证,能够实现系统完整性验证。它们还可实现许多其他功能,包括安全存储以及可信固件的现场升级。通过提供智能和易用的API,它们可实现这一点,因此,使用配套的安全集成电路不需要深入掌握密码学,也无须较多代码空间。
这与那些提供处理和存储功能的安全MCU不同,因此,您可将所有需要的函数写入固件里,而配套的安全集成电路中的函数是硬连线的,使得它们很紧凑,因而成本更低。Atmel系列"加密认证"产品就是一个例子。通过采用这些低成本(大量购买时的单价为0.5美元)的集成电路芯片,可以在已有平台上编写代码并追加在这个小小的额外固件上。
- 如何用C语言描述AES256加密算法最高效?(01-23)
- STM8L探索套件学习笔记-AES硬件加密(十三)(11-24)
- Intel开发硬件加速器 AES加解密效率陡升(09-12)
- 提高加密应用的系统效率(04-01)
- 汽车无源防盗系统设计与安全性的考虑事项(01-04)
- 基于LPC2138的AES3数字音频接口设计(08-20)