较新的英特尔处理器包括一个 DRBG,它可以生成随机数,您可以使用 RDRAND 指令读取这些随机数。它涉及从硬件熵源生成的 256 位种子 S,该熵源依赖于亚稳态振荡器中的噪声。用于得出数字的算法是有效的AES(K,V)
,其中 K 是从 S 的一半派生的临时密钥,而 V 是从 S 的另一半派生的 IV。无论如何,我认为;一些对其进行审核的人对此进行了更好的解释。
由于各种原因,我想以编程方式就地审核该机制的性能,这需要能够读取或导出两件事:
- S 的值
- K 或 V 的值
使用这个和 RDRAND 在多次迭代中的输出将为我提供做出此决定所需的测试数据。
但是,在软件开发人员手册或其他地方,我找不到任何记录在案的方法来完成这些任务中的任何一个。
假设我愿意编写一个 Linux 内核模块来实现这一点,并且我愿意为此使用 RDMSR 或任何其他可用的方法,包括调用诸如 MEI 之类的片上设备,是否有可能获取这些数据?