你无法盗取一个并不存在的密钥

2017年11月21日

Ben Smith 作者: Ben Smith
Maxim Integrated嵌入式安全事业部资深工程师 


DNA是个非常有意思的东西——它将我们与地球上的其他人类联系在一起,同时又使我们每个人独一无二。世界上没有任何一个人的DNA与您的相同,一个也没有。

近年来,我们已经知道如何利用这种独特性作为一种绝对身份识别的手段。有些被错误定罪的人得益于DNA证据而摆脱罪名,有些人则因为DNA提供了犯罪证据而受到应有惩罚。可以说,我们每个人身体中的每个细胞都携带有个人身份的绝对证明。

这与技术世界形成了鲜明的对比。在这个世界中,每种设备的个体之间必须完全相同,哪怕是一个微米、微伏或字节。每部设备都必须拥有相同的外观及功能。大多数情况下,这是一件好事——作为现代技术的创造者,您必须提供一致的用户体验。但同时,这种千篇一律也可能对安全性带来彻底的摧毁。

如何确保真实性?

由于各个设备都完全相同,难以知道声称来自于某台设备的消息是否真的源自于该设备。这些消息可能来自于另一台假冒设备。例如,某个房门执行器从门禁键盘上接收到一条消息,且输入的密码正确,那么该门就应打开。但该执行器如何知道消息是真实可信的呢?

在面对面沟通中,这从来都不是问题。我们之所以认识正在交谈的人,是因为我们熟悉其下巴形状、耳朵大小以及说话的声音——也就是说,我们知道其DNA物理特征的表示形式,正是这点使我们每个人独一无二。如果每台设备也都具有这样的独特性就好了。

这正是Maxim研发ChipDNA技术的原因。采用ChipDNA技术的设备包含使其独一无二的元素,即使各个设备的功能都完全相同。配备有ChipDNA的设备内部是测量芯片本身特定物理特征的电路元件。现在,这些物理特征在时间上是稳定的,但在各个设备之间却又是不同的。ChipDNA逻辑利用这些器件相关的变化计算一个值,该值在每次计算时保持相同,但该值对于每个具体设备都是独一无二的。该值能够唯一地确认设备,就像您的DNA能够唯一地确认您的身份一样。

为了更好的理解确保发送方身份和消息完整性的重要性,我们以一个简单的场景为例。假如您在远端位置有一个传感器,传感器发送消息说存在某项问题。您如何相信该消息是真实的?您有几种选择:

选择一:共享密钥

您在部署传感器之前就应设置一个密钥——可能是密码。然后,当传感器发送消息时,以一定的方式将密钥合并到消息中。您接收到消息时,检查发送的密码是否正确;如果密码正确,则接受该消息。

问题是,如果所有此类场景下的密码都相同,那么对手就可能对设备执行反向工程,并盗取密码。然后对手就能够假冒来自于任何类型、任何设备的消息。更为糟糕的是,如果密码在发送时未经加密,对手根本就无需接触设备——只需监听会话即可获得密码。这就意味着能够假冒部署范围内任何地点的任何传感器。所以,共享密钥不是解决问题的方法。

选择二:公钥加密

如果您在设备中设置私钥,设备即可利用私钥对消息进行数字签名,并可利用对应的公钥进行验证。采用这种方式签名的消息近乎可以实现安全认证。经过签名的消息是几乎不可能更改或伪造的,所谓"几乎不可能"是指在没有签名方私钥的情况下,没有已知方法能够在合理时间内模仿签名。

问题是,密钥、私钥必须存在于目标设备存储空间中的某处。如果攻击者能够置入恶意软件,恶意软件就很容易泄露私钥。在开发出恶意软件之后,即可利用固件升级方法传播恶意软件,很快就会有大量受影响设备受到威胁。这种方法比简单的共享密钥方法好,但仍然不是最佳选择。

选择三:ChipDNA技术

ChipDNA技术克服了传统公钥-私钥系统存在的问题,其私钥永远无法泄露,甚至无法泄露给自己。实际上,在实际需要私钥之前,设备中根本就不存在私钥。只有在准备对消息进行签名时,才在硬件中产生ChipDNA逻辑计算的值,并且立即销毁。计算值从不会出现在微控制器的存储器映射中。以下是您可能使用ChipDNA技术的方式:

设备制造商在部署物联网(IoT)设备之前,使ChipDNA硬件计算一个与ChipDNA值(私钥)对应的公钥,而实际的ChipDNA值绝不会泄露。设备制造商然后利用其企业私钥对公钥进行签名,产生一个证书,然后将其写入到设备。该证书随后可证明设备提供的公钥与工厂计算的公钥相同,因为没有人能够在无企业公钥的情况下生成有效的证书。

完成部署之后,如果IoT设备想要发送消息,则重新计算ChipDNA值并将其作为私钥,然后对消息进行签名。如果消息的接收方拥有该设备的公钥,则能够以非常高的可信度确认消息是真实的、未经篡改以及来自于特定的设备。

ChipDNA技术

ChipDNA技术基于物理不可克隆函数(PUF)

但是,自然环境下有数以百万计的IoT设备,每台IoT设备都配备一个公钥,由谁来管理这个庞大的公钥数据库呢?接收到某台IoT设备消息的所有接收方不可能都拥有特定设备的公钥。但是接收方可向设备本身发送请求,询问设备的公钥证书。当设备发送证书时,接收方可通过两步来验证证书的有效性:首先,接收方使用签名方的公钥验证证书的签名。验证证书的合法性之后,接收方可继续第二步:使用证书中包含的公钥,测试设备消息的有效性。尽管看起来像是一套非常复杂的系统,但整个过程所需时间却不到1秒钟。

防止IoT遭受侵入式攻击

问题来了,该系统到底有多安全?考虑一下以下场景:在测量芯片的物理属性之前,私钥甚至根本不存在,并且在使用完私钥后立即将其销毁。由于私钥仅存在于安全、完全隔离的硬件中,从来不会出现在微控制器的实际存储空间内,所以不能利用流氓固件发现私钥。即使攻击方试图探测芯片本身,探测器件的行为将改变器件的特性,而器件特性决定了ChipDNA值,因此将摧毁恢复私钥的任何企图。

我们以上讨论了如何利用ChipDNA来绝对保证某台IoT设备消息的真实性且未经篡改,但ChipDNA也可用于从验证固件映像到管理设备合法使用的其他诸多过程。对于任何需要绝对保证相关设备身份的事务,ChipDNA都能大显身手—— 拥有无穷无尽的可能性。

因此,在您考虑下一产品的安全需求时,不要将就,一定要采用最严格、最强大的保护—ChipDNA技术。因为,你无法盗取一个并不存在的密钥!