不管是生成随机器件地址、强化加密算法还是创建独立产品密钥,可靠地生成随机数都变得日益重要。这些随机数对于日常嵌入式系统非常有用,比如车库门接收机必须一一对应地正确识别远程控制的随机数,以防止非授权访问。为了生成随机数,开发人员可以使用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间大的差异。 |