IOs interface memory secutity

SRAM PUF 基础知识以及如何部署以维护物联网安全

发布时间:2021-08-16 点击数:

作者:Geert-Jan Schrijen   翻译:郭正伟


   在任何情况下,安全都始于信任。当你家里有一个报警系统,你只把它的引脚代码给你信任的人。无论是家庭成员还是你的友好邻居,没有信任你不会分享你的秘密。这就是它应该有的样子!

   这种信任问题也转化为个人身份识别。在这里,信任的基础来自正式文件,如护照或出生证明。但是,这些文件需要"安全地链接"到特定的人。这通常适用于人类生物识别技术。无论是仅仅一张照片,还是像现代护照那样通过指纹进行生物识别,身份证上都有一些东西把文件和要找的人联系在一起。因此,生物特征是一个安全锚,在这个安全锚上建立一个有权限的系统(你是否可以越过边界?)。

   此安全锚点对于防止简单的文件被未经授权的各方复制和使用是必要的。如果文件被固定在无法复制或克隆的东西(如指纹)上,安全性就会变得足够强大,可以将一个相对简单的文件变成一个强大的身份验证工具。


1629081216972772.png

图1 在不可克隆的锚中的根信任


   物联网(IoT)也面临着类似的挑战。只有当每个设备都有能力保护敏感数据和安全通信时,数十亿低成本设备的安全连接才可能实现。此保护由证书和加密密钥提供,类似于前面示例中的护照。但是,这些密钥和证书还需要一个物理安全锚,以确保它们不能复制到假冒的非法设备中。提供这种安全锚的技术是物理不可克隆函数(PUF)。PUF是一种物理结构,可以从中生成设备唯一且不可克隆的加密根密钥。此根密钥用于保护设备的应用程序密钥和证书。

   虽然有许多不同类型的PUF,但我们将重点关注SRAM PUF,因为它具有可靠性、可扩展性和易用性。SRAM PUF易于灵活实现,可扩展到物联网设备使用的许多不同工艺节点上。它也是目前已知的唯一一种、可以简单地通过将软件加载到芯片上来实现(作为集成专用硬件IP模块的替代方案,这也是可能的)的PUF类型。SRAM PUF是一种基于硬件的安全锚,由于连接设备的数量不断增加而越来越受欢迎。本文介绍了什么是SRAM PUF及其工作原理的基础知识,以及它提供的用于任何设备的信任锚的功能。


什么是SRAM PUF?

   PUF-物理不可克隆函数- 利用半导体物理生产过程中自然发生的深亚微米变化,并赋予每个晶体管轻微的随机的电特性。这些独特的特性构成了芯片独特身份的基础。

   SRAM PUF基于任何数字芯片中都可以使用的标准 SRAM 存储器的行为。每次SRAM供电时,由于晶体管阈值电压的随机差异,每个SRAM单元都有自己的首选状态。因此,当SRAM存储器供电时,每一个单元都会产生一个独特且随机的0和1模式。这些模式就像芯片指纹,因为每个模式对于特定的SRAM都是唯一的,因此对于特定的芯片也是唯一的。 

   然而,这种所谓的SRAM PUF响应是一种“噪声”指纹,将其转换为高质量和安全的密钥需要进一步处理。通过使用所谓的“模糊提取器”IP,它在所有环境下、每次都可以重构完全相同的密钥。


1629081240585261.png

图2 从芯片的SRAM内部的随机性中提取SRAM PUF密钥


   与传统的非易失性内存(NVM)中的密钥存储相比,这种从SRAM属性中获取密钥的方式具有很大的安全优势。因为密钥不是永久存储的,所以当设备处于非活动状态时(在掉电状态时或者不需要使用密钥时,没有明文密钥),密钥就不存在,因此攻击者无法打开设备并破坏其存储器内的内容。


