[论文解读] The Arduino as a Hardware Random-Number Generator
本文通过统计测试和种子恢复攻击评估了Arduino Duemilanove作为真正硬件随机数生成器(TRNG)的性能。尽管Arduino手册声称未连接的模拟引脚会产生‘相当随机’的值,但本研究证明,其噪声具有高度可预测性且熵值极低,因此不适合用于密码学应用。作者实现了一款种子查找程序,平均在2秒内即可恢复PRNG种子,证明该系统在密码学上是脆弱的。
Cheap micro-controllers, such as the Arduino or other controllers based on the Atmel AVR CPUs are being deployed in a wide variety of projects, ranging from sensors networks to robotic submarines. In this paper, we investigate the feasibility of using the Arduino as a true random number generator (TRNG). The Arduino Reference Manual recommends using it to seed a pseudo random number generator (PRNG) due to its ability to read random atmospheric noise from its analog pins. This is an enticing application since true bits of entropy are hard to come by. Unfortunately, we show by statistical methods that the atmospheric noise of an Arduino is largely predictable in a variety of settings, and is thus a weak source of entropy. We explore various methods to extract true randomness from the micro-controller and conclude that it should not be used to produce randomness from its analog pins.
研究动机与目标
- 评估仅使用Arduino Duemilanove的模拟引脚而不依赖额外硬件,是否可行作为真正随机数生成器(TRNG)。
- 挑战Arduino参考手册中关于未连接模拟引脚会产生‘相当随机’值的声明。
- 开发并测试用于评估Arduino生成序列随机性的统计方法。
- 构建并测试一款程序,能够高效恢复使用analogRead值作为种子初始化avr-libc PRNG时的种子。
- 确定Arduino是否可作为通用且密码学安全的随机数源。
提出的方法
- 使用Python实现标准统计测试——单比特测试、扑克测试和游程测试,以评估Arduino输出的随机性。
- 从Arduino Duemilanove的analogRead函数在未连接引脚上的实际测量数据中收集经验数据,构建输出值的概率分布。
- 设计一种种子查找算法,迭代测试所有可能的analogRead值(0–1023)作为avr-libc PRNG的种子,模拟序列生成并检查是否与观测到的输出匹配。
- 通过优先测试概率分布中出现频率较高的analogRead值,优化种子查找算法,提升效率。
- 使用双向队列(deque)维护PRNG输出的滑动窗口,实现生成序列的高效比较。
- 使用5,000组测试序列评估性能,每组序列使用从收集数据中随机选择的种子,测量平均恢复时间。
实验结果
研究问题
- RQ1Arduino Duemilanove能否仅通过其模拟引脚生成密码学安全的随机数?
- RQ2未连接引脚的analogRead输出是否真正随机,还是因环境或硬件因素而具有可预测性?
- RQ3攻击者能否高效恢复使用analogRead值作为种子初始化avr-libc PRNG时的种子?
- RQ4Arduino生成序列的统计行为是否通过标准随机性测试?
- RQ5能否仅使用Arduino内置组件构建一个通用且低成本的TRNG?
主要发现
- 未连接Arduino引脚的analogRead值并非随机;其表现出强烈的可预测性且熵值极低,与Arduino手册的声明相矛盾。
- 统计测试将所有由analogRead值生成的序列均判定为非随机,表明其随机性质量极差。
- 种子查找程序在5,000次测试案例中100%成功恢复PRNG种子,平均恢复时间仅为1.6秒(在标准台式计算机上)。
- 通过优先测试概率分布中出现频率较高的analogRead值,显著提升了程序效率。
- Twoleastsign-RAND算法生成的序列通过了所有统计测试,但仅在特定硬件上成立,表明其不具备通用性且缺乏普遍安全性。
- 本研究结论为:由于熵值不足且高度可预测,Arduino Duemilanove不适合作为密码学TRNG应用的设备。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。