从RO-PUF到TERO-PUF:利用瞬态振荡次数构建抗锁定的硬件安全指纹
2026/5/28 15:25:31 网站建设 项目流程

1. 项目概述:从RO-PUF的困境到TERO-PUF的破局

在硬件安全领域,物理不可克隆函数(PUF)一直扮演着“硅指纹”的角色。它利用芯片制造过程中无法复制的微观工艺偏差,为每一颗芯片生成一个独一无二的身份标识。这个标识不是存储在非易失性存储器中的一串数据,而是从硅片物理特性中“测量”出来的,因此理论上无法被克隆或预测。在物联网设备认证、防伪溯源、安全密钥生成等场景中,PUF提供了硬件根信任的基石。然而,理想很丰满,现实却往往伴随着挑战。在众多PUF实现方案中,基于环形振荡器(RO-PUF)的结构因其设计相对简单、在FPGA上易于实现且统计特性良好,一度被认为是ASIC和FPGA平台的理想选择。但一个致命的弱点限制了它的广泛应用:锁定现象。

锁定现象,简单来说,就是当多个环形振荡器在物理上靠近或在特定环境(如电源电压扰动、电磁干扰)下,它们的振荡频率会趋于同步。想象一下,两个原本各自以不同节奏摇摆的钟摆,在某种外力影响下,逐渐变成了整齐划一的摆动。对于RO-PUF而言,其唯一性正是依赖于每个振荡器频率的微小差异。一旦发生锁定,这些差异消失,PUF的响应就失去了唯一性,变得可预测。更严重的是,攻击者可以通过电磁故障注入(EMFI)等手段主动诱发锁定,或者通过侧信道分析探测振荡频率,从而破解PUF。这就像给每个保险箱配了一把独一无二的锁,但攻击者却发现了一种能让所有锁芯共振并自动打开的声波。

正是在这样的背景下,一种名为瞬态效应环形振荡器(TERO)的结构进入了研究者的视野。TERO最初被用于真随机数发生器(TRNG),它利用的是电路在特定激励下产生的短暂振荡现象,而非稳定的持续振荡。这项工作的核心创新在于,他们敏锐地意识到,TERO这种“昙花一现”的振荡特性,其振荡次数(而非频率)同样由工艺偏差决定,并且对锁定现象免疫。因为锁定影响的是频率的同步,而TERO-PUF根本不关心频率,它只关心在激励信号触发后,环路能振荡多少次才归于稳定。基于此,他们设计并实现了TERO-PUF。这项工作的价值在于,它没有试图去加固脆弱的RO-PUF,而是另辟蹊径,选择了一个对锁定攻击“天然免疫”的物理效应作为熵源,为高安全需求的FPGA应用提供了一个新的、更稳健的硬件身份认证方案。如果你正在为嵌入式设备寻找一个难以攻破的硬件身份标识,或者对RO-PUF的安全性心存疑虑,那么理解TERO-PUF的原理与实现,将为你打开一扇新的大门。

2. TERO-PUF的核心原理:为何振荡次数比频率更可靠?

要理解TERO-PUF为何能抗锁定,我们必须先深入其核心——瞬态效应环形振荡器(TERO)单元的工作原理。这与我们熟悉的环形振荡器(RO)有本质区别。

2.1 TERO单元:一场精心策划的“短暂混乱”

一个基本的TERO单元结构并不复杂,其核心是一个由两个与门(AND)和一个偶数个反相器(通常是两个)构成的环路,整体形成了一个具有置位(S)和复位(R)功能的SR触发器结构。关键在于其激励方式:一个外部的ctrl控制信号同时连接到S和R端。

ctrl信号从低电平跳变到高电平(上升沿)时,一场“混乱”在环路中被触发。由于环路中存在正反馈和路径延迟的微小不对称性(记为Td),环路不会立即稳定在某个逻辑状态,而是会进入一种“振荡性亚稳态”。此时,输出信号会在‘0’和‘1’之间快速振荡。但这种振荡不是永久的。由于环路固有的不对称性(Td),振荡能量会逐渐耗散,通常在几十到几百个周期后,振荡停止,输出会稳定在一个确定的逻辑电平(‘0’或‘1’)。

注意:这里的关键参数是振荡次数最终稳态。两者都受到制造工艺偏差的影响:路径延迟的微小差异(即Td的大小)直接决定了振荡能持续多久。Td越小,不对称性越弱,振荡次数可能越多,甚至在某些极端对称的情况下,振荡可能无法停止(成为永久振荡)。而最终稳定在0还是1,也由触发时刻环路的状态偏差决定。

