微控制器

MCU 产品

MCU 设计支持

入门

RGB LED 气氛灯光照明——营造温馨照明的 MSP430

使用MSP430内部时钟生成随机数——生成真随机数入门指南

Random Number Generation Using MSP430 Internal Clocks: “A How-To Guide For Generatng a Perfectly Random Number”

作者: TI公司 MSP430微控制器产品部 Lane Westlund

不管是生成随机器件地址、强化加密算法还是创建独立产品密钥,可靠地生成随机数都变得日益重要。这些随机数对于日常嵌入式系统非常有用,比如车库门接收机必须一一对应地正确识别远程控制的随机数,以防止非授权访问。为了生成随机数,开发人员可以使用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 随机性测试的位流。这就是说,该技术可广泛用于需要生成随机数的各种应用领域,特别是随着无线技术的推广。