新しい Intel プロセッサには、RDRAND 命令で読み取ることができる乱数を生成する DRBG が含まれています。これには、準安定発振器のノイズに依存するハードウェア エントロピー ソースから生成された 256 ビットのシード S が含まれます。数値に到達するために使用されるアルゴリズムは事実上AES(K,V)
です。ここで、K は S の半分から派生した一時的なキーであり、V は S の残りの半分から派生した IV です。これは、それを監査した一部の人々によって、よりよく説明されています。
さまざまな理由から、このメカニズムのパフォーマンスをその場でプログラムによって監査したいと考えています。これには、次の 2 つのことを読み取ったり導出したりする能力が必要です。
- Sの値
- K または V のいずれかの値
これと RDRAND の出力を数回繰り返して使用すると、この決定を行うために必要なテスト データが得られます。
ただし、ソフトウェア開発者のマニュアルや他の場所のどこにも、これらのタスクのいずれかを達成するための文書化された方法を見つけることができません。
これを達成するために Linux カーネル モジュールを作成する意思があり、そのために RDMSR を使用するか、MEI などのオンダイ デバイスへの呼び出しを含む他の手段を使用する意思があると仮定すると、このデータを取得することは可能ですか?