2.2 从TRNG到PUF:熵源提取的视角转换

TERO最初在TRNG中的应用,看中的是其振荡次数的随机性。由于热噪声等随机因素会影响每次触发时的初始条件,因此即使同一个TERO单元,其每次产生的振荡次数也会有波动。这个波动的低位比特(LSB)具有很好的随机性,适合用于生成随机数。

而TERO-PUF的智慧在于,它提取的是振荡次数的稳定性部分。虽然单次测量有噪声,但对同一个TERO单元进行大量(例如218次)测量后,其振荡次数的平均值是一个极其稳定的值。这个平均值是由该单元固有的、由工艺偏差决定的物理特性(主要是Td)所主导的。不同TERO单元之间的工艺偏差不同,因此它们的平均振荡次数也不同。这就构成了PUF响应的熵源。

2.3 抗锁定能力的根源:频率无关性

锁定现象的本质是频率耦合。当两个RO距离很近,或通过电源、衬底等途径产生耦合时,一个振荡器的电磁场会影响另一个,最终迫使它们的振荡频率同步。RO-PUF直接比较频率,因此锁定对其是毁灭性的。

TERO-PUF完全绕开了频率。考虑以下两点:

  1. 测量对象不同:TERO-PUF测量的是在固定宽度(由ctrl信号高电平持续时间决定)的激励窗口内,振荡发生的次数。它不关心每次振荡的周期(即频率)是多少。即使两个TERO单元因为耦合而频率同步,只要它们的Td(决定振荡衰减速度的参数)不同,它们在同一个时间窗口内完成的振荡次数仍然会不同。
  2. 激励方式不同:TERO是瞬态激励。ctrl信号是一个脉冲,振荡只发生在一段短暂的时间内。而RO是持续振荡。瞬态工作模式使得TERO单元大部分时间处于静态,相互干扰的机会远小于始终活跃的RO。

因此,攻击者即使通过电磁攻击探测到TERO单元在振荡期间的频率,他也无法得知振荡的总次数,更无法推断出决定平均振荡次数的关键参数Td。这从根本上切断了通过频率分析攻击PUF的路径。

2.4 差分结构:对抗环境噪声的铠甲

工艺偏差是我们需要的熵源,而环境噪声(如电压波动、温度变化)则是我们需要抑制的干扰。TERO-PUF采用了差分结构来提升稳定性。

其基本思想不是直接使用一个TERO单元的绝对振荡次数,而是使用一对TERO单元振荡次数的差值。具体架构中(见图3),多个TERO单元成对组合。每对单元的输出分别驱动一个计数器,记录振荡次数。然后,将两个计数器的值相减。

这样做的妙处在于,环境噪声(如电源电压的轻微波动)通常会同时影响同一芯片上相邻的两个TERO单元,使它们的振荡次数同向变化(同时增加或减少)。当计算差值时,这部分共模噪声被大幅抵消了。而工艺偏差导致的固有差异,则作为差模信号被保留下来。这种结构显著提升了PUF响应在不同环境条件下的可重复性(即降低了 Intra-device variation)。

3. TERO-PUF的FPGA实现与设计细节

理论需要实践的检验。原文作者在9块Altera DE1开发板(搭载Cyclone II EP2C20 FPGA)上实现了TERO-PUF,并进行了详尽的测试。我们将深入拆解其实现方案,���补充作为实践者必须关注的细节。

3.1 硬件架构解析

整个TERO-PUF系统可以分解为几个关键模块:

  1. TERO单元阵列:这是熵源。文中使用了64个基础的TERO环路。每个环路占用一个FPGA的逻辑阵列块(LAB)。选择LAB作为布局单位是为了保证布局的一致性,便于在不同位置(Placement)实现相同的设计以测试稳定性。
  2. 控制与计数逻辑:每个TERO单元(或每对单元)配有一个8位异步计数器。当ctrl信号为高时,TERO单元振荡,计数器对振荡边沿进行计数。ctrl信号由全局时钟分频产生,文中测试时使用了50MHz和390kHz等多种频率,以观察不同激励条件下的行为。
  3. 均值计算与熵提取:这是核心处理单元。为了得到稳定的平均值,系统对每个TERO单元进行了大量(218次)测量。原文使用了一个26位的累加器来累加218次测量的计数值,然后通过一个18位的移位寄存器来实现除以218的操作(近似取平均值)。实际上,在FPGA中,更常见的做法是使用一个状态机控制多次测量,并将累加结果右移适当的位数(因为218接近256,右移8位相当于除以256,是硬件友好的操作)。
  4. 差分与响应生成:计算每对TERO单元平均振荡次数的差值。这个差值是一个多位数(例如8位)。并非所有比特都稳定可用。作者通过统计分析发现,差值结果的高位比特(MSB)非常稳定,而低位比特(LSB)则受噪声影响较大。因此,PUF的最终响应(即芯片ID)由每对单元差值结果的若干个最高有效位拼接而成。例如,取每个差值的最高2位,64个单元组成32对,即可生成一个64位的响应。文中实验了取2、3、4位,分别得到126、189、252位的响应。

