IBM Quantumのバックエンドを/dev/urandomに置き換える
14時間前原文(github.com)
概要
Q-Day Prizeの主張は、IBM Quantumハードウェアを用いたECDLP鍵回復の量子攻撃の実証です。
os.urandomで量子ハードウェア部分を置換しても、結果が統計的に同一であることが判明。
回復率は理論的な乱数成功率と一致し、量子計算の寄与は見られません。
著者自身のREADMEでも、十分なショット数なら乱数だけで成功すると明記。
本質的な課題は、量子計算機による鍵回復の証明になっていない点です。
QPUの/dev/urandom置換によるECDLP鍵回復検証
- 検証対象:Q-Day Prizeリポジトリの量子コンピュータによるECDLP攻撃の主張
- 変更内容:projecteleven.py内のsolve_ecdlp()で、IBM Quantumバックエンドをos.urandomで置換
- その他の処理:回路構築やリップルキャリーオラクル、検証パイプライン等は一切変更なし
- 期待される結果:量子ハードウェアが本当に有効なら、乱数置換で鍵回復が失敗するはず
- 実際の結果:すべてのテストで乱数置換でも鍵回復に成功、IBMハードウェアと統計的に区別不可
実装上のパッチ内容
- QiskitRuntimeServiceやIBMバックエンド呼び出しを削除し、os.urandomでクラシカルレジスタ長のビット列を生成
- 生成したビット列をCounterでカウントし、以降の処理は元のコードと同一
- 59行のdiffで量子部分のみを乱数で再現
小規模チャレンジ(1回ずつ、8,192ショット)
- 全てのチャレンジ(4〜10ビット)で、著者報告値と完全一致した鍵を1回目で回復
- IBMハードウェアと**/dev/urandom**の両方が1回で成功
大規模チャレンジ(5回ずつ、20,000ショット、リップルキャリーオラクル)
- 16ビット:5回中4回成功(著者報告値と一致)
- 17ビット(1BTC賞):5回中2回成功(著者報告値と一致)
- /dev/urandomでも40%程度の成功率、IBMハードウェアと同等
理論値と実測値の一致
- 成功確率は「P(≥1 verified hit in S shots) = 1 − (1 − 1/n)^S」で計算可能
- 乱数による回復率と理論値が完全一致
- READMEにも「shots ≫ nなら乱数だけで高確率で回復」と明記
再現手順
- IBMアカウント・トークン・量子ハードウェア・ネットワーク不要
- コマンド例:
python projecteleven.py --challenge 4 --shots 8192python projecteleven.py --challenge 17 --oracle ripple --shots 20000
本件の本質的な問題点
- 本リポジトリのエンジニアリング(回路設計等)は高度で本物
- 問題の本質は「量子計算機による鍵回復の実証」主張が成り立っていない点
- 実際には「クラシカルな乱数候補への検証」に過ぎず、量子計算の寄与が無い
- /dev/urandomで完全再現可能なため、量子ハードウェアの意味がない
まとめ
- Q-Day Prizeの量子ECDLP攻撃主張は、/dev/urandom置換で完全再現可能
- 量子計算の証明にはなっていないため、主張の根拠が崩れる
- 鍵回復の成功はクラシカルな乱数検証の結果であり、量子ハードウェアの意義は示されていない