基于PUF与DICE的物联网设备硬件可信根架构设计与实现
1. 项目概述:为物联网设备构建坚不可摧的硬件身份基石
在物联网和嵌入式系统的世界里,设备身份是安全通信、访问控制和系统可信赖的绝对基石。想象一下,一个智能电表、一个工业传感器或一个医疗监测设备,如果它的“身份”可以被轻易复制、伪造或窃取,那么整个系统就形同虚设。传统的解决方案,比如在闪存中预烧录一个密钥,或者依赖软件生成的标识符,在面对物理提取、克隆攻击或软件漏洞时,往往显得力不从心。这些方法要么将秘密暴露在非易失性存储器中,成为攻击者的显眼目标;要么缺乏与硬件绑定的唯一性,无法抵御克隆。
因此,业界一直在寻找一种方法,能够从设备“出生”的那一刻起,就为其赋予一个独一无二、无法克隆且与硬件深度绑定的身份。这个身份必须能够贯穿设备的整个生命周期,从启动、运行到远程认证,形成一个牢不可破的信任链。这正是硬件可信根的核心使命。它不是一个简单的安全模块,而是整个系统安全架构的“信任原点”。所有后续的信任关系,比如验证一个固件是否被篡改,或者证明一个应用是在可信环境中运行,都必须能追溯到这个原点。
我们这次探讨的项目,正是为了解决这个根本性问题。它提出了一种创新的架构,将两种前沿技术——物理不可克隆函数和DICE架构——深度集成到RISC-V嵌入式系统的启动ROM中。PUF利用芯片制造过程中无法复制的微观物理差异,为每个设备生成一个独一无二的“指纹”,作为其身份的硬件锚点。而DICE则提供了一套标准化的方法,将这个硬件锚定的根秘密,与每一层启动的软件测量值(哈希值)动态绑定,为每一层软件派生独立的、临时的身份密钥。
这个设计的精妙之处在于,它彻底摒弃了在非易失性存储器中永久存储根密钥的传统做法。设备的“主密钥”是在每次启动时,由PUF实时生成的,连制造商都无法预知。这从根本上杜绝了密钥被批量提取或克隆的风险。同时,通过DICE的层层派生,任何软件层的篡改都会导致其后续派生出的身份密钥失效,从而实现了从硬件到应用软件的完整、可验证的信任链。这对于资源受限但又对安全有严苛要求的物联网设备来说,无疑提供了一条既轻量又强大的技术路径。
2. 核心原理深度解析:PUF、DICE与信任链的化学反应
要理解这个架构的价值,我们需要深入拆解其核心组件的工作原理和它们是如何协同工作的。这不仅仅是几个技术名词的堆砌,而是一套环环相扣的安全逻辑。
2.1 物理不可克隆函数:芯片的“数字指纹”
PUF的核心思想非常巧妙:它不存储密钥,而是利用芯片在制造过程中无法避免的、随机的物理差异(如晶体管阈值电压、导线延迟的微小差别)作为熵源。当你给PUF一个“挑战”(输入),它会基于这些物理特性产生一个“响应”(输出)。由于物理差异的随机性和不可控性,即使使用同一批次的硅片、同一套光刻掩模,两个芯片对同一挑战的响应也几乎不可能相同,且无法被预测或复制。
项目中采用的是一种环形振荡器PUF。它的工作原理是,在芯片上制造大量结构相同的环形振荡器电路。理论上它们应该以相同的频率振荡,但由于制造差异,每个振荡器的实际频率会有微小差别。通过比较一对RO的频率,可以产生一个比特(比如,A比B快输出1,否则输出0)。将成千上万个这样的比较结果组合起来,就得到了一个长比特串,即设备的“指纹”。
然而,PUF的响应并非完美稳定。温度、电压波动甚至芯片老化都会导致响应比特发生“翻转”(0变1或1变0)。直接使用原始响应作为密钥是不可靠的。因此,必须引入辅助数据算法。在设备出厂前的“注册”阶段,系统会多次读取PUF响应,通过统计筛选出稳定的比特位,并生成用于纠错的“辅助数据”和“挑战掩码”。在后续每次启动时,PUF结合存储的辅助数据,就能确定性地重建出与注册时相同的、稳定的密钥种子。这个过程确保了密钥的可靠再生,同时辅助数据本身不泄露关于PUF响应或密钥的任何关键信息。
注意:这里使用的是“弱PUF”,其响应空间有限,主要用于密钥生成,不像“强PUF”那样用于大量的挑战-响应认证。这避免了强PUF可能面临的机器学习建模攻击,将攻击面限制在物理攻击,而物理攻击的假设在我们的威胁模型中已被充分考虑(攻击者无法直接接触PUF电路本身)。
2.2 DICE架构:层层递进的动态身份
有了一个硬件生成的、唯一的根秘密(在DICE中称为唯一设备秘密),下一步是如何安全地使用它。DICE架构的精髓在于“绑定”与“派生”。
传统的安全启动可能只是验证下一级固件的签名,但DICE走得更远。它的流程可以概括为:
- 测量:当前可信层(如Boot ROM)对即将加载执行的下一层“第一可变代码”(如安全监控器)进行密码学哈希(测量),得到其完整性度量值。
- 派生:将UDS与该FMC的哈希值进行组合(例如,使用HMAC),派生出该层的复合设备标识符。CDI = HMAC(UDS, Hash(FMC))。
- 生成密钥:使用CDI作为种子,通过密钥派生函数生成该层专用的非对称密钥对(如用于签名的别名密钥)。
- 传递信任:当前层使用自己的密钥,为下一层的别名密钥签发证书。这个证书不仅绑定了公钥,还通过扩展字段包含了FMC的测量值。
- 迭代:下一层(如安全监控器)在获得控制权后,重复这个过程:测量它要加载的下一层代码(如操作系统内核),用自己收到的CDI派生新的CDI,生成新的密钥对,并为之签发证书。
这样,每一层的身份都严格依赖于两个因素:上一层传递下来的秘密和本层要加载的代码的精确内容。任何一环被篡改,都会导致后续所有派生出的密钥发生变化,从而使攻击者无法使用之前合法的身份凭证。这构建了一个动态的、与软件状态强绑定的身份链。
2.3 信任链的融合:Boot ROM中的硬件可信根
本项目的核心创新在于,将PUF和DICE逻辑直接固化在不可更改的启动ROM中,形成了一个真正的硬件可信根。这个HRoT在启动时顺序执行以下关键操作:
- PUF激活与UDS重建:上电后,Boot ROM中的硬件逻辑激活PUF模块,结合存储在外部(如SD卡)的辅助数据,在芯片内部重建出UDS。这个秘密从未离开过芯片的受保护区域。
- 设备根密钥派生与验证:使用UDS,通过KDF派生出非对称的设备根密钥。然后,Boot ROM使用DRK的公钥(来自预置的证书)验证一个自签名证书或制造商证书的签名,从而确认当前重建的DRK是合法的、经过认证的。
- 安全启动验证:在验证自身根身份的同时,Boot ROM使用其内置的EdDSA硬件加速器,验证下一级引导加载程序(如OpenSBI + Keystone安全监控器)的数字签名。只有签名有效的代码才会被放行执行。
- DICE Layer 0身份派生:Boot ROM作为DICE的第0层,测量FMC(即安全监控器的代码映像),结合UDS派生出CDI_L0。然后用CDI_L0生成一个密钥对,并为这个密钥对生成一个X.509证书(由DRK签名)。这个证书就是安全监控器的“身份证”,里面包含了其代码的度量值。
- 信任传递与隔离:在将控制权交给安全监控器之前,Boot ROM会做两件至关重要的事:第一,清零内存中所有中间敏感数据(如UDS、DRK私钥);第二,通过配置RISC-V的物理内存保护寄存器,将PUF模块和Boot ROM中涉及密钥派生的代码区域永久锁定,即使后续运行在最高特权模式(M模式)的代码也无法访问。这确保了根秘密的“一次性使用”和绝对隔离。
通过这一系列操作,设备在启动伊始就建立了一个基于硬件的、可验证的信任锚点,并将这个信任通过DICE机制安全地延伸到了整个软件栈。
3. 架构设计与实现细节
理解了核心原理后,我们来看这个架构是如何具体落地到RISC-V SoC平台上的。这不仅仅是理论,而是一个经过FPGA验证的完整硬件-软件协同设计。
3.1 硬件模块集成
整个HRoT作为一个硬件IP,被集成到SoC中,并通过AXI-Lite总线与主处理器(CVA6 RISC-V核心)连接。它主要包含以下几个关键子模块:
- RO-PUF/TRNG模块:如前所述,用于生成设备唯一的熵源。该设计巧妙地将PUF和真随机数生成器功能合一,利用环形振荡器的抖动来产生随机数。在FPGA(Kintex-7)上的实现表明,其片内Hamming距离(衡量唯一性)接近理想的50%,片间Hamming距离(衡量稳定性)可低至0.2%,并通过了NIST随机性测试,质量很高。
- SHA-2硬件加速器:一个支持所有SHA-2变种(如SHA-256, SHA-512)的轻量级哈希引擎。它采用流式消息调度设计,减少了内存占用,实现了确定性的执行周期,这对抵御侧信道时序攻击很重要。在资源受限的FPGA上,它仅占用165个Slice,却能达到1.86 Gb/s的吞吐量,效率很高。
- EdDSA (Ed25519) 硬件加速器:用于数字签名生成与验证。EdDSA算法具有确定性签名、常数时间执行和签名短小精悍的优点,非常适合嵌入式场景。该加速器采用扩展投影坐标来避免耗时的模逆运算,并通过流水线化和全DSP利用,在较低频率下实现了较高的吞吐量,同时保证了抗侧信道攻击的特性。
这些模块并非独立工作,而是在Boot ROM的微码控制下协同完成安全启动和身份派生流程。所有密码学操作都在硬件中完成,速度快、功耗低,且避免了软件实现可能带来的侧信道漏洞。
3.2 安全启动流程的强化
基于Keystone框架原有的三阶段启动(Boot ROM -> OpenSBI/SM -> Linux),本项目进行了关键加固:
- 不可变的信任根:Boot ROM是只读的,其代码和内置的验证公钥无法被修改,这是所有信任的起点。
- 逐级签名验证:Boot ROM使用其内置的Ed25519公钥验证OpenSBI(集成SM)的签名。验证通过后,控制权移交。OpenSBI/SM在启动内核前,使用它自己的密钥验证Linux内核的签名。这个过程可以继续延伸到内核模块和用户态应用(例如利用Linux IMA)。
- 强制与可选验证:考虑到性能,在Boot ROM中强制验证第一级可变代码(SSBL)。对于操作系统及更上层的验证,则作为可选策略,由固件或软件供应商决定是否启用,以平衡安全与灵活性。
3.3 DICE信任链的软件扩展
Boot ROM完成了Layer 0的身份派生后,将CDI_L0和对应的别名密钥证书传递给Keystone安全监控器。SM作为DICE Layer 1,需要承担起为上层应用(Enclave)派生身份的责任。
我们对Keystone SM进行了扩展,增加了以下关键功能:
- CDI管理:SM安全地保管接收到的CDI_L0,并以此为基础,为每个创建的Enclave派生独立的CDI。派生的方法是:CDI_Enclave = KDF(CDI_L0, Hash(Enclave_Code))。每个Enclave的代码哈希值不同,其CDI也完全不同。
- 密钥生成与服务:Enclave自身不直接持有或生成密钥。当Enclave需要密钥对(例如用于远程证明)时,它通过自定义的SBI调用(如
create_keypair())向SM发起请求。SM在内部使用该Enclave的CDI生成密钥对,并将公钥证书返回给Enclave。私钥永远不出SM的保护范围。 - 密码学操作代理:Enclave的签名、验证等操作,也通过SBI调用(如
do_crypto_op())由SM内的硬件加速器代劳,Enclave只需提供待处理的数据。
这样,每个Enclave的身份都与其代码严格绑定,且私钥材料得到了SM级别的强力隔离。即使某个Enclave被攻破,攻击者也无法获取其他Enclave的密钥或篡改SM的身份派生逻辑。
4. 设备身份的全生命周期管理
一个健壮的身份系统不能只解决“出生”问题,还要管理好身份的“一生”。本项目设计了一套涵盖生成、供应、运行、更新和撤销的完整生命周期管理方案。
4.1 安全供应与个性化
首次供应发生在受控的制造环境中,流程如下:
- 设备首次上电,Boot ROM检测到无有效证书,进入“个性化模式”。
- 设备内部通过PUF生成一个随机种子(UDS),并据此生成Ed25519的DRK密钥对。私钥永不离开芯片。
- 设备通过一个安全的、TLS保护的以太网连接(仅使用Boot ROM中预置的制造商公钥进行认证)连接到制造商供应服务器。
- 设备将DRK的公钥以及PUF的辅助数据、挑战掩码打包成证书签名请求发送给服务器。
- 制造商CA验证请求后,为这个DRK公钥签发证书,并将证书和辅助数据等安全元数据写入设备的SD卡特定分区。
- 设备重启,利用SD卡中的元数据成功重建DRK,并通过证书验证,进入正常操作模式。
这个过程确保了制造商可以为设备签发证书,却永远不知道设备的私钥是什么,实现了“制造商未知”的身份。
4.2 运行时的证明与认证
在运行阶段,设备可以利用其DICE派生出的密钥进行远程证明。当外部验证者(如云服务)要求证明时,设备可以提供一条证书链:Enclave证书<-SM (Layer 1) 证书<-Boot ROM (Layer 0) 证书<-设备根证书 (DRK)
验证者可以逐级验证签名,并检查每个证书中的DiceTcbInfo扩展字段,该字段包含了对应软件组件的度量值。通过比对度量值与预期值,验证者不仅能确认设备身份合法,还能确信设备正在运行未经篡改的、预期的软件栈。这使得物联网设备与云端的MQTT连接、工业设备与SCADA系统的通信,都能建立在硬件根植的可验证信任之上。
4.3 身份的更新与撤销
长期运行的设备面临证书过期、密钥泄露或算法过时(如后量子密码时代来临)的问题。本架构支持远程身份更新,而无需更换硬件:
- 设备制造商向设备推送一个经过安全启动验证的“引导固件”。
- 该固件引导设备重新执行PUF注册流程(生成新的随机种子和辅助数据),并由此派生出一对新的DRK。
- 设备通过标准的EST协议,使用当前的(即将过期的)证书认证TLS会话,向制造商的EST服务器发送新的CSR。
- 服务器验证后,签发新的证书并下发给设备。
- 设备用新证书和元数据更新SD卡,重启后即使用新身份运行。
对于密钥泄露的设备,制造商可以通过OCSP或CRL立即撤销其旧证书。由于新身份与旧身份基于不同的PUF响应(新随机种子)派生,两者毫无关联,因此被撤销的设备无法通过更新流程“洗白”,必须经过授权的重新供应流程。
实操心得:身份更新流程中最关键的一步是确保“引导固件”的来源和完整性绝对可信,必须通过现有安全启动链进行验证。否则,攻击者可能诱骗设备执行恶意更新流程。在实际部署中,更新服务器的访问控制和安全审计至关重要。
5. 安全分析与性能评估
任何安全方案都不能纸上谈兵,必须经过严格的安全假设分析和实际的性能测试。
5.1 威胁模型与应对措施
项目设定了清晰的威胁模型,并针对性地部署了缓解机制:
- 物理攻击者:能接触设备外部接口,但无法直接探测或篡改硅片内部(如PUF电路)。应对:密钥不在NVM中存储,仅在启动时于芯片内部重建;总线加密;关键接口禁用。
- REE软件攻击者:控制了富执行环境(如Linux内核)。应对:通过安全启动阻止其加载恶意固件;通过PMP隔离阻止其访问HRoT区域和Enclave内存;其无法获取UDS或DRK私钥。
- TEE软件攻击者:试图利用安全监控器或Enclave中的漏洞。应对:SM代码被安全启动验证;Enclave间通过SM强制隔离;即使攻破一个Enclave,也无法获取其他Enclave的密钥或SM的CDI。
- 侧信道攻击者:尝试通过时序、功耗等分析提取密钥。应对:所有密码学操作使用硬件加速器并确保常数时间执行;减少软件处理敏感数据的环节。
- 身份生命周期攻击者:在供应、更新阶段进行攻击。应对:供应过程在安全信道中进行,且设备私钥不离开芯片;更新需要旧证书认证,且新身份与旧身份无关联。
5.2 实际攻击测试验证
在SPIRS平台上进行的实际测试验证了架构的有效性:
- 安全启动:修改SD卡上的固件签名或公钥,系统均能正确拒绝启动,只有签名完全正确的固件才能运行。
- 身份供应:尝试重放供应数据包或篡改辅助数据,设备均能识别并拒绝,无法完成非法供应。
- 密钥隔离:
- 尝试从REE或Enclave中直接读取PUF寄存器或Boot ROM的DICE逻辑区域,由于PMP配置,访问被阻止,产生错误。
- 尝试在SM或Enclave中重新执行DRK生成流程,由于Boot ROM区域被设置为不可执行,操作失败。
- 验证了在Boot ROM向SM移交控制权后,敏感数据区域已被清零。
这些测试证实了硬件隔离和清零机制的有效性,确保了根秘密的机密性。
5.3 性能开销评估
对于资源受限的物联网设备,性能开销必须极小:
- 启动时间:在完整的Linux启动流程中,引入PUF重建、安全启动验证和DICE初始化所带来的额外开销小于总启动时间的1%。主要时间消耗在从SD卡加载数据上。
- 密钥与证书生成:在SM内为一个Enclave生成密钥对并签发证书,平均耗时约60毫秒。Enclave通过SBI调用请求该服务所产生的上下文切换开销约为10%,这在安全增益面前是可接受的。
- 供应协议延迟:首次供应过程平均需要约30分钟,其中99%的时间花在PUF注册阶段(需要多次采样以筛选稳定比特)。这是一个一次性的、在工厂内完成的操作,对于设备整个生命周期而言是可接受的。后续的远程更新流程不包含PUF注册,会快得多。
评估结果表明,该架构在提供强大硬件级安全的同时,对设备运行时性能的影响微乎其微,完全适用于对功耗和实时性有要求的物联网场景。
6. 对比、局限与未来展望
6.1 与现有方案的对比
将本项目与业界知名方案对比,可以更清楚其定位:
- OpenTitan / Caliptra:功能全面的独立安全芯片/模块,提供强大的安全功能,但设计复杂、成本高,通常作为外挂或大型SoC的IP,不适合超低功耗、极小面积的物联网节点。
- Rolling DICE:纯软件的轻量级DICE实现,部署灵活,但缺乏硬件信任根,无法抵御物理攻击或针对持久存储密钥的提取。
- Sancus / Sanctum:学术上的轻量级TEE方案,提供隔离能力。Sanctum也使用了PUF,但未实现标准化的DICE分层证明架构。
本项目的独特价值在于:它取两者之长,将硬件PUF信任根与标准DICE架构深度集成到主SoC的Boot ROM中,实现了“内置式”的轻量级HRoT。它不像OpenTitan那样“重”,又比纯软件方案“根”更硬,在成本、功耗和安全性之间取得了出色的平衡,非常适合那些需要强安全但资源受限的“中间地带”物联网设备。
6.2 实践中的考量与局限
在实际部署中,工程师需要关注以下几点:
- PUF的长期稳定性:虽然辅助数据算法能纠正一定程度的比特漂移,但极端环境变化或芯片老化可能超出纠错能力。本架构采用“故障-安全”设计:一旦PUF无法重建出正确的UDS,DRK验证失败,安全启动过程直接中止,设备变砖。这避免了静默的身份失效,但要求供应链有设备回收和重新供应的机制。未来可以研究更鲁棒的辅助数据算法或环境自适应校准技术。
- 加密算法敏捷性:当前Boot ROM中的密码学算法(SHA-2, Ed25519)是硬编码的。未来若需升级到抗量子算法或更先进的算法,需要更新Boot ROM,这在一次性编程的ROM中无法实现。一个可行的演进方向是引入一个可更新的、经过签名的“启动策略”描述符,由Boot ROM验证后决定使用何种算法套件。
- 证明协议的集成:目前架构生成了标准的DICE证书链,但如何将这些证明证据无缝集成到应用层协议(如MQTT over TLS、CoAP with OSCORE)中,需要进一步的协议设计工作,让云端服务能够方便地验证这些证据。
6.3 未来发展方向
这个架构为物联网安全开启了几扇新的大门:
- 抗量子迁移:当量子计算机威胁到来时,可以将Boot ROM中的EdDSA模块替换或升级为支持后量子密码算法的硬件加速器,并通过上述“启动策略”机制进行切换,保护长期部署的设备。
- 上下文感知的访问控制:远程验证者不仅可以验证设备身份和软件完整性,还可以基于DICE证书中携带的软件度量值,做出更细粒度的访问控制决策。例如,只允许运行特定版本固件的设备访问某些敏感API。
- 供应链溯源:每个设备的身份都源自其独特的硅片指纹,这为供应链追溯提供了天然工具。集成商可以验证设备是否来自授权的制造商,杜绝伪造硬件流入系统。
这个基于PUF和DICE的硬件可信根架构,不仅仅是一个学术原型,它展示了一条切实可行的路径,为亿万物联网设备构建从硅片开始、贯穿生命周期的可信身份。它将曾经专属于高端服务器的安全能力,带入了资源受限的嵌入式世界。在实际项目中,当你需要为下一代智能设备设计安全启动和身份认证方案时,这个将硬件唯一性、标准化证明架构和完整生命周期管理深度融合的思路,无疑提供了一个极具参考价值的范本。
