🗝️ オラクルは比較しない
STAGE 5 ― AES鍵探索の全体像 ―
クリア 0 / 6
STAGE 5AES鍵探索の全体像
レジスタは1本
🎯 ミッション
錠前をAES鍵探索の実戦に配置しよう。Σ|k⟩|AESₖ(P)⟩(Σは「候補を全部足し合わせる」の記号)が「2¹²⁸本のレジスタ」ではなく1本のレジスタの重ね合わせであること、教科書の「オラクル1回」にAES計算・一致判定・位相反転・逆計算のすべてが含まれることを説明できれば合格。
未達成
ねこ博士
錠前は建った。今日はいよいよ、STAGE1で掲げた本来の問題――AESの鍵探索――にそれを配置する。あのとき後回しにした相手の正体を、まず正確に紹介しよう。
AESは、2001年に米国の標準に選ばれ、いまインターネットの通信のほとんどを守っている共通鍵暗号だ。送りたいデータ(平文と呼ぶ)Pを、128ビットのkでぐちゃぐちゃにかき混ぜて、暗号文 AESk(P) を作る。同じ鍵を持っている人だけが元に戻せる。
攻撃者の設定も、あらためて記号で書き直そう。平文Pと、正しい鍵Kで作られた暗号文 C=AESK(P) のペアを、どこかで手に入れた。知りたいのは鍵Kそのもの。分かっているのは「kが正解 ⇔ AESk(P)=C」という検算の条件だけ。
うさ美
グローバーの型にきれいにはまります。候補は2¹²⁸個の鍵。ふつうに総当たりすれば平均2¹²⁷回、グローバーなら約√(2¹²⁸)回で……
あれ、でも待ってください。私たちの錠前は「入力がCと一致するか」を調べる回路です。ところが重ね合わせにするのは鍵kのほう。kは128ビットの数字であって、暗号文ではありません。kをそのままCの錠前に通しても意味がないのでは?
ねこ博士
そこに気づけば、全体像は半分できたようなものだ。そう、錠前の前にもう1つ仕事が要る。kから AESk(P) を計算する仕事だ。
装置の構成はこうなる。レジスタ――量子ビットの束――を2本用意する。
鍵レジスタ:128量子ビット。ここに鍵の重ね合わせを作る
作業レジスタ:暗号文を書き込むための束。最初は |00…0⟩
AESはANDや入れ替えのような論理演算でできた計算だから、トフォリたち基本ゲートで量子回路として組み直せる。数万ゲート規模の大工事だが、原理はSTAGE4の鎖と同じだよ。
それと、ここから式で使う記号をひとつ紹介しておく。Σ(シグマ)は「候補を全部足し合わせる」という印だ。たとえば Σ|k⟩ と書いたら、|00…00⟩+|00…01⟩+…+|11…11⟩ という2¹²⁸個の候補ぜんぶの和を、1文字で略記している。全部書いたら宇宙が終わるからね。
うさ美
待ってください。正直に言うと、128ビットと2¹²⁸個の成分のままでは、頭の中に絵が描けません。指で追える小ささの例で、最初から最後まで1周やらせてもらえませんか。
ねこ博士
そうしよう。鍵2ビット・データ2ビットの模型を作る。かき混ぜ機Eの規則は「暗号文=鍵+データ(2進数を数として足し、4以上になったら4を引く)」と決めよう。データは P=10 に固定する。すると暗号文 Ek(P) は、
k=00→10、k=01→11、k=10→00、k=11→01
と、4通りぜんぶ違う値になる。正しい鍵は K=11、攻撃者が手に入れた暗号文は C=01 としよう。
先に断っておくと、この模型は対応表を逆にたどれば一瞬でKが分かってしまう。あくまで配管を見るための模型で、本物のAESは逆たどりができないように設計されている――そこだけが本物との違いだ。
うさ美
模型なら追えます。レジスタは鍵用2量子ビット+作業用2量子ビットの、計4個ですね。
①鍵レジスタの2個にH。すべての鍵の等しい重ね合わせができるのでした。作業レジスタは |00⟩ のまま:
½(|00⟩+|01⟩+|10⟩+|11⟩)|00⟩
②かき混ぜ機Eの回路を通すと、成分ごとに、その鍵での暗号文が作業レジスタに書き込まれて:
½(|00⟩|10⟩+|01⟩|11⟩+|10⟩|00⟩+|11⟩|01⟩)
……この式の読み方に自信がありません。「鍵と暗号文のペア」が4組並んでいますが、これは作業レジスタが4本ある、という意味ですか?
ねこ博士
そこが、世間の誤解がいちばん濃いところだよ。作業レジスタは2量子ビットが1本だけだ。いま書いた式は、前作の言葉で言えば「4行の一覧表」――たった1つの状態を書き下した姿で、1本のレジスタが、鍵ごとに違う暗号文を成分として持つ重ね合わせになっている。4台のかき混ぜ機が4個の暗号文を並べて持っているのではない。
128ビットの本番でもまったく同じでね。Σ|k⟩|AESk(P)⟩ と書いても、あるのは128量子ビットの作業レジスタが1本。装置の実体は鍵128+作業128+メモ用の補助、合わせて数百量子ビットで、2¹²⁸個の何かが物理的に並ぶわけではない。
うさ美
続けます。③C=01用の錠前(STAGE2〜4の作り方の2ビット版)を、作業レジスタに掛けます。暗号文が01の成分は |11⟩|01⟩ だけなので:
½(|00⟩|10⟩+|01⟩|11⟩+|10⟩|00⟩−|11⟩|01⟩)
……狙い通りのことが起きています。錠前が見たのは作業レジスタの01だけなのに、−が付いたのは |11⟩|01⟩ という成分まるごと。鍵と暗号文がペアで1つの成分になっている――もつれ――だから、錠前は鍵を1度も見ていないのに、正解の鍵11に目印が付くんですね。
ねこ博士
そう。仕上げの④は、かき混ぜ機Eの逆再生だ。各成分の作業レジスタが |00⟩ に戻って:
½(|00⟩+|01⟩+|10⟩−|11⟩)|00⟩
計算メモが消えて、目印だけが鍵レジスタに残った。STAGE4で学んだ通り、メモが残れば手がかりになって干渉が壊れるから、④は省けない。これで1周だ。
本番は、この1周をそのまま128ビットに広げるだけだよ。②のあとが Σ|k⟩|AESk(P)⟩、③のあとが Σ(−1)[AESk(P)=C]|k⟩|AESk(P)⟩――肩の [条件] は、条件が成り立つとき1、成り立たないとき0という意味の記号だ――④のあとが Σ±|k⟩|00…0⟩。かき混ぜ機が数万ゲートのAES回路になり、錠前がSTAGE4の128ビット版になる。それだけの違いだ。
うさ美
実機のことを考えると、1つ引っかかります。ゲートの実体は、量子ビットに当てるマイクロ波のパルスでしたよね。錠前も結局はパルスの列になるはずです。でも、パルスを作って送り込むのは、冷凍機の外にあるふつうの古典的な装置です。正解の成分だけを狙って反転させるパルスなんて、どうやって作るんですか?
ねこ博士
作らない、が答えだ。どのパルスも、成分を狙っていない。パルスが当たる相手は物理的な量子ビットであって、重ね合わせの成分ではないからね。パルスは、中の状態がどうなっていようと同じ揺さぶり方をする。仕掛けは3つの階層に分かれているんだ。
第一に楽譜。錠前のパルス列は「Cの0の桁にX、全部1ならZ、Xを戻す」の翻訳で、これを書くのに必要な情報は最初から知っているCだけ。鍵Kは楽譜のどこにも登場しない。
第二に線形性。各パルスは全成分に同じ操作をする。それでも「全部1」の条件を満たした成分だけが−を拾う――STAGE3の仕分けそのものだ。
第三にもつれ。−が付くのは作業レジスタがCの成分で、その成分の鍵がKだった、というだけ。パルスは鍵レジスタに触れてすらいない。
色ガラスと同じだよ。赤いガラスは、通る光を検査して青を狙い撃つのではなく、固定された性質として青を通さない。錠前のパルス列は「Cだけが引っかかる」ように組まれた、固定のフィルタなんだ。
なお「パルスがきっかり180°回してくれるか」は較正の仕事で、実機では1ゲートあたり0.1〜1%ほどの誤差が残る。その誤差が積もるとどうなるかは、次のステージの話につながる。
うさ美
教科書が「オラクル1回」と数えるものの中身が、やっと見えました。
①H……は準備として、1回のオラクルは、
②AES計算(数万ゲート)+③一致判定と位相反転(数百ゲート)+④AES逆計算(数万ゲート)
ひとまとまりなんですね。「オラクル1回=物理的なゲート1個」では全然ない。
まとめ直すと――全鍵候補と正解を比較しているのではなく、暗号文レジスタの128ビットが既知の暗号文Cと一致するかを、固定回路で調べている。そのレジスタが重ね合わせだから、条件に合う鍵の成分だけが反転する
……ただ、まとめていて新しい引っかかりが生まれました。かき混ぜ機を1回通しただけで、全成分に「その鍵での暗号文」が書き込まれる。これは結局、鍵の候補を全通り試しているのと変わらないのでは?
ねこ博士
「帳簿の上では全通りぶんの計算結果が現れる」――そこまでは正しい。では「試した」と呼べるか、2つの物差しで検査しよう。
第一に費用。全通り試すとは、候補の数だけ仕事をすることだ。いま払ったのは回路1回ぶんだけ。成分が4個でも2¹²⁸個でも、ゲートの数は1個も増えない。
第二に収穫。本当に試し終えたのなら、答えを知っているはずだ。ところが、かき混ぜて錠前を通した直後に測定しても、当たりが出る確率は模型で4分の1、本番で2¹²⁸分の1のまま――開始前と同じで、何も知らない。全通りぶんの結果は、読めない金庫の中に生成されるんだ。
だから正確にはこうなる。全通りぶんの変換は起きる。しかし「試した=結果を得た」ことにはならない。その差額を埋める労働が、√N回の折り返しだ。もし本当に全通り試せているなら1回で終わるはずで、2⁶⁴回かかること自体が、試せていないことの証拠だよ。
うさ美
分かりました。では、その「1回の適用で全成分に効く」という仕組み自体――いわゆる量子並列性――の中身は、何なんですか。
ねこ博士
正体は波の並列性で、量子の特権ですらない。プリズムに白色光を通すと、全部の色が1回の通過で同時に曲がる。音のフィルタは全周波数を同時に処理するし、防波堤は波面の全部分を同時に回折させる。誰もプリズムを並列計算機と呼ばないが、仕組みは同じものだ。
物理法則は、場の全点に、同文で、同時に効く。重力が海の水滴を1滴ずつ順番に引っ張らないのと同じで、法則の適用には場所ごとの料金がない。ゲートを掛けるとは、波の運動方程式を短時間走らせることだった。つまり並列に働いているのは装置ではなく、法則の適用のされ方なんだ。
うさ美
そのたとえには反論があります。プリズムの入力はもともと色とりどりだから、同じ規則でも出力が分かれるんです。でも私たちの4成分は、作業レジスタがどれも |00⟩ で、同じに見えます。同じ入力に同じ規則を当てたら、同じ出力になるはずでは? 現に、かき混ぜ機は成分ごとに別々の暗号文を書き込みました。
ねこ博士
いい反論だ。答えは、成分は同じではない。成分の住所は(鍵, 作業)のペアで、作業側こそ全部00だが、鍵側が00・01・10・11と全部違う場所にいる。しかも物理的に違う。鍵回路の|0⟩と|1⟩は励起の有無――エネルギーの違う実在の配置だから、4成分は(静・静)(静・励起)(励起・静)(励起・励起)という、赤い光と青い光くらい違う4つの様子だ。Hの仕事は、まさにこの多様性の製造――プリズムに入れる白色光を作る工程に当たる。
そしてかき混ぜ機の規則は「自分の住所の鍵座標を読んで、そのぶん作業座標をずらせ」という条件付きの同文規則。プリズムの「自分の波長に応じて曲がれ」と同じ型だから、出力が分かれる。
「読む」の実装は、2量子ビットゲート――回路どうしの物理的な結合だ。相方が励起しているかどうかで自分の共鳴条件が変わるように配線してあり、パルスはその結合を一定時間オンにするだけ。パルスは鍵の値をひとつも読んでいない。条件分岐は楽譜ではなく、結合の物理が実行する。
うさ美
まだ費用の抜け穴を2つ疑えます。ひとつめ。その楽譜――かき混ぜ機のパルス列――を作る段階で、結局、全通りぶんの計算が要るのではありませんか。鍵ごとの暗号文を知らずに、どうやって「正しくずらす」楽譜が書けるんです?
ねこ博士
要らない。楽譜が符号化しているのは対応表ではなくレシピだからだ。AESの定義は「ビットをこう入れ替え、こうANDせよ」という短い手順書で、どの鍵に対しても同文で効く。それを機械的にトフォリとCNOTへ翻訳した楽譜の長さは、AESを1回計算する回路のサイズ――ビット数の多項式だ。
証拠を3つ。楽譜のどこにも特定の鍵の値は現れない。2¹²⁸という数も現れない。鍵を1ビット増やすと候補は倍になるのに、楽譜は数行伸びるだけ。計算機のたし算ボタンと同じだよ。歯車は桁数ぶんしか無いのに、どのたし算でもできる――機械に入っているのは表ではなく規則だ。
逆に言うと、判定条件が短いレシピで書けない相手――中身に規則性のない電話帳の検索――では、データ全体を回路に刻む羽目になって利得が消える。前作でやったQRAMの話だね。AES鍵探索がグローバー向きなのは、条件が「短い公開レシピ+手元のC」だけで書けるからだ。
うさ美
ふたつめ。入力側です。多様性の製造がHの仕事だとおっしゃいましたが、それなら(鍵=00)(鍵=01)(鍵=10)(鍵=11)……と全候補ぶんの波を用意する段階で、全通りと同じ手間が掛かるのでは?
ねこ博士
掛からない。Hパルスが128発で終わる。一様な重ね合わせには、積の形に因数分解できるという特別な性質があるからだ。
Σ|k⟩ = (|0⟩+|1⟩)×(|0⟩+|1⟩)×……×(|0⟩+|1⟩)
各因子は「回路1個が自分だけで0と1の重ね合わせになる」=H1発。模型ならH2発で住所4つ、3発なら8つ――1発ごとに倍
代数で言えば、(a₁+b₁)(a₂+b₂)……(a₁₂₈+b₁₂₈) という式は、書くのに括弧128組、展開すると2¹²⁸項。展開はこちらの記述の都合であって、自然は展開しない。コインを128枚振る動作は128回でも、できる可能性の広がりは2¹²⁸通り――指数は組み合わせに住んでいて、労働には住んでいない
ただし正直に言っておくと、タダなのは一様――各回路が独立に広がるだけの、無構造な波――だからだ。成分ごとに狙った振幅を彫り込んだ任意の波を作るのは、一般に指数個のゲートが要る。グローバーの設計の賢さはここにある。安い無構造の波から出発し、欲しい構造(当たりへの集中)は、オラクルと折り返しの反復で後から彫り込む。その彫り込み代が√N回なんだ。
うさ美
費用の監査が終わりました。数え上げます。
・準備:Hが128発(ビット数ぶん)
・楽譜の製造:AES回路1個ぶん
・オラクル1回の実行:同じく1個ぶん
・反復:約√N=2⁶⁴回(ここだけが重い)
・読み出し:1行
Nが素の姿で請求される行は、どこにもない。「全通り同時に試して一瞬」ではなく、「どの工程でも全通りぶんは払わず、金庫から答えを彫り出す代金として√Nだけ払う」――これが量子並列性の本当の収支ですね。
ねこ博士
それがこのクエストの答えだ。付け加えることはほとんどないよ。
あとはこのオラクルと折り返しのペアを√N回――2¹²⁸の平方根、つまり約2⁶⁴回くり返せば、正解の鍵の矢印が育ちきって、測定でKがほぼ確実に読み出せる。
……ただね、「約2⁶⁴回」という数を聞き流してはいけない。最終ステージでは、この数の重さを正直に量って、クエストを締めくくろう。
【模型で1周 ― 鍵2ビット・P=10・C=01】 ・かき混ぜ機:Ek(P)=k+P(数として足し、4以上なら4を引く)。対応表は 00→1001→1110→0011→01。C=01 を作るのは K=11 だけ ・① H×2:½(|00⟩+|01⟩+|10⟩+|11⟩)|00⟩(全鍵の等しい重ね合わせ。作業レジスタは空のまま) ・② かき混ぜ:½(|00⟩|10⟩+|01⟩|11⟩+|10⟩|00⟩+|11⟩|01⟩)作業レジスタは1本のまま、成分ごとに違う暗号文を持つ ・③ C=01の錠前:½(|00⟩|10⟩+|01⟩|11⟩+|10⟩|00⟩−|11⟩|01⟩)。もつれているので、−は正解鍵の成分まるごとに付く ・④ 逆再生:½(|00⟩+|01⟩+|10⟩−|11⟩)|00⟩。メモは消え、目印だけが鍵レジスタに残る ・この模型は対応表の逆たどりでKが分かってしまうが、本物のAESは逆たどり不能。配管(①〜④)は同じ
模型の1周を波形で見る(16マスの候補空間) スタート ― 鍵も作業も00 |00⟩|00⟩
レジスタが持っている状態の完全な記述である「候補空間の上の波」を、模型(鍵2ビット+作業2ビット=16マス)で最初から最後まで追うアニメ。各マスの矢印が振幅(上向き=+、下向き=−)で、確率は長さの2乗。①〜④は上の対話の通り。仕上げの⑤「平均のまわりの折り返し」は前作STAGE6の第2手で、3本の+½と1本の−½の平均(+¼)のまわりで全員を折り返すと、目印付きの矢印だけが長さ1に育つ――候補4個のときは、たった1回で確率100%になる。⑥測定で初めて1マスだけが光り、正解の鍵11が読み出される。どの段階でも、波に触れた装置(H・かき混ぜ機・錠前・折り返し)は正解Kを知らない固定回路だ。
同じ1周を、実機の回路の側から見る スタート もつれ(1個ずつの状態は存在しない)
上の波形図と同じ1周を、冷凍機の底にある4個の物理的な回路の側から眺めたアニメ。各パネルは横軸が時間t(右から左へ流れる)、縦軸が回路内での電荷の位置xのオシロスコープ表示(1回の実行で見えるであろう揺れの模式図)。電荷(何十億個のクーパー対の集団)はどの段階でも消えず、揺れ続けている——薄い帯はそのゆらぎの幅だ。変わるのは位相のそろい方で、それが3つの見どころになる。(1) 位相のそろった正弦波を打つのは、もつれる前の重ね合わせの間だけ。(2) もつれた瞬間、揺れは残るのに位相がでたらめに戻り、山の位置が波ごとにずれて、平均すればゼロ——decoherence-questの足し算ルール(相方に手がかりが残った道筋は干渉できない)がここで効いている。そろった波の完全な姿は、2つの回路の記録の相関と、上の「候補空間の波」の中にだけ生きている。(3) 錠前が目印を付けた瞬間ですら、どのパネルの統計も変わらない——位相の目印は局所には現れない。だから盗み見もできない。励起状態|1⟩の揺れも大きいだけで位相はでたらめ(中央に節のある帯)。
AES鍵探索・オラクル1回の中身 鍵 128qubit 作業 128qubit H ×128 AES 数万 錠前 数百 AES 逆再生 数万 ここまで全部で「オラクル1回」 |00…0⟩|00…0⟩(スタート) ボタンで1段ずつ進めてみよう
使ったゲート数の目安: 0
オラクル1回ぶんの中身。レジスタは上下の2本だけで、2¹²⁸本の線があるわけではない。AESブロックが作業レジスタに「鍵ごとの暗号文」を重ね合わせのまま書き込み、錠前(STAGE2〜4で建てた固定回路)が暗号文=Cの成分に−を付け、AES逆再生がメモを消す。教科書の「オラクル1回」はこの点線の囲い全体を指していて、物理的な基本ゲート1個のことではない。
【AES鍵探索・オラクル1回の中身】 ・設定:平文Pと正しい暗号文 C=AESK(P) を入手済み。判定条件は「AESk(P)=C ⇔ kが正解」 ・装置:鍵レジスタ128量子ビット+作業レジスタ128量子ビット+補助。合計数百量子ビット(2¹²⁸個の装置ではない) ・① H×128 → Σ|k⟩|00…0⟩(全鍵の等重ね合わせ) ・② AES回路(数万ゲート)→ Σ|k⟩|AESk(P)⟩。暗号文レジスタは1本で、鍵ごとに違う暗号文を成分に持つ重ね合わせ ・③ 錠前(Xサンド+ANDの鎖+Z+逆鎖)→ Σ(−1)[AESk(P)=C]|k⟩|AESk(P)⟩。もつれているので、暗号文への目印=正解鍵への目印 ・④ AES逆再生(数万ゲート)→ 作業レジスタを |00…0⟩ に戻し、手がかりを消す 「オラクル1回」=②+③+④のひとまとまり。物理ゲート1個ではなく数万ゲートの計算。ただしその数はAESの複雑さで決まり、候補の数2¹²⁸には比例しない
【量子並列性の費用監査 ―「全通り試しているのと同じでは?」への答え】 ・帳簿の上では全通りぶんの計算結果が現れる。しかし費用は回路1回ぶん、収穫はゼロ(直後に測っても当たりは1/Nのまま)。「試した=結果を得た」にはならず、差額を埋める労働が√N回の折り返し。2⁶⁴回かかること自体が「試せていない」証拠 ・並列性の正体=波の並列性。法則は場の全点に同文で同時に効き、場所ごとの料金がない(プリズム・フィルタ・防波堤と同族)。並列に働くのは装置ではなく法則の適用のされ方 ・出力が分かれる理由:成分は(鍵, 作業)の住所が全部違う(物理的には励起の有無の違い)。Hが白色光に当たる多様性を製造し、かき混ぜ機は「自分の鍵座標のぶん、ずらせ」という条件付きの同文規則(実装は回路どうしの結合。パルスは鍵を読まない) ・楽譜の製造:符号化するのは対応表ではなくレシピ。長さはAES1回ぶん(ビット数の多項式)。楽譜に鍵の値も2¹²⁸も現れない。レシピで書けない相手(電話帳)ではここが崩れる=QRAM問題 ・準備:Σ|k⟩=(|0⟩+|1⟩)×…×(|0⟩+|1⟩)積に因数分解できるのでH×128発。展開して2¹²⁸項になるのは記述の都合。指数は組み合わせに住み、労働には住まない(任意の波を狙って彫るのは高い。安いのは無構造の一様だけ) ・費用勘定の完成:準備128楽譜=AES1回ぶん適用=AES1回ぶん反復√N=2⁶⁴回読み出し1行Nが素の姿で請求される行はない
確認クイズ

Q1. Σ|k⟩|AESₖ(P)⟩ という状態の説明として正しいのは?

Q2. 錠前(一致判定回路)は作業レジスタの暗号文しか見ていないのに、正解の「鍵」に目印が付くのはなぜ?

Q3. 教科書でいう「オラクル1回」に含まれるものは?