3.2 实操要点与参数选择

如果你要在自己的FPGA项目(如Xilinx 7系列或Intel Cyclone 10系列)中尝试实现TERO-PUF,以下几点至关重要:

1. TERO单元的实现与布局约束:TERO单元的结构简单,但实现时的布局布线对性能影响巨大。你必须为每个TERO单元及其对应的计数器施加严格的布局约束。

  • 实践建议:在Xilinx Vivado或Intel Quartus中,使用PBLOCKLogicLock区域约束,将每个“TERO单元+计数器”的组合锁定在FPGA上一个较小的、独立的区域(例如,一个CLB/Slice或一个LAB)。这能最大限度地减少布线延迟的随机性对振荡行为的影响,确保不同次实现之间的一致性。同时,要确保用于生成ctrl信号的时钟网络到每个TERO单元的延迟尽可能一致,避免因触发时间不同引入额外偏差。

2. 计数器位宽与测量次数的权衡:原文使用8位计数器,测量218次。这基于一个观察:振荡次数不超过255次。你需要根据你的TERO设计(反相器链长度、器件速度)和ctrl脉冲宽度来确定合适的计数器位宽。

  • 设计步骤: a. 先用一个较宽的计数器(如16位)进行初步测试,观察在设定的ctrl脉冲宽度下,最大振荡次数是多少。 b. 根据最大值确定计数器的安全位宽(例如,最大值500,则10位计数器足够)。 c. 测量次数的选择:次数越多,均值越稳定,但生成响应的时间越长。218次是一个折衷。你可以通过计算响应比特的稳定度(Intra-device variation)与测量次数的关系曲线,来为你的应用选择一个合适的值。通常,128、256这些2的幂次方数在硬件上更容易处理。

3.ctrl信号频率与脉冲宽度的选择:ctrl信号的频率决定了PUF响应的生成速度。脉冲宽度必须足够长,以容纳TERO单元完成其振荡过程并归于稳定。

  • 调试方法:通过嵌入式逻辑分析仪(如Xilinx的ILA或Intel的SignalTap)捕获TERO单元的输出信号。逐步增加ctrl脉冲的宽度,观察振荡包络。脉冲宽度应设置为最慢TERO单元振荡完全停止所需时间的1.5到2倍,留有充足余量。频率则根据脉冲宽度和系统需求确定。

4. 响应比特选取策略:不能盲目地使用差值结果的所有比特。必须进行片上特征化

  • 操作流程: a. 在固定环境(常温常压)下,对同一FPGA的同一配置,进行数百次PUF响应读取。 b. 对每一对TERO单元差值结果的每一个比特位,计算其在这数百次读取中发生翻转(0变1或1变0)的概率。 c. 设定一个稳定性阈值(例如,翻转概率 < 0.5%)。选取所有低于该阈值的比特位作为有效PUF响应比特。通常,高位比特更稳定。原文中,最高2位非常稳定,第3、4位的稳定性也可接受但需要更强的纠错。

3.3 资源评估与优化方向

TERO-PUF的主要开销在于大量的计数器和累加逻辑。对于64个TERO单元,每个单元需要一个计数器,每对单元需要做减法和比特选取逻辑。这在资源有限的FPGA上是一个挑战。

优化思路:

  1. 时分复用:不必为所有TERO单元同时配备计数器。可以使用一个或少数几个高速计数器,通过多路选择器(MUX)轮流连接到各个TERO单元的输出进行计数。这能大幅减少寄存器资源的使用,但会延长整体响应生成时间。
  2. 压缩测量:不一定需要218次测量来求精确均值。可以探索更高效的统计算法,例如计算中位数或使用过零检测等简化方法,在保证足够稳定性的前提下减少测量次数。
  3. 熵压缩:如果每对单元只能提供2个稳定比特,熵效率较低。可以研究更复杂的后处理电路,从多个单元的振荡数据中提取出更多稳定、独立的比特。

