暗号文を作るには

マイケル・アランダ氏:この暗号文を見ても、なんと書いてあるのかはきっとちんぷんかんぷんでしょう。

ですが、それぞれのアルファベットが1文字ずつずれている、ということがわかれば意味もわかります。

暗号文を作るには、暗号化と鍵の2つが大切です。暗号化とは、例えばアルファベットを決まった数だけずらすといったような、文章をわからなくするきまりのことです。鍵とは、逆に復号化する方法のことで、これを使って元の文書に戻すことができます。

この場合、鍵はアルファベットを1文字ずらす、という1つだけです。復号化するためには暗号化のやり方を知っていなければいけませんし、それが鍵にもなります。もしくは思いつく限りの組み合わせを試してみるか、暗号文を解析して元の文章を復元するしかありません。

では手がかりもなにもない、暗号化と鍵の組み合わせを思いつくなんてことができるのでしょうか。さらには、誰にも破られない暗号文は存在するのでしょうか。

これまでにいくつもの暗号が考案されてきましたが、破られなかった暗号文はなかなかありません。どんな方法で暗号化されていたとしても、十分な量の暗号文と時間があれば、暗号化のルールを見つけ出せるからです。

最初に紹介した暗号文は、シーザー暗号という昔からある単純な暗号文です。この場合、何文字アルファベットをずらしたか、が鍵になります。

しかしこの暗号文は簡単に破られてしまいます。鍵である何文字ずらしたかがわからなかったとしても、25パターン試してみればいいだけです。アルファベットは全部で26文字しかないため、ずらせる数は25回と決まってしまいますね。

シーザー暗号は、単一換字式暗号と呼ばれる種類の暗号化です。これは文章の最初から最後まで同じアルファベット1文字は必ず別の1文字に置き換えていく、という暗号のことです。要はアルファベットをぐちゃぐちゃにするわけですね。

こうしたアルファベットの対応表が鍵になります。

単一換字式暗号の解読方法

暗号化には、なんと400×10の23乗個以上もの組み合わせがあるので、破るのは到底難しいと思うかもしれません。しかし実はそうでもないのです。

復号化する方法はいろいろあります。すべての組み合わせを試してみるやり方が、一番シンプルでわかりやすいもので、その名も「総当り攻撃」というそのままの名前がついています。

でももっと洗練されたやり方もありあます。「頻度分析」と呼ばれるもので、どの言語にも特定のパターンがある、という考えに基づいています。

例えば英語では「E」が最も多く使われます。この文章でも7回出てきますね。

さらに「the」のように、必ず使われる単語というものもあり、そうした種類の単語を「クリブ」といいます。

このように頻度分析は、共通する単語、共通する文字、「ed」や「ing」といった単語の終わりに出てくる組み合わせなどを探し出していきます。

Xが頻出することに気づき、さらにIRXという3文字の組み合わせもあることに気づけば、XはEと対応してるだろうと推測でき、そうするとIRXはTHEの意味だろうとわかっていきます。

こうなると、残りの文字もなし崩し的にわかっていってしまいます。そして文章が長ければ長いほど、こうした手がかりも増えていきます。

このように単一換字式暗号はおもしろいですが、破るのはたいして難しくありません。

もう少し複雑な多表式換字暗号

ではさらに暗号の腕を磨きましょう。多表式の換字暗号ならもう少し破りにくくなります。

多表式換字暗号は、入れ替えていくアルファベットを、文章全体を通して変えていく暗号です。例えば、最初に出てくる「S」は「W」に変換しますが、最後に出てくる「S」は「Hに変換します。どう置き換えるかは、暗号化に使うアルゴリズムと鍵によって決まります。

もっとも古い多表式換字暗号の1つは、ヴィジュネル暗号です。16世紀に考案されたヴィジュネル暗号は、鍵が単語であるためとても単純です。

じゃあ「Scishow is the greatest」という文章を、ヴィジュネル暗号を使って暗号化してみましょう。まずAからZまでが左右、上下に並んだ正方形の文字列を作ります。

1列目はAから始まってZまで並びますが、2列目はBから始まって順番に並んで行き、3列目以降からもずらして並べていきます。

これで並び替えたアルファベットが26できて、原文を暗号化する準備が整ったので鍵を決めましょう。ここでは「MICHAEL」にしましょう。

次に、原文の「Scishow is the greatest」と同じ文字数になるまで、鍵を繰り返し書いて対応させていきます。

そしてそれぞれの文字を暗号化するため、先ほど作ったヴィジュネル方陣のなかで、原文の文字と鍵の文字が交わる文字を選んでいくと、こうなります。

