
フルスケールを待つ必要は無かった
量子耐性(古典だけで対策は……できます?):グローバーのアルゴリズム
グローバーのアルゴリズムとは? まさに「ハッシュ殺しの天使」です。
ハッシュ殺しのグローバーでした。
原理は確率振幅をz位相のオラクルに干渉させる、ちょっとわかりにくいですが、その作用が重要です。
それにより、量子力学的に、本来なら膨大な手数を要する探索過程の結果を「時間の経過を伴わずにz位相へマークする性質」がありまして、そのマークを、干渉作業によって確率振幅に変換することで、結果(コラプス)を求めます。
そして……、これが「ハッシュ殺し」になるのは、もう、容易にわかると思います。
ハッシュが暗号論的に作用するのは、ハッシュの出力から、その逆像が容易には出せないためです。なぜなら、出力が256ビットある場合、その探索には最大で「2^256」という膨大な手数を要求されるためです。ところで、実際には見つかった時点で探索完了となるため、その期待値は「2^128程度」です。それでも、この回数を処理することは、現実的な時間内では難しいため「暗号」になっていました。
結局、何が危険なのか……。
それは、フルスケールを待つ必要がない点です。そこがショアとの決定的な違いでした。
ショアは、一点を確実に狙う必要があるので、フルスケールな量子が必要です。ところがグローバーは違いました。このアルゴリズムは探索ななのですが、実際には古典では見えない部分を「あぶり出す」、その性質が最も大きいのです。そしてそれは、局所的に利用することができます。
つまり、フルスケールのみでしか作用できないショアに対して、局所的に古典ではみえない部分をあぶり出すグローバー。この対比が重要です。やはり応用が利くのは……グローバーです。
その局所的な試行を、SHA-256に実施しました。それで……、刻印がありました。
ハッシュの全出力をカバーするには、まだ量子ビットの数が不足します。そのためフルスケールを待つのか……と、なるわけです。ところが、そうではありません。
SHA-256は、一つの関数であの出力を得ている訳ではありません。複数の関数を組み合わせて、あの出力を得ています。そこで、その局所的な個所……ChやMajなどに、量子ビットを局所的に使うのです。
それだけでも、古典とは全然違います。そもそも古典に確率振幅や状態ベクトルの概念はありません。よって、量子では、古典ではみえないような大局的な特性を「あぶり出す」のです。それを見つけたら、あとは古典に移行して、その周辺を延々と探していく。それだけでも、総当たりとは大違いでした。
それで「刻印」が、みつかりました。ほんと、どうなっているのでしょうか。さらに、その刻印周辺は雪崩効果が失われている性質が垣間見えるため、おそらくその刻印を優先した影響とみております。