4. 性能表征与结果分析:数据说了算

论文中对TERO-PUF进行了全面的性能表征,主要围绕三个核心指标:偏置(Bias)、设备内差异(Intra-device variation,或称可靠性)和设备间差异(Inter-device variation,或称唯一性)。这些数据是评估一个PUF能否投入实用的关键。

4.1 关键性能指标解读

  1. 偏置(Bias):指PUF响应中‘0’和‘1’的比例。理想的PUF响应应该是完全随机的,即‘0’和‘1’各占50%,偏置为0.5。如果偏置严重偏离0.5,说明响应熵不足,容易被预测。TERO-PUF通过选择差值的高位比特,其偏置被控制在接近0.5的理想值。
  2. 设备内差异(可靠性):衡量同一芯片、同一PUF电路在相同条件下多次生成响应的一致性。通常用汉明距离(HD)的平均值表示。理想情况下,每次生成的响应应该完全相同,HD为0%。TERO-PUF的结果非常出色:
    • 126位ID:平均设备内HD为1.73%,即平均只有约2.2个比特会翻转。
    • 189位ID:平均设备内HD为2.07%。
    • 252位ID:平均设备内HD为2.75%。 这个水平意味着TERO-PUF具有很高的稳定性,为后续纠错留下了很小的负担。
  3. 设备间差异(唯一性):衡量不同芯片之间PUF响应的差异程度。理想情况下,任意两个芯片的响应应该像随机序列一样,有50%的比特不同。TERO-PUF的结果同样接近理想:
    • 126位ID:平均设备间HD为48.07%。
    • 189位ID:平均设备间HD为48.99%。
    • 252位ID:平均设备间HD为49.27%。 这表明TERO-PUF能很好地区分不同的芯片。

4.2 与RO-PUF的对比优势

表3���对比数据清晰地展示了TERO-PUF的竞争力。与RO-PUF相比:

  • 抗锁定:这是最根本的优势。TERO-PUF对锁定现象不敏感,而这是RO-PUF的阿克琉斯之踵。
  • 稳定性:TERO-PUF的设备内差异(~1.73%)优于许多传统的RO-PUF实现(通常在3%-6%或更高)。
  • 响应长度:通过简单的结构就能产生较长的响应位(126-252位),且唯一性良好。
  • 硬件复用潜力:同一个TERO硬件单元,其振荡次数的低位波动可用于TRNG,高位稳定值用于PUF。这为构建紧凑的“安全子系统”提供了可能。

4.3 实测中的挑战与应对

在实际FPGA测试中,你可能会遇到一些论文中未详尽描述但至关重要的问题:

挑战一:TERO单元的不稳定性。论文提到,约29%的TERO单元输出最终状态不稳定(持续振荡)。这对于想用最终稳态做PUF的方案是致命的,但TERO-PUF利用的是振荡次数,因此只要振荡能停止,就能使用。然而,如果某些单元在设定的ctrl脉冲宽度内永远不停止振荡,计数器会溢出。

  • 解决方案:在设计中加入“看门狗”机制。为计数器设置一个合理的上限值(略高于正常振荡次数的最大值)。当计数达到该上限时,强制终止计数,并标记该次测量无效,或在后续处理中剔除该单元的数据。

挑战二:环境变化的影响。虽然差分结构抑制了共模噪声,但极端温度或电压变化仍可能影响振荡特性。

  • 解决方案: a.片上校准:集成简单的温度/电压传感器。当检测到环境条件超出标定范围时,可以触发一个重校准流程,例如轻微调整ctrl脉冲宽度或采用一个预先存储的、针对该环境的轻微纠错偏移量。 b.自适应比特选择:在特征化阶段,不仅在常温常压下,也在高低温、高低压的 corner cases 下测试每个比特的稳定性。只选取在所有测试条件下都稳定的比特作为最终PUF响应。这会减少有效比特数,但能换来极高的环境鲁棒性。

挑战三:启动时间的瞬态效应。FPGA上电初期,电源和温度可能未完全稳定,此时读取的PUF响应可能会有较大波动。

  • 解决方案:在系统启动流程中,加入一个短暂的“预热”或“稳定等待期”(例如几十毫秒),再进行PUF响应读取。或者,采用多次读取取均值的方式作为最终的“注册”响应。

5. 从原型到产品:工程化考量与安全增强

将实验室的原型转化为可交付的产品,还需要跨越工程化的鸿沟。TERO-PUF也不例外,其较大的硬件开销和必要的纠错环节是必须面对的问题。

5.1 面积优化与系统集成

