首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >环形振荡器:真实随机数发生器(TRNG)与物理不可破函数(PUF)

环形振荡器:真实随机数发生器(TRNG)与物理不可破函数(PUF)
EN

Security用户
提问于 2015-02-17 14:02:04
回答 2查看 3.6K关注 0票数 5

环形振荡器可以用于硬件真随机数发生器 (TRNG),也可以用于物理不可破函数 (PUFs)。

这些设计似乎相当相似:

基于环形振荡器的TRNG:

环形振荡器PUF:

PUF的思想是,它为每个挑战创建相同的预定义(但似乎是随机的)响应,而TRNG的思想是它创建真正的随机输出。

我的问题是:

  • 如何才能使环形振荡器成为这两个功能的主要元素?一种似乎依赖于可以预测振荡器状态的事实,而另一种则依赖于相反的事实。这在我看来是自相矛盾的。
  • 这与异或有关吗?在TRNG的情况下,XOR (半)随机组合输出,而PUF中的多路复用器调节输出?还是与振荡器的运行时间有关?
  • 如果是这样,环振子TRNG真的是随机的吗?
EN

回答 2

Security用户

回答已采纳

发布于 2015-06-16 13:19:00

在TRNG结构中,环没有一个共同的启用信号,它们同步的唯一时间点是启动。然后他们自由地跑,每个人都有自己的速度。这本身并不会产生很大的随机性,但这确实会在触发器输入中产生许多故障。希望通过元稳定性创造出更多的随机性。对于PUF,有一个共同的启用,因此环振荡器是相互竞争与一个共同的同步点在开始。挑战输入选择正在竞争的实例。对于给定的挑战和给定的芯片,竞赛的结果总是有相同的结果,因为每个环的精确频率取决于每个阶段的精确物理特性。

这与RO的运行时间无关,这只是输出的使用方式,从而产生了不同的效果。您甚至可以删除PUF中的启用信号,这仍然有效,因为重要的是频率上的差异,而对于TRNG来说,这是采样时的实际输出值。

TRNG可能确实是随机的,但要正确(获得较高的数据速率)是很棘手的。其他基于异步环或混沌映射的构造是更安全的选择。

票数 4
EN

Security用户

发布于 2017-01-08 04:05:13

PUF测量振荡器频率,这取决于器件制造过程中原子的排列方式。RNG利用了振荡器频率和相位在较短时间内的随机性。

的随机性来自于

任何定时装置(钟摆、石英谐振器、RC振荡器等)有一些固有的“噪音”或“抖动”,这是众所周知的设计师。如果我们建立一个输出是脉冲流的振荡器,那么脉冲间的时间是不完全一致的。这种噪声的性质和行为类似于较为常见的噪声类型,而且也是随机的。

在环形振荡器TRNG中,每个振荡器相对于采样时钟的相位随时间漂移。大部分漂移是由于振荡器和采样频率的不同造成的,但也有一些是由抖动引起的。

换句话说,想象一个具有启用输入的单个环形振荡器。在经过一段时间的T后,它被打开,然后进行采样。每个周期持续(1/f)+jitter。经过很长一段时间,大量的抖动值被添加到相位中。输出可以是相同概率的1或0。不幸的是,对于高斯抖动,N抖动值加在一起的标准偏差只有N^0.5的一倍。

RNGs有效地捕获随机性

该方案效率低,每比特需要多个抖动样本。相分布必须是宽到几乎均匀的。对N环振荡器的输出进行采样,XORed可以产生比在F/N上采样相同的N环振荡器更多的随机比特。有一些统计分析显示了为什么,但它可以直观地理解,通过考虑机会的数量,抖动值必须移动一个振子的相位刚好足以引起一些翻转。过采样每个振荡器产生大量的相关比特。Xoring将它们组合在一起,形成一个白化输出流。

PUF减少随机性

的影响

PUFs的设计是为了减少随机噪声源对其结果的影响。理想的PUF只取决于原子在器件制造过程中的着陆方式。您所展示的PUF设计并不是“预测”某个时候T的环形振荡器的输出值。它计数输出脉冲。输出大致为:"Is the frequency of the first selected ring oscillator higher than that of the second selected ring oscillator?"。对于相当长的运行时间,这不会受到抖动值的显著影响。抖动效应以0.5次方为尺度,计数数呈线性增加。较长的运行时间收敛到一个完美的频率比较。对于频率非常接近的振荡器,抖动在结果中起着很大的作用。这就是为什么在给定的设备上,一些PUF挑战值可能没有明确的10答案。

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/81843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档