到目前为止,我知道TPM正在使用热噪声来生成真正的随机数。但我也确信TPM使用了更多的熵源。在这种情况下,按键计时、驱动器寻道时间或时钟抖动都是可能的。但是TPM使用哪些来源?它是如何将它们转换成真正的随机数的?
TPM的随机数生成器的外观可以在规范中阅读。对于TPM 1.2,我链接此PDF:第1部分设计原理
当您查看4.2.5随机数生成器部分时,您会对它的总体工作原理有一个很好的了解。然而,特定TPM的RNG如何工作是一个实施细节,取决于制造商。然而,该规范提到了一些可能的熵源:
来源的类型可能包括噪音、时钟变化、空中运动和其他类型的事件
转换为随机数是使用状态机和混合函数完成的。同样,实施是特定于供应商的。我引用:
RNG由一个接受和混合不可预测数据的状态机和一个具有单向功能的后处理器(例如SHA-1)组成。该设计背后的理念是,TPM可以是随机性的良好来源,而不需要真正的硬件熵来源。