---
source_url: https://board.flatassembler.net/topic.php?t=24261
source_title: "AMD's random number generator can't generate a 0 (+ app)"
hero_image: https://flatassembler.net/images/flatassembler.gif
tags: amd,rdrand,rng
generated_at: 2026-09-22T12:02:03.168Z
model: claude-haiku-4-5
---
# AMD プロセッサの乱数生成器が 0 を生成できない問題が発覚

flat assembler フォーラムのユーザー Jessé が、AMD プロセッサの rdrand および rdseed 命令で 0 を生成できないバグを発見した。テスト用アプリケーションを公開し、AMD に報告している。

Jessé は組立て言語でチャートレンダリングコードを作成する際、rdrand と rdseed を使用してデータを生成していたところ、「AMD プロセッサ (おそらく Zen2 のみ) では指定されたサイズの 0 を生成できない」ことを偶然発見した。同じプログラムを Intel プロセッサで実行すると、「0 は問題なく生成される」と述べている。

## バグの内容と検証

Jessé は gtk4-bargraph.tar.gz というテスト用アプリケーション (7.25 KB) を作成し、rdrand、rdseed、TSC カスタム手法による 0 の生成状況を可視化した。チャートの最初のバー (0 の生成数を示す赤、青、緑の棒グラフ) は AMD ホストでは常に色が変わらないという。

検証結果によると、2 台の AMD プロセッサで 9 日間のテスト期間中、単一の 0 は生成されなかった。一方、revolution はフォーラム内で「32 ビットまたは 64 ビット出力を使用する場合、下位 16 ビットが全ゼロになることはあるか」と質問。Jessé は「要求されたサイズに適合する真の 0 は AMD では決して発生しない」と回答した。

## パフォーマンス測定結果

テスト用アプリケーションにはベンチマーク機能が統合されており、以下の性能が報告されている：

- Core i5 2012：12.6 M numbers per second
- Core i7 7700 2017：750 k numbers per second
- AMD Ryzen 7：2.6 M numbers per second

測定結果では、Core i5 2012 がクロック速度に 100% 依存している一方、AMD ジェネレータはクロック変動に対して反応しないという。

## AMD からの返答と信頼性に関する議論

Jessé は AMD から返答を受け取ったが、「チームの担当者が自分の結果を完全に読み違えたか、AI を使用して返答を作成したようで (ChatGPT に確認した回答と非常に似ている)」と述べた。さらにこの問題を AMD 内部にエスカレートしている。

フォーラムでは信頼できるハードウェアについても議論が交わされた。sylware は「信頼できるハードウェアは存在しない。あるとすれば、自分自身で設計し、製造プロセスを厳密に管理したハードウェアのみである」と述べた。revolution は「RDRAND の最良なセキュリティのためには、バックドア化されている可能性も、そうでない可能性もあるため、常に他のソースと混合して使用すべき」と提案している。

ttd3v は「rdrand はカーネルのエントロピーソースとして使用される想定のため、AMD の 0 を無効にする選択は奇妙だが、いずれにせよ主要な暗号化 RNG として使用されるべきではない」と述べた。

![テスト結果の画面キャプチャ](https://board.flatassembler.net/files/amd_no_0_captura_de_tela_20260511_021302_193.png)

*この記事は元記事の事実のみに基づいて自動生成されました。*

## 筆者の見立て

- revolution が「AMD が 0 は乱数ではないと判断し、エンジニアにこれを修正させたのではないか」と論じている可能性を指摘している。
- 異なるプロセッサモデル間での RDRAND 回路の性能差から、「乱数生成器回路は同一メーカーの異なるプロセッサモデル間で大きな相違がある必要がある」と解釈している。
- 「RDRAND の回路は元の設計以来変更されている可能性がある」と予想されている。

## 出典

flat assembler forum. 「AMD's random number generator can't generate a 0 (+ app)」https://board.flatassembler.net/topic.php?t=24261
