什么是物理不可克隆(PUF)?为何是解决芯片安全的绝佳方法?

在本文中,我们将讨论 PUF( physically unclonable functions) 物理不可克隆功能,以及它如何提高 IC 的硬件安全性。
在一个严重依赖电子产品的日益互联的世界中,安全性至关重要。现代电子产品几乎一致地依赖密码学作为保护电子数据的主要方法。然而,新兴的硬件安全研究领域已经证明,我们所知道的密码学并不是那么安全。
为此,物理不可克隆功能 (PUF) 已成为一种硬件安全技术,可提供从改进的密码术到 IC 防伪的所有功能。
在本文中,我们将介绍 PUF 的概念、它们的工作原理以及它们如何保护数据。
什么是PUF?
物理不可克隆功能 (PUF) 是一种硬件安全技术,它利用固有的设备变化来对给定的输入产生不可克隆的唯一设备响应。在更高的层面上,PUF 可以被认为类似于人类的生物识别——它们是每一块硅的固有和唯一标识符。
由于硅加工技术的不完善,所生产的每一块IC在物理上都是不同的。在不同的集成电路之间,这些工艺变化表现为不同的路径延迟、晶体管阈值电压、电压增益和无数其他的方式。
重要的是,虽然这些变化在不同的集成电路之间可能是随机的,但一旦知道,它们是确定的和可重复的。PUF利用IC行为的这种内在差异,为每个IC生成一个唯一的加密密钥。

图 1. 美信的 DS28S60 协处理器利用 PUF 生成加密密钥

与使用单个存储密钥的传统加密方法不同,PUF 通过实现质询-响应身份验证来工作。对于一个给定的PUF,一个特定的输入,被称为 "质询",将产生一个输出响应,(质询应答认证challenge-response)该响应对特定的PUF是唯一的,因此是不可克隆的。

在制造时,PUF 将接受一系列不同的“质询”并记录其响应。通过此练习,设计人员了解每个 PUF 对给定质询的独特响应,并可以使用此信息来防止伪造、创建和存储加密密钥以及许多其他安全功能。
PUF 示例
为了更好地说明PUF的工作原理,我们来看看DRAM PUF--一个利用DRAM工艺变化来生成加密密钥并提供设备认证的PUF。
一个标准的DRAM单元的工作原理是用一个单一的电容来保持作为二进制状态的存储电荷,以及一个控制电荷进出电容的通断晶体管。由于器件的非理想性,如晶体管的亚阈值泄漏,电容器上的电荷往往会随着时间的推移而泄漏,从而导致单元失去状态。这意味着,代表 "1 "位值的完全充电的DRAM单元会随着时间的推移不希望地放电为 "0 "位值。
对于 PUF 而言,重要的是,每个单独的 DRAM 单元泄漏率都受到单元制造过程变化的高度影响。
图 2. DRAM 单元中的电荷泄漏因工艺变化而变化很大

为了应对这种情况,所有的DRAM单元都会执行定期刷新命令,重新施加电荷以 "刷新 "存储电容。另一方面,DRAM PUF 的工作原理是将刷新暂停一段比平常更长的指定时间间隔,并查看单元如何因泄漏而改变状态。

由于不同的单元以不同的速度泄漏电荷,我们可以看到一些单元在一个时间间隔内完全放电并改变状态,而其他的单元可能根本没有放电到足以切换状态。

图 3.验证者可以使用challenge-response对数据库来验证设备

在这种情况下,“质询”是对 DRAM 单元阵列断言的原始二进制值,而响应是该阵列在给定时间间隔后的值。这项技术可用于生成真正的随机数,以用于加密密钥的生成,也可用于设备识别,以进行防伪保护。在后一种应用中,认证器可以存储一个challenge-response对的数据库,并利用该知识来识别假冒设备与真实设备。
PUF的优点
使用PUF的优势是巨大的,这就是为什么该技术在硬件安全方面越来越受欢迎。
首先,PUF的一个最好的特点是,它是一种固有的非易失性技术,但它并不实际存储任何密钥。在非易失性存储器中存储密钥通常会使集成电路受到硬件攻击,使对手能够读取存储器内容。
相反,PUF根本不存储密钥。它根据需要生成密钥,作为对质询的响应,之后密钥会被瞬间抹去。总是有一把钥匙,但你永远无法看到它。即使你试图 "发现它",试图探测PUF也会大大影响其对质询的响应。总而言之,这使得钥匙的 "存储 "非常安全,不会受到攻击。
除此之外,PUF还得益于它是一个真正的硬件解决方案。就像真随机数发生器可以创造真正不可预测的比特序列一样,PUF可以通过利用自然界的真随机性来创造真正不可预测的IC标识符或加密密钥。这增加了安全性,因为钥匙不能根据一些确定的或准确定的过程来预测。
由于其多功能性,PUF 是硬件安全方面的绝佳选择——可用于随机密钥生成和存储、设备身份验证、随机数生成、防伪等等。
原文:
https://www.allaboutcircuits.com/technical-articles/an-introduction-to-physically-unclonable-functions/

(0)

相关推荐