AMDの乱数生成命令、なぜか「0」が出ない現象が海外で議論に
姉妹サイトの新着
他サイトの新着
- 5chまとめMAPM1で優勝した「たくろう」ってトーク力はどうなん?
- ニュース速報まとめMAP【プロ野球速報】阪神、延長11回の激闘を制す!大山が放ったサヨナラホームランの裏側
- なんJ傑作まとめアンテナMAPホワイトソックス、村上宗隆との契約延長交渉を保留か
- アニメ声優まとめアンテナMAP【悲報】伊集院光「ダウ90000の蓮見くんがクレヨンしんちゃんの脚本書いたって話題になって見たけど腰が抜けるほどつまらなかった」
- VTuberまとめアンテナMAP【にじさんじ】葉山って心臓が複数あるんやな
- だめぽアンテナ【画像】能年玲奈(のん) 激しく胸チラ、ブラチラしていた件!!
- ヌルポあんてな【^ w ^】なんG民、教科書に載ってしまう…
- 2chまとめアプリ+歳下の女の子とデートするんだが
- News人広島東洋カープ(若手育成上手いです、本拠地球場がめっちゃ良いです、ファンが熱いです)←このチーム他
- ブルーアンテナハレンチ委員長 vs. チャラ男 〜絶対チャラ男なんかに負けたりしない!〜
- ウマーあんてな【なぞなぞ】うんこをするサラリーマンってな~んだ?
- 海外反応・海外ニュースまとめ【海外の反応】どこも獲らなかった理由が15ヶ月経っても分からない→“強すぎるオーラ”のせいだった
- ハゲリシャス速報【ハゲ速報】本当にデリカシーがない長嶋一茂さん、カツラで大炎上してしまう
- アニメ・漫画アンテナ3大ラスボスより人気な中ボス「戸愚呂」「藍染惣右介」「志々雄真実」「フリーザ」「DIO」「東方不敗」
- 2ちゃんねるまとめるまとめ白マントにサングラス、アフロ風ヘアーの小太り男が“仁王立ち”で下半身露出_夜の札幌・住宅街 警察が注意呼びかけ
- にゅーもふ【亡命】 アジア大会に参加の北朝鮮代表団、うち2名が日本で亡命を希望
- 5chnaviChatGPT、使用料を近日リセットへ
- 海外の反応アンテナ.com海外「東京で一番迷いやすい駅はどこだ?」日本の鉄道駅ダンジョンに対する海外の反応
- ぷぅアンテナ【悲報】免許取れないやつ、一生コンプ抱えて生きる理由がこれwwww 他
- 勝つるあんてな!【悲報】伊集院光「ダウ90000の蓮見くんがクレヨンしんちゃんの脚本書いたって話題になって見たけど腰が抜けるほどつまらなかった」
Hacker Newsで、AMDのプロセッサに搭載された乱数生成命令RDRAND・RDSEEDが「0」を一切返さないように見えるとの報告が話題になった。投稿者はZen 2のCPUで11時間かけて16bit整数を生成し続けたところ、本来1/65536の確率で出るはずの0が一度も現れず、同じプログラムをIntel製CPUで動かすと普通に0が出たという。スレッドでは、検証工程で0のケースが見落とされたオフバイワンのバグではという推測や、そもそも「ランダムとは何か」を巡る議論、過去にもAMDのRDRAND・RDSEEDに偏りがあった経緯を指摘する声が交わされた。
AMDの乱数生成器は0を生成できない?
出典: board.flatassembler.net / 元記事はこちら
数千台のZen2チップを積んだHPCクラスタにアクセスできる人いない?64bit版もチェックしたいけど、マシンの規模次第で数年はかかりそう。シュツットガルトのハイパフォーマンスコンピューティングセンターの人、72万320コアのZen2で遊んでくれない?
自分も同感。モジュール同士の想定外の相互作用で起きるハードウェアバグなら理解できる。でもこれは「たった一つの仕事すら果たせていない」レベルの話
ほぼ間違いなくオフバイワン(境界値)のバグだろうね
検証計画で「0」というビンをカバー対象に入れてなかったんだろう
乱数生成器が自然に1を出したら、自分はそれはそれで心配になる
何を言ってるんだ? まさに「範囲内の全ての数字を全く同じ確率で選ぶこと」こそが本質だよ。Intel SDMの7.3.17節と、それが参照しているNIST SP800-90Aの「乱数」の定義を見てみるといい
「ランダム」という言葉を大半の人は「均等な分布でのランダム」という意味で使っている。歪んだサイコロも「ランダム」ではあるけど分布は偏ってる。これは実質、2^16面の重み付きサイコロってこと
経理のベティが黙ってないぞ
見たところ16bit整数を生成しようとしていたみたいだから、確率は1/65536で、しかも11時間もテストを回してる。一様分布なら他のどの数字ともほぼ同じ回数の0が出るはずで、明らかに0だけ出ないのはおかしい
これは16bitでも32bitでも起きてるみたいだから、0くらい簡単に出てきてもいいはず。しかも本人たちはこう書いてる。『同じプログラムをIntelのプロセッサで動かすと、0は問題なく出てくる』
なんで正規分布だと思うんだ?
は? 何の話?
return 4 # サイコロを振って公正に決めました(ネタ)
これを見るといつもこれを思い出す https://www.reddit.com/r/ProgrammerHumor/comments/5yhl93/…
記憶が正しければ、うちで持ってた全Linuxサーバーには、AMD CPUのこの手のバグのせいでCPUをカーネルの乱数シード源から外す設定を入れてた。GRUB_CMDLINE_LINUXに`random.trust_cpu=off nordrand`を入れてたよ
悪い乱数源を足しても、良い乱数源の質が落ちることはないんじゃない? カーネルは怪しい乱数源が加わったからといって、既存のものを置き換えたりはしないと思ってた。例えば乱数源AとBをXORしたら、最悪でもAとBのうち良い方と同じ品質にはなるはず
rdrand32を呼んで下位16bitだけ取り出しても0は出る? 16bitレジスタに書き込むバージョンの命令自体のバグなのか、それとも元のRNG自体のバグなのか気になってる
出るよ。最初はrdrand32()%65535を試して、期待通りの頻度で0が出たから、自分のCPUにはこの問題がないと勘違いしてた
マスクするなら&0xFFFFを使うべきだよ。あとmodも1つずれてる
rdrand32()%65536の方がいいのでは? 65535で割った余りだと下位16bitにはならないから(※前回書き忘れた言葉があった、の訂正)
これって/dev/(u)randがやってることと実質同じでは? 複数の乱数源をプールしてこういう問題に備えるっていう。単一の乱数源に頼るのも、自前で実装するのも、どちらも避けるべき理由がわからない
そう、今どきのシステムならカーネル提供の乱数源を使うべき。自前で実装していい正当な理由があるとしたら、カーネルAPIが使えない組み込みシステムやブートローダーくらい
投稿者はZen 2でこれを発見したと言っていて、それはそのセキュリティ情報の対象には入っていないのでは(?) 追記: あと、その情報はRDSEEDのゼロについてだけで、投稿者はRDRANDのゼロも報告している
もっと古いAMDのプロセッサでも同様の問題があった: https://github.com/systemd/systemd/pull/12536/commits/…
なんでsystemdはカーネル提供の乱数インターフェースを使わずに、アーキテクチャ固有の命令を直接使ってるんだ?
それはなかなかタチが悪い話! その件のスレッドを見つけた → https://news.ycombinator.com/item?id=19848953 こんな発言もあった。『Intelのエンジニアから、Linuxの/dev/randomをRDRAND命令の出力に盲目的に頼らせるよう圧力を受けたが、抵抗しておいて本当によかった』―Theodore Ts'o (2013年)
他サイトの新着
知らない人のために https://xkcd.com/221/
[画像] i.imgur.com
値の範囲は2^16, 2^32, 2^64ではなく、2^16-1, 2^32-1, 2^64-1になるってだけの話。このバグの実害はゼロだよ
『偏った乱数生成器に実害はゼロ』というのは完全に誤り。現代の暗号技術には、比較的小さな偏りが致命的な破綻につながった例がいくつもある。例えばBleichenbacherの攻撃を調べてみるといい。今回の偏りが小さすぎて実際には悪用できない、というのは正しいかもしれないけど、これまでの経緯を踏まえれば「些細な話」と片付けるのは間違ってる
経理のベティがRNGなんかを気にする理由がある?
0が出ないことでどこかのエッジケースが実ユーザーに影響することはあるはず。予測シミュレーションとか?
『一様分布なら他の数字と同じくらいの頻度で0が出るはず』って言うけど、そもそも乱数がどうして一様分布になると言えるんだ?
どの数字も他のどの数字とも同じ確率で出るからだよ。特定の数字が出やすい、あるいは今回みたいに特定の数字が絶対に出ないとわかっているなら、それは定義上『よりランダムでない』ってこと
この話題の背景と論点
RDRANDとRDSEEDは、CPUに内蔵されたハードウェア乱数生成命令で、OSの乱数プール(Linuxの/dev/random相当)のシード元としても使われる。スレ中で触れられている「そのセキュリティ情報」は、AMDが過去にZen系CPUのRDSEEDで0が偏って出る不具合を認めた文書を指しており、今回の投稿者はより古いZen 2かつRDRANDでも同様の現象を確認したとして話題になった。論点は大きく二つに分かれた。一つは技術的な原因で、検証工程がゼロという値のケースを想定していなかった「境界値の見落とし」ではという推測が有力視された。もう一つは「乱数の定義」を巡る議論で、単に予測不能であればよいという立場と、暗号用途では全ての値が均等な確率で出ることが前提という立場が対立した。後者の文脈では、わずかな偏りでも暗号解読につながった実例(Bleichenbacher攻撃)が引き合いに出されており、「実害はない」と楽観視する意見への反論として機能していた。
※本記事は5ch(Hacker News)スレッド「AMD’s random number generator can’t generate a 0?」より抜粋・要約して構成しています。






まだコメントはありません。