AMD製CPUのRDRAND命令、0を生成できないバグか

Judul asli: AMD's random number generator can't generate a 0?

Mengapa Ini Penting

ハードウェアRNGの出力分布に偏りがある場合、暗号処理の安全性に直結するリスクがある。

AMD製プロセッサのRDRANDおよびRDSEED命令が16ビットモードで0を生成しない可能性が、アセンブリ開発者によって報告された。Intelでは問題なし。

ブラジルのアセンブリ開発者Jesséが、AMD製プロセッサ(おそらくZen2以降)において、RDRAND・RDSEED命令を16ビットレジスタに対して実行した場合に値0が一切出力されないという挙動を発見した。同開発者はコンソール画面にデータをグラフ表示するアプリを開発中に偶然この問題に気づいた。同じプログラムをIntelプロセッサで実行した場合は0が正常に生成される。

回避策として、命令を32ビットまたは64ビットレジスタに対して実行し、下位16ビットを取り出す方法が有効とされている。実際、32/64ビット出力の下位16ビットが0になるケースは確認されており、「真の16ビット0」だけが出てこないという状況だ。

フォーラム参加者のrevolutionは「AMDが0をランダムな数と見なさないという仕様にしていなければいいが」と皮肉交じりにコメント。Jesséは今後AMDに直接問い合わせる意向を示している。セキュリティ観点からは、「ハードウェア支援の暗号機能は使わない」という原則を改めて指摘する声も上がった。テスト用アプリはフォーラムで公開中(gtk4-bargraph.tar.gz、7.25KB)。

Sumber

board.flatassembler.net — Baca artikel asli →