在没有硬件RNG的设备上,熵的最佳来源是什么?
一些选项和陷阱随处可见:
发布于 2015-08-03 20:16:52
我见过的大多数适合密码的微控制器都有一个带有硬件RNG的变体。例如微芯片的PIC32系列。
但是,如果没有,则可以将一些传感器附加到ADC上。这将取决于您的环境,您可以使用什么样的传感器。它可以是任何东西,这是不容易操纵的(至少在LSB(s))。
然后,从ADC中提取LSB(s),或者更好地使用随机抽取器。您每隔多长时间取一次位数,一次能取多少位,取决于ADC、传感器和环境,以及您想达到的安全级别。
如果你能走得更远一点,除了你的微控制器,还有一些小的硬件电路,可以用来创造随机性。一个例子正在使用二极管的雪崩效应。
雪崩噪声是连接二极管在雪崩击穿开始时产生的噪声。当载流子在强电场的影响下获得足够的动能,通过与晶格中的原子碰撞而产生附加的电子空穴对时就会发生这种现象。如果这一过程碰巧溢出到雪崩效应,随机噪声尖峰可以观察到。
简而言之,我们可以使用带有一些外部电路的二极管来产生随机噪声尖峰。如果我们放大这个信号并把它传送给一个比较器,我们会得到一个随机的位串。
发布于 2017-08-22 14:20:40
我在这里做了一些实验:https://github.com/kuro68k/xrng
TL;DR使用Atmel XMEGA内部温度传感器的LSB和向ADC的VCC/10输入,然后通过CRC32算法进行白化,从而得到一个RNG,通过了NIST的测试,看起来很好。
https://crypto.stackexchange.com/questions/27318
复制相似问题