假如您是一位电子工程师,受聘于一家公司,职责是为汽水自动售货机添加嵌入式安全性能。在面试时,凭着对加密技术的渊博知识,您给新雇主留下了深刻印象。现在,表现的时候到了。从表面看来,这个工作应该像利用优良的加密算法挑选芯片一样简单,但现实世界可不是这样简单的。
自动售货机等嵌入设备的安全隐忧
为什么要召集大队人马来保护汽水自动售货机?因为汽水自动售货机存在安全隐忧,而且世界各地的机器制造商都感受到了这种实际存在的问题。通过机器固件提高安全性呈现出日益上升的趋势,虽然乍一看来,这些机器似乎并不需要这样的安全性能。汽水自动售货机是本文所选取的一个例子,你不难想到其他这样的例子:例如停车计时器、自助洗衣房里的洗衣机和烘干机、收费亭和售票机等。
目前的售货机正在实现联网,以便提供有助于削减运营成本和增加收益的直观实时信息。现在,机主可以知道哪台机器需要维修,而且掌握着相关资料,可以选择最适合的产品组合并安装机器。实时信息是对抗竞争和盗贼的有利武器。利用这一信息流的竞争者可以利用这些信息来提高产品的竞争攻势,也可隐藏机主信息(例如,拒绝服务攻击)。同样,现在盗贼也知道可以抢劫哪台机器或者何时进行抢劫。
图1 越来越多的应用领域发现了实现机器联网的价值,从而引发了对嵌入式安全的需求
如何实施保护
上面做了简要的介绍,得出的结论是:产品设计者必须保护由自动售货机发送的信息。一种相当简单的方法就是对网络上的信息进行加密,并防止自动收货机内的密钥和固件被非法访问。
网络信息的加密简单而直接。首先,确定一种良好的加密算法,最佳候选算法是那些公开算法而非私密性算法,因为公开算法已经通过了公众检验,高级加密标准(AES)算法便是一个很好的例子;接着,在自动售货机的MCU中应用该算法。为了实现这一点,您可以通过在固件中嵌入该算法,也可以选择在硬件中固化该算法的MCU。
最后但同样重要的是,按照推荐模式使用算法。为了通过加密算法实现信息的安全性,所需的不仅仅是将明文顺序全部打乱以获得密文。大部分公开的算法都有运行的推荐模式,以此来保证它们加密数据的保密性。
AES可用的样例模式包括密码段链接(CBC)、密码反馈(CFB)、填充密码块链接(PCBC)、输出反馈(OFB)和计数器(CTR),可将他们按照不同组合方式来加以使用,从而提高加密强度。有关这些算法类型和使用的深入讨论不属于本文讨论的范围。需要知道的一点是,仅仅拥有这些算法并不能保障安全。
防止无正当理由获悉密钥或未经授权访问固件,这种做法不是那么直接,因此理解起来难度较大。对于许多安全措施而言,这往往最容易产生弱点。这一弱点源自对攻击者资源的低估和对硬件防入侵篡改的集成电路价值的低估。通常,人们把加密等同于安全,因此,没有看到防篡改保护集成电路的投资价值。
选择安全MCU,还是采用其他方法
您作为一名受人尊重的电子工程专业人士,通过阅读本杂志保持与当前业界趋势同步,您能够快速分析事实,并提出十分简单的解决方案:利用安全MCU替换自动售货机中的MCU,并增加少量的额外固件。安全MCU可以保护固件和密钥,加密通信,并实现硬件防篡改和防侵入。
事实上,它们可以检测到多种复杂的攻击,并采取从简单的延迟应答到关机的各种措施。安全MCU是银行用来运营ATM机的IC芯片。现在让您设计一个解决方案,方案中不采用安全MCU,能办到吗?
事实是,安全MCU成本更高,而且,您的公司也许要坚持使用它们的标准处理器。安全MCU的编写代码也比较难,导致更高的工程成本。
现实世界中的工程解决方案
当市场营销、采购乃至工程师同事们集体投票,对一个看上去具有绝对把握的解决方案进行表决,作为一名工程师,您该怎么做?重新设定您的期望。我们的做法是,这意味着,不必依赖安全MCU,不必期望固件的更大内存,也不要忽视任何改变。
重新评估您的策略。不是把一切都集成一团,以放入安全MCU的单个保护外壳中,而是以不损害安全性能的方式,把系统分解成非安全的和安全的部分。非安全的部分将包含售货机的核心业务(销售)逻辑,而安全的部分将包括两个子组件,一个用于保护密钥,另一个用于验证系统完整性。
密钥保护需要在物理保护之下进行存储和使用,这种物理保护与安全MCU所提供的安全保护相类似。这需要采用一种集成电路,这种集成电路须与安全MCU一样具备较强的物理性能,此外,无须其他东西。
您也必须保护系统的完整性,防止系统运行中受到流氓固件的攻击,这些流氓固件可绕过加密,篡改数据或向未经授权的接收端发送数据。系统完整性的最好保护是,利用哈希算法检测固件内未经授权的改变,并采取相应措施。
哈希算法生成一种被称为给定信息摘要的压缩指纹。就像人类的指纹一样,这个摘要是唯一的。被广泛采用的著名的安全哈希算法(SHA)就是一个哈希算法的范例。为检测固件篡改,在使用中,您需要定期地产生它的现场摘要,并与出厂时生成的参考进行比较。您也许已经在问,是什么能保证任何人都无法伪造摘要或参考。
我们的做法是,我们需要保证摘要和它的参考不被伪造。在输入哈希算法生成出厂参考之前,我们通过向固件中追加一条任意长度的附加信息的办法实现这一点。如果您保证附加信息是保密的,那么,只有您才能够重新生成相同的摘要,这就是您能保证摘要不被伪造的方法。
在使用中,保证参考不被现场伪造的方法是:将它存储在安全存储器中。若要知道摘要没有被伪造这一事实,必须进行身份验证,本例中,要实现这一点,需要知道嵌入在安全集成电路中的密钥。
所以,加密仅仅是对数据加扰而已,与此相比,身份认证是安全系统的真正基础。明白了这一点,值得注意的是:哈希密码算法本身很适合身份认证,这是由于好的哈希算法必须具有3个基本特征。
首先,它们的运算是不可逆的。这意味着,不可能从摘要中恢复出原始信息,所以,私密信息是安全的。第二点是非冲突性,即各种不同的输入必须生成独一无二的摘要。在验证时,唯一的摘要可提升对固件完整性的信任。第三个同时也是最终的性质被称为雪崩,是指哈希算法输入的任何改变,无论多么小,都会产生摘要的显著变化。
存在一些经过仔细分析的公开方法,这些方法可允许使用加密算法,以实现传统上由哈希算法实现的功能。这类系统可同时实现身份验证和加密。同样,加密算法本身很适合数据加扰,由它们所带来的安全性与密钥一样强大。哈希算法的身份认证特点具有互补性,可实现安全系统中密钥的安全管理。
不同的密码算法可保护系统的不同层面的安全,在对它们的微妙作用、强度、差异和相互影响有了清晰的了解之后,就可以使用更少的算法组合来实现牢靠的安全性能。对于像我们所面临的这样的挑战而言,这尤其重要,因为我们的代码空间十分有限。
配套的安全集成电路
对于您的任务而言,您需要固件空间以及来自防篡改和侵入的安全集成电路的资源。可以通过配套的安全集成电路来解决这一问题。这些安全集成电路与安全MCU一样,具有硬件防篡改和侵入的功能,但做了一些简化,可为各种具体应用提供相应的功能,因而成本更低。
图2 作为配套的安全装置的集成电路很小,成本较低,需要非常少的系统资源,但却可提供与安全MCU相同的物理保护
在我们的例子中,配套的安全集成电路将保护和管理密钥,以对由加密所带来的安全性进行互补。它们也可进行各种类型的身份认证,能够实现系统完整性验证。它们还可实现许多其他功能,包括安全存储以及可信固件的现场升级。通过提供智能和易用的API,它们可实现这一点,因此,使用配套的安全集成电路不需要深入掌握密码学,也无须较多代码空间。
这与那些提供处理和存储功能的安全MCU不同,因此,您可将所有需要的函数写入固件里,而配套的安全集成电路中的函数是硬连线的,使得它们很紧凑,因而成本更低。Atmel系列“加密认证”产品就是一个例子。通过采用这些低成本(大量购买时的单价为0.5美元)的集成电路芯片,可以在已有平台上编写代码并追加在这个小小的额外固件上。