不管是生成随机器件地址、强化加密算法还是创建独立产品密钥,可靠地生成随机数字都变得日益重要。这些随机数字对于日常嵌入式系统特别有用,比如车库门接收机必须一一对应地正确识别远程控制的随机数字,以防止非授权访问。为了生成随机数字,开发人员可以使用高级 16 位 MCU 确保将所有信号都控制在 MCU 内部,而且与昂贵的模拟硬件相比,这种解决方案成本更低、安全性也更高。
双时钟芯片架构可以支持 TI 超低功耗MCU MSP430 的随机数字生成能力。超低频振荡器 (VLO) 与数控振荡器 (DCO) 是两个独立的时钟系统,可以利用二者间的计时差生成随机位流。一个 VLO 时钟周期中的DCO 时钟数量大致相同。然而,由于 VLO 与 DCO 时钟源彼此独立变化,无法预测生成的数字是奇数还是偶数,因此这种器件更安全。更重要的是,即使在前面生成的数字为已知的情况下,也不可能预测之后的结果。
由于 VLO 的灵活性很高,其速度可降至 DCO 以下。然后可以将定时器配置为升序计数,将 DCO 作为源时钟,从而触发对下一次 VLO 从低到高升序的采集。这次采集将记录一个 VLO 时钟周期中的 DCO 时钟周期数。由于时钟源的变化,每次采集将导致单位 VLO 周期内的 DCO 时钟数略有差异。正是这种差异才产生了随机数字。例如,为了生成 16 位随机数字,需要进行 16 次采集,每个被采集数字的最低有效字节转换成存储器中的一个字。
设计人员可以使用定时器外设收集随机 LSB,通过在每个采集周期中确保 CPU 处于关闭状态,可以实现超低功耗。只需要短暂使用 CPU,即可将 LSB 转换为存储单元。
尽管上述方法是随机数字的主要来源,但是,MSP430 时钟系统还是允许设计人员结合使用反馈法。在要求进行 FIPS 140-2 测试的情况下,这些方法可提高算法性能。
第一个反馈机制是,在每个采样位后使 DCO 略微加速。时钟控制寄存器在每个位后加上数字 5。这种相加或额外变化导致在每个环路时 DCO 的速度均高于 VLO。虽然可以使用任何数字,但数字 5 可以产生足够大的阶跃变化,以至于 DCO 与 VLO 之间发生很大的差异。
另外,每次转换 LSB 时,两个以前采样的随机位被按位加至时钟控制寄存器的除法器位。这些位在到达计时器之前将控制用于 VLO 的除法器,同时还改变了计时器测定的VLO 与 DCO 之间的关系。
最后,每个得出的位实际上是 5 个环路“多数原则”的结果。如前所述,每个环路都从 CCR 生成其自身的 LSB,但 5 的“多数原则”用于选择最终位。
通过这种方式,MSP430 MCU 能够以极低的功耗生成随机位的连续流。这种位流可以用于创建随机数字;如果不需要对运行的应用时钟架构进行修改,将针对伪随机数字生成器 (PRNG) 生成初始种子。
借助该技术,就可以生成通过 FIPS 140-2 随机性测试的位流。这就是说,该技术可广泛用于需要生成随机数字的各种应用领域。特别是随着无线技术的推广,这种随机数字生成技术将有很好的前景。另外,由于该技术采用目前的 MSP430 MCU 架构内部信号,具有成本低与安全性高等优势。
作者介绍
Lane Westlund 德州仪器德国弗赖辛分公司的 MSP430 工具软件工程师。他自 2003年就从事与 MSP430 有关的工作,拥有罗彻斯特理工学院理学士学位。