如何将SRAM PUF用作信任根?

   设备,尤其是物联网的设备,需要密钥来保护其数据、IP 和操作。如果这些密钥的来源是可信的,并且密钥安全地存储在可以抵御攻击的硬件中,则它们将形成设备所谓的"信任根"。

   这些密钥可以由设备制造商(也称为 OEM)自己配置到设备上,也可以由芯片供应商在更早的阶段提供。当芯片供应商提供预先配置的芯片时,这就增加了他们销售给 OEM 的产品的价值。如果 OEM 决定自己进行配置,他们通常会购买成本更低的芯片。

   无论双方中哪一方负责提供加密密钥,执行这一任务都不是一件简单的事情。将密钥注入芯片需要值得信赖的工厂,这增加了生产过程的成本和复杂性,并限制了灵活性。这种复杂性可以通过在芯片内部创建密钥来避免,比如使用内部随机数生成器(RNG)或PUF。

   将加密的根密钥放到设备上并不是唯一的挑战。在设备上安全地存储敏感数据也绝非易事。密钥不能简单地存储在NVM中,因为NVM容易受到硬件攻击。允许对手读取NVM内容的硬件攻击正变得越来越常见,使得不受保护的密钥存储变得不可用。因此,需要另一种安全的密钥存储。一种方法是在设备中添加一个安全芯片(SE)。然而,添加硬件也会增加复杂性和成本。硅PUF,例如SRAM PUF,可以安全地存储加密密钥,而不需要添加任何额外的硬件。

   下表总结了安全级别、供应链开销以及配置和存储加密密钥的技术选项的成本:


1629081257299648.png

图3 PUF与其他密钥生成和存储机制对比


使用SRAM PUF创建密钥库

   当我们从SRAM PUF获得这个根密钥时,下一步是创建信任根吗?下一步是利用SRAM PUF密钥创建一个嵌入式密钥库来保护设备上的所有秘密数据。设备的更高级别服务和应用程序需要这个保险库保护的密钥。因此,密钥库支持诸如身份验证、信息加密、软件/固件加密等安全应用程序。

使用 SRAM PUF,我们可以创建一个具有以下属性的密钥库:


 ·没有密钥是明文存储的,特别是根密钥

 ·不同的应用程序可以存储和使用自己唯一的密钥

 ·密钥库输出可直接发送到硬件加密引擎


   基于SRAM PUF的密钥库实现了以下功能:


 ·注册:注册操作通常在设备生命周期中执行一次。它建立了 PUF 根密钥,该密钥可以在设备生命周期内重新生成。PUF根密钥不会离开设备,也不会被存储。它用于派生可输出或用于包装/解开敏感数据的第二层密钥。此外,还创建了用于错误纠正的辅助数据。这个数据是不敏感的——它不提供PUF根密钥的任何信息——所以可以存储在NVM中,也可以被设备访问。辅助数据仅用于从SRAM PUF中可靠地重构相同的根密钥,而该PUF本身是有噪声的。


1629081272316168.png

图 4 创建根密钥及其辅助数据


 ·开始:开始操作使用注册期间生成的辅助数据,结合新读取的、"嘈杂的"SRAM PUF 测量值,重新生成内部 PUF 根密钥。设备上生成的辅助数据是该设备所唯一的、独有的。在执行开始操作时使用从其他设备复制来的辅助数据会导致操作失败,并有对应的错误指示。


1629081284614252.png

图5 使用辅助数据重构根密钥


 ·包装:包装操作将外部提供的密钥转换为加密后的密钥 (Key Code或者简写为KC),这是原始密钥的加密和认证版本。由于这种保护,KC 可以无保护地存储在设备中。KC 将只允许原始密钥在它被"包装"的设备上被访问。 


1629081298871930.png

图 6 包装加密后的密钥(KC)以安全地存储密钥


 ·解包装:解包装操作与包装操作相反,因此在验证其真实性后,它将 KC 转换回被包装的原始密钥。


1629081313479615.png

图7 由加密后的密钥(KC)恢复明文密钥


 ·停止:只要不需要执行进一步的密钥库操作时,就可以发出停止操作。它清除了内部寄存器中的所有敏感数据(包括根密钥),可在进入睡眠模式之前使用,以减少攻击面。


1629081325792771.png

图8 操作结束后清除根密钥


