ではそろそろ、専門的な部分に踏み込んでいきましょう。
ここで、そうです。SHA-256刻印ですね。どこからこの結果が見つかったのか。そのあたりにも少しずつ触れていきましょう。
そこでまず、捉えるべきはハッシュ関数の概要的な構造です。
これから扱うSHA-256やBlake2sなどでは、以下のパーツを組み立てることでハッシュ関数になっております。
IV
ROUND
補助関数
基本、この3つです。IVをROUNDに投入し、順次回していくことで最終値……ハッシュ値を得ます。
ここで、このROUNDと補助関数が、どの程度の相関を帯びているのか。そこが、重要になります。この相関が高いほど、大きな変更が加えられても各ビットの反転性が高くなります。
つまり逆に、この相関が低い場合、大きな変更により各ビットの反転性が低くなり、そうなるとハッシュ値の変化が低くなる傾向を掴むことができます。よってそれらが、刻印や差分パスなどが入り込む原因となってきます。
そしてSHA-256の場合、変形の場所に、あの豪快に並ぶ64回のRoundありますよね?
あれだけ回せばROUNDと補助関数の相関は嫌でも高まるとみていたのですが、そうでもないのです。
つまり、それを同時に触れられる存在……量子ですね。
その反転率をエネルギーに変換し、その反転率に大して「エネルギー最小化問題」を定義すると……量子アニーリングと最高の相性となってしまうわけでございます。
そして、その各ビットがわかれば……、あとはスパコンでSHA-1と同じ手法(差分パス)などが出てくるわけです。
逆にBlake2sはROUNDと補助関数の相関は低いです。今の所0に近い水準で、そこから量子に入り込まれる隙は無いです。もちろん僅かな変動はありますが、その谷は非常に浅いため、そう簡単には……でした。