この暗号は鍵となる言葉によって文字の数が変わるため、解読するのがとても難しいです。実際、今回の場合、「MICHAEL」は7文字なので原文の文字はそれぞれ7パターンの文字に置き換わります。

しかし19世紀、チャールズ・バベッジが考案した周期分析を用いると、暗号文が十分な長さを持っていれば突破されてしまうのです。

バベッジは、十分な長さの文章から一定のパターンを見つけ出せれば原文に戻せることに気づきました。使われている鍵が7文字しかないなら、暗号化は7パターンしかありません。8文字の鍵を使っているなら、その数だけ繰り返されるはずです。

バベッジはそうした文字の塊が、どれだけ繰り返されているかを数えました。7、14、21、といった具合に別れていれば、鍵はおそらく7文字だろう、と考えたのです。さらに頻度分析も用いることで、並び替えた7文字のアルファベットを見つけることができます。

こうしたバベッジの例を見ると、解読不能な暗号を作り出すのがいかに難しいかわかります。鍵によって暗号文の中にパターンができてしまうので、そのパターンがわかれば見破れてしまうのです。

ワンタイムパッドと「エニグマ」

つまり、本当に解読不能な暗号を作るためには「ワンタイムパッド」という、原文と同じ長さの鍵を使って暗号化をする必要があるのです。ワンタイムパッドなら、文章のなかにパターンが生まれないため、解析して復号化できません。

送信者と受信者が、一定の長さのランダムな文字列が書かれた、同じ乱数表(パッド)を用いて鍵にします。乱数表を復号化に使ったなら、その乱数表は破棄します。

次に暗号化するときには別の乱数表を用いるため、同じ鍵が繰り返されることがありません。乱数表が外部にもれない限り、誰かに解読される心配はないのです。

しかしいつでもこのワンタイムパッド暗号を使えるわけではありません。例えば、地球の反対側にいる一度も会ったことがなく、乱数表を渡せない人にはどうやってメッセージを送ればいいのでしょう。20世紀の初めに戦争が起こるとそうした事態が頻発したため、さらに改良された暗号がどうしても必要になりました。

電信のような、遠隔地と通信が行える技術は、戦争中とくに重宝されました。

しかし通信内容は仲間にしかわからないようにしなければなりません。

ドイツは複雑にした単一換字式暗号を第一次世界大戦で用いましたが、フランスに破られてしまいました。そのためドイツは第二次世界大戦において、破るのは不可能としか思えない新しい暗号を考案します。「エニグマ」という名前ぐらいは聞き覚えがあるでしょう。

エニグマという暗号機は、多表式換字暗号を採用しており、新しい文字を打ち込むたびに違うアルファベットへと変換します。解読するためにもエニグマの機械が必要で、さらに毎日変わる秘密鍵を用いなければいけません。

エニグマは、1文字ごとにアルファベットを入れ替える、ワンタイムパッドと同じ役割を果たしたのです。乱数表を全員に配る代わりに、毎日変更できる鍵をエニグマに入力したのです。

しかしエニグマにはいくつか欠点がありました。例えば、文字は必ず別の文字に置き換わります。大した問題ではないように思えますが、後々これが致命的な弱点となるのです。

エニグマをどう破った?

イギリスの数学者アラン・チューリングと彼のチームは、エニグマを破る機械を自分たちで考案しました。

ナチスの通信のなかに、ヒトラーを称える文章がたびたび現れることに着目し、そこに20ほどの文字が含まれていることに気づきました。チューリングたちは、そうした特定の単語や文章から鍵につながるクリブを見つけ出そうとしたのです。

同じ文字には暗号化されない、ということに気づいた彼らは、例えば「fewer」という単語が含まれる文章であれば、「F」を含まない単語を探しました。こうした数々の手がかりをもとに、エニグマが暗号化を行う際のローターのはめ方を見つけ出していったのです。

エニグマを突破し、暗号文を解読できたことで、同盟国は有利な情報を数多く知ることができ、数多くの戦局で重要な勝利を収めました。

コンピュータが発達した現在においても、暗号化はとても重要な技術ですが、完ぺきではありません。ハッカーが暗号を解読してしまえば、個人情報の多くは容易に漏れてしまいます。

企業は、毎秒ごとに入力される膨大な個人情報の保護と、日々進歩していく総当り攻撃にかなりの注意と関心を払っています。オンラインで決済をしようとする時に、北朝鮮のメールアドレスが使えないことにも同じ原則が関係していますが、それはまた別のお話です。