从PUF中派生多个密钥

   安全系统的实现通常需要多个加密密钥。这是因为:


 ·一个应用程序的特定密钥的泄露不应影响同一系统中其他应用程序使用的秘密的安全性,这要求系统中的不同应用程序使用不同的密钥。

 ·系统中不同的密码算法需要不同长度或不同结构的密钥,这些密钥相互不兼容。

 ·不同的应用程序具有不同生命周期的秘密信息,例如,系统的一个应用程序需要几个短生命周期的密钥,而第二个应用程序需要一个单一的长生命周期密钥。

 ·密钥通常与身份相关,并用于身份验证,这只有当系统的不同用户访问不同的密钥时才有意义。


   由于这些以及其他的原因,在安全设计中,只对单一用途和/或单一应用程序使用单一密钥是一个公认的最佳操作。然而,在许多实际情况下,安全系统的实现只能从SRAM PUF访问单个根秘密,就像在本例中那样。为了满足“单密钥单用途使用”的需求,应该使用一个能够从单个根密钥生成多个应用程序密钥的密钥管理组件。

   生成的多个应用密钥的关键属性是它们被加密分离,即它们的生成方式是,特定派生密钥的公开不会影响任何其他派生密钥的安全强度。这意味着简单的生成方法(例如,应用简单的算术操作或使用秘密的重叠部分)是不可能的。相反,应该使用加密安全的密钥派生函数(KDF),它使用加密原语(例如AES或SHA-256)来确保其输出之间的加密分离。因此,利用一个实现良好的KDF可以确保从单个SRAM PUF实例派生出几乎无限数量的密钥。


通过软件实现SRAM PUF

   到这里,SRAM PUF 还有一个最大的优点没有被提及,那就是它是基于一种物理结构,这种物理结构几乎可以在任何芯片上都可被使用:SRAM存储器。由于这种PUF类型使用标准的“现成的”SRAM,因此它是确保物联网产品安全的唯一硬件熵源选项,无需在硅芯片制造时加载。它可以稍后在供应链中安装,甚至可以在已部署的设备上进行远程部署。这使得前所未有的远程“棕地”硬件信任基础的安装成为可能,并为将物联网扩展到数十亿设备铺平了道路。

   前面描述的用于创建密钥库和派生多个密钥的功能可以作为硬件或软件IP实现。开发PUF所需的唯一硬件是PUF本身实际独特的物理结构。因此,在PUF算法可以访问(未初始化的)SRAM的任何设备上,工作的SRAM PUF都可以实现。这一特性使得SRAM PUF在市场上的不同PUF中独一无二。据作者所知,SRAM PUF是目前唯一可以通过简单地将软件加载到设备上在硬件上实现的PUF类型。

结论

   没有信任就没有安全。任何安全解决方案都从能够毫无疑问地证明主体身份的东西开始——无论主体是一个将被发放身份证件的人,还是一个将被部署在物联网中的芯片。在本文中,我们将SRAM PUF技术作为任何物联网设备的可靠、可扩展和易于使用的信任基础。无论它是作为一个专用的硬件IP块实现,还是作为加载到设备上的软件实现,它都可以从硅芯片中微小的、设备特有的变化中创建一个可信的密码根密钥。使用SRAM PUF,可以保证设备的根密钥不为供应链中的任何人所知,并且如果设备落入不可信的人手中,也不会被更改或克隆。通过在这个根秘密之上扩展安全功能,可以构建一个用于敏感数据和秘密密钥的可信库,并且可以派生和保护设备所需的所有附加密钥。这就是为什么SRAM PUF是一种从根基上(或硅)保护系统的好方法。


1629081342616917.png

图9 具有SRAM PUF软件的MCU


关于作者

   Geert-Jan Schrijen,于2000年12月获得特温特大学(the University of Twente)电气工程硕士学位,论文主题为"使用多个扬声器主动消除噪音"。2001年4月,他加入了埃因霍温飞利浦研究部门的安全小组,从事数字版权管理、低功耗认证协议、私人生物识别和物理不可克隆函数(PUF)工作。关于后一个专题的研究工作促成了2008年10月Intrinsic ID从飞利浦剥离出来。作为Intrinsic ID 的高级算法设计师,Geert-Jan 专注于使用PUF技术的嵌入式系统的信号处理算法和安全架构的开发。2011年,Geert-Jan担任工程副总裁,负责Intrinsic ID的所有开发和工程工作。2016年8月,他被任命为CTO。

赞助企业