论文中坦承TERO-PUF的面积开销较大。在实际产品中,我们需要极致的优化。

  • 逻辑压缩:仔细分析图3中的架构,26位累加器和18位移位寄存器是面积大户。如果我们将218次测量固定,那么除以218的操作可以简化为乘以一个固定系数(1/218)的乘法,或者直接用比较器实现。例如,我们并不需要知道振荡次数的精确均值,只需要知道它是否高于某个阈值。可以设计一个电路,在218次测量中,统计振荡次数超过阈值N_th的次数。如果超过半数,则输出‘1’,否则输出‘0’。这可以用一个比较器和一个计数器实现,面积小得多。
  • 与系统共享资源:在SoC或复杂的FPGA设计中,PUF可能不是常开功能。可以考虑与系统中已有的计时器、计数器等模块共享硬件资源,在需要生成密钥或进行认证时临时配置成TERO-PUF模式。
  • 作为硬核IP:对于大规模量产芯片,可以将优化后的TERO-PUF设计成固定的硬件模块(Hard Macro),其面积和性能都是可预测和最优的。

5.2 纠错码(ECC)的必要性与选择

即使TERO-PUF的设备内差异低至1.73%,对于一个126位的响应,平均仍有约2个错误比特。在密码学应用中,密钥必须分毫不差。因此,必须引入纠错码。

  • 经典方案:模糊提取器(Fuzzy Extractor)。它通常包含两个阶段:1)纠错:使用如BCH码、重复码等,将可能有错的“模糊”响应R纠正为正确的“稳定”响应S。2)熵提取:使用哈希函数(如SHA-256)从S中提取出均匀分布的最终密钥K,并生成一个公开的帮助数据P(用于后续纠错)。
  • 针对TERO-PUF的优化:由于TERO-PUF的错误比特率较低且相对稳定,可以选择纠错能力适中但开销较小的ECC。例如,对于126位原始响应,可以将其分为若干块,每块使用轻量级的BCH码或重复码进行纠错。帮助数据P需要安全存储(或与芯片序列号绑定),但它不泄露关于密钥K的信息。

5.3 对抗建模攻击与物理攻击

任何PUF都可能面临建模攻击(通过大量挑战-响应对训练一个数学模型来模拟PUF)和物理攻击(探针、激光故障注入等)。

  • 对抗建模攻击:TERO-PUF的响应生成过程涉及模拟性质的振荡和计数,其输入输出关系比简单的仲裁器PUF等更复杂、非线性程度更高,这本身增加了建模难度。可以进一步在挑战-响应协议中引入非线性变换,例如,不是直接使用TERO单元的原始地址作为挑战,而是先通过一个PUF内部的哈希或置换网络来映射到实际被激活的单元对上。
  • 对抗物理攻击
    • 探测与成像:TERO单元在静态时功耗极低,仅在短暂激励期间活动,这增加了攻击者通过功耗分析或电磁探针定位其活动的难度。
    • 故障注入:针对TERO单元的故障注入(如激光、电磁脉冲)可能会改变其振荡行为。防御措施包括在TERO单元周围添加传感器网络(如环形振荡器传感器)检测环境异常,或在算法层面使用多次测量投票、完整性校验等机制。

5.4 应用场景展望

TERO-PUF凭借其抗锁定和高稳定性的特点,非常适合以下场景:

  1. 高安全嵌入式设备:如支付终端、汽车电子控制单元(ECU)、工业控制器等,需要抵抗物理攻击和恶劣环境。
  2. 物联网节点身份认证:为海量、低成本的物联网设备提供难以克隆的硬件ID,用于安全入网和设备管理。
  3. FPGA知识产权(IP)保护:将TERO-PUF生成的密钥与FPGA配置文件的加解密绑定,实现“一芯一密”的IP保护。
  4. 混合安全原语:利用TERO单元同时实现PUF和TRNG,为安全芯片提供一个紧凑的随机性与唯一性来源。

TERO-PUF的研究展示了一条清晰的路径:通过深入理解物理现象的本质弱点(如RO的锁定),并巧妙地利用另一种物理现象的特性(TERO的瞬态振荡次数)来规避它,从而设计出更健壮的安全原语。它的实现过程,从单元设计、差分结构、比特选取到性能表征,为硬件安全工程师提供了一个如何系统性地设计、评估和优化一个PUF的完整范例。尽管在面积和速度上还有优化空间,但其在安全性上的独特优势,使其在对抗日益复杂的物理攻击环境中,成为一个非常有价值的候选方案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询