セキュリティ製品などの宣伝文句で「××は強力な暗号を使っているから安全」といった表現がよくあります。逆に「○○の暗号が破られた」というニュースが飛び込んできたりもします。こんな風に何気なく使っている暗号の強さとは,どうやって判断しているのでしょうか。

時間があれば誰でも解読できるが…

 暗号の強さを説明する前に,通信などで使う暗号技術そのものについて少し確認しておきましょう。

 普通,暗号というと「トラ・トラ・トラ」やシャーロック・ホームズの「踊る人形」のように,本来の意味が第三者にはわからないように隠した文章や符丁が思い浮かびます。こうした暗号は,暗号文を元の文章に戻すためのルールを秘密にすることで,安全性を保つしくみになっています。しかし,現在の通信技術で使っている暗号は,別の方法で安全を確保しています。

 通信で使う暗号技術の正体は,特殊な変換式(数式)です。元のデータ(ビット列)と暗号鍵(これもビット列)と呼ばれる秘密のデータを組み合わせ,変換式を使って計算することで暗号データに変換します。また,暗号鍵を知らないと,暗号データを元のデータに戻せません。

 シャーロック・ホームズの暗号と違うのは,暗号を解く方法(変換式)そのものを公開している点です。つまり解き方のルールを最初から明らかにしておき,暗号鍵だけを秘密にするのです。

 秘密になっているのが暗号鍵だけだとすると,こういうことが考えられます。解き方はわかっているのだから,暗号鍵を知らなくても,考えられる暗号鍵を順番に当てはめていけば,いつかは正しい暗号鍵にぶつかって暗号が解けるのではないだろうか。実はその通りで,これが「総当たり攻撃」と呼ばれる暗号破りの手法です。通信で使う暗号は原理的に,総当たり攻撃によってあり得る暗号鍵をすべて試せば,必ず解けるようにできています。

 しかし,暗号鍵のバリエーションが増えれば増えるほど,総当たり攻撃はやっかいになります。例えば128ビットの鍵だと,バリエーションはおよそ10の38乗になります。1秒間に100兆(10の14乗)の鍵をチェックできるコンピュータを使っても全部を確認するにはざっと3.3京年という非現実的な年月がかかります。しかし暗号鍵が半分の64ビットだと,28時間弱で済む計算になります。

計算式を公開して欠陥がないことを確認

 要するに,暗号鍵の長さが長くなるほど,バリエーションが多くなり,総当たり攻撃で暗号を解くのが難しくなります。現代の暗号の安全性は,この原理で保たれているのです。したがって,長い暗号鍵を使える暗号技術ほど「強い」と言えます。

 ただし,これは暗号の変換式がきちんと作られている場合です。もし,変換式に欠陥があって,総当たり攻撃よりも効率よく暗号鍵を見つける近道があれば,これまでの話は根本からひっくり返ります。

 こうした欠陥が「ぜい弱性」と呼ばれるものです。普通「暗号が破られた」と言う場合は,こうしたぜい弱性が見つかったことを指します。ぜい弱性が見つかった暗号は「弱い」暗号になってしまいます。

 現在の暗号技術が変換式自体を公開しているのは,ぜい弱性があるかどうかをなるべく多くの人によってチェックしてもらうためです。変換式を秘密にしていると,その暗号方式にぜい弱性があるか,だれも確認できません。こうした暗号では安心して使えません。

 逆に多くの人のチェックを受けてもぜい弱性が見つからない暗号なら,暗号の強さは暗号鍵の長さだけで決まります。こうした暗号だけが胸を張って「強い」と言えるわけです。