AMD製CPUのrdrandが0を生成できない?

मूल शीर्षक: AMD's random number generator can't generate a 0?

यह क्यों महत्वपूर्ण है

ハードウェアRNGの偏りは暗号処理やシミュレーションの信頼性に直結するため、AMD製CPU利用者は16ビットrdrand使用時に注意が必要。

2026年5月、ブラジルのアセンブリ開発者Jesséが、AMD製プロセッサ(Zen2の可能性)において`rdrand`および`rdseed`命令が16ビットモードで値0を一切生成しないというバグを発見。Intelでは同現象は確認されていない。

ブラジルを拠点とするアセンブリプログラマーのJesséは、コンソール画面にチャートをレンダリングするコードを開発中、偶然にAMD製CPUのRNG(乱数生成器)に関する重大な問題を発見した。

問題の核心は、`rdrand`および`rdseed`命令を16ビットレジスタに対して実行した場合、AMD製プロセッサでは値0が一切出力されないという点だ。同じプログラムをIntelプロセッサで実行すると、0は正常に生成される。

Jesséはテスト用アプリケーション(gtk4-bargraph.tar.gz、7.25KB)を公開。このツールは16ビット空間(0〜65535)の全数値の出現頻度をバーチャートで可視化するもので、AMD環境では0のカウントが永遠に増えないことを視覚的に示している。チャートの第1バーはrdrand(赤)、rdseed(青)、独自TSC手法(緑)それぞれの0生成回数を表示するが、AMD機では緑のバーしか変化しない。

回避策として、Jesséは「32ビットまたは64ビットレジスタへ出力し、下位16ビットを取り出す」方法を提案。この方法では下位16ビットが0になるケースは正常に発生することも確認済みだ。

フォーラムの常連「revolution」は「AMDがゼロを乱数ではないと判断したのではないか」と皮肉を込めてコメント。Jesséはこの問題についてAMDへメールで問い合わせる意向を示している。セキュリティ分野の経験を持つユーザー「sylware」は「ハードウェアアクセラレーテッドな暗号処理を使うべきでないという経験則が改めて示された」と述べた。影響するCPU世代はZen2が疑われているが、現時点では未確定だ。

स्रोत

board.flatassembler.net — मूल लेख पढ़ें →