解読方法:様々な戦略}

画像の暗号化には RSA 暗号という代表的な公開鍵暗号方式が使われています. 256×256 (= 約 6 万 5 千個)の各画素ごとに, RSA 暗号の秘密鍵1 を使って暗号化されています. 解読プログラムは, その各々の暗号を解読していかなければなりません. それにはいくつかの戦略が考えられます.

(脚注1: RSA 暗号を使うには, 公開してよい公開鍵と自分だけの秘密鍵が必要です. 審査に使う画像も, ある RSA 暗号で暗号化されていますが, その公開鍵はヒント情報の一部として解読プログラムに与えられます.)

戦略1:RSA 暗号を破る!

暗号化に使う RSA 暗号の公開鍵 は, 解読プログラムにヒント(の一部)として与えられます. この公開鍵から秘密鍵を計算することは原理的には可能です. これが RSA 暗号に対する「暗号破り」です. 秘密鍵さえ得られれば解読は簡単です.

一般の RSA 暗号では, 暗号鍵を 500 ビットから 1000 ビットにして, この暗号破りの計算に, (たとえスパコンを使っても)数百万年も必要となるようにしてあります. つまり「原理的に可能」でも,「実際上は不可能」というわけです. 一方, 今回の RSA 暗号では, 約 100 ビットの暗号鍵を使うことにしました. そのため, 暗号破りも絶望的に難しくはありません. ただし,制限時間の 3 分間以内にできますでしょうか?

戦略2:ヒント情報を使う}

暗号破りが原理的には可能なのと同様, 与えられる公開鍵を使うと, 各画素ごとで, 何度も「試し計算」を行うことにより, その画素の解読も原理的には可能となります. ただ, そのためには, 最悪で 2100 回もの「試し計算」が必要になります. これはスパコンでも実際上不可能な数です.


そこで,各画素ごとにヒントを与えることにしました. ヒントにも難易があります. 詳細は省略しますが, 難しさ h (h=1〜100) のヒントを使っての解読には 最悪で 2h 回の「試し計算」が必要となるようになっています. (難しさ h=100が,ちょうど「ヒント無し」に対応します.) このヒントを使わない手はありません.

今回は, 6 万 5 千個の画素に対し, 難しさ h (h=1〜35) のヒントを 右のような割合で割り当てました. 計算時間は, 私たちが作った参考プログラムをもとに推定したものです. まともにh の小さいものから解いて行くと, 解けるのは h=18くらいまででしょうか. ちなみに, そこまでの画素総数は約 6800 個.全体の 1 割程度です.

戦略3:暗号化法の弱点をつく

どんなに強固な暗号方式を使っても, その使い方が悪ければ, 簡単に解読されてしまいます. 今回の暗号化では, とてもお薦めできないような「安易な」方法で RSA 暗号を使っています. そのため, この暗号化には大きな弱点があります.

具体的には, 画素番号 123(画素には 0〜65335 の画素番号が付けられています)の画素と 画素番号 18 の画素の解読に成功すると, その結果を使って, 画素番号 2214 (=123×18) の解読もできるのです. さらに言うならば, このとき画素番号 24354 の画素の解読もできていると, 実は, 画素番号 11 (=24354÷2214) の画素の解読も可能となるのです.

この「解読の伝搬」を上手に使うことができれば, たとえ 1 割しかヒントが有効に使えなくても, かなりの数の画素を解読することが可能になるでしょう.

戦略?:そして皆さんの戦略は

以上は,私たちが予想した戦略です. これまでの大会では, ほとんど毎回, 私たちの想定していなかった計算方法を使うチームが出てきます. さて,今年はどうでしょうか?