前回、暗号化の基本的な2種類の方法(コードとサイファー)について簡単に説明した。本連載の趣旨からすると、立ち入った話に突っ込んでいくよりも「あ、そういう考え方なのね」というところを知っていただければよいと思うので、詳細に興味がある方は、その筋の専門書籍を当たってみていただきたいと思う次第。

それはそれとして。コードにしろサイファーにしろ、暗号化や復号化にはそれなりに手間がかかる。それを少しでも楽にできないか、というのが今回のお題だ。

ジェファーソン・ディスク

1文字ずつ換字を行うサイファーの場合、換字表を紙に印刷して配布するのが、最もわかりやすくシンプルな方法である。

しかし、文字数が少なくて済むといっても、紙に印刷すれば相応にかさばるし、読み間違いによってミスが入り込む可能性もある。そして暗号化や復号化の作業に手間がかかる。それなら機械化できないか、というのは誰もが考えるところ。

例えば、周囲にアルファベット26文字をランダムに並べて書いた円盤をいくつか用意する。そして、それらの円盤の中心に丸穴を開けて棒に通す。個々の円盤をグルグル回すと、周囲に書かれたアルファベットの並びが変化する。

そこで、ある列について、ちゃんとした英語の文章ができるように円盤を回して位置を合わせる。その状態で別の列を見てみると、元の文章とは似ても似つかぬランダムなアルファベットの並びができているはずだ。それを暗号文として相手に送る。

それを受け取った側でも、同じ構造・同じ並びの円盤を持った機械を用意しておく。そして、送信者の側が暗号文として抽出したのと同じ列について、受け取った暗号文と同じ文字の並びをセットする。すると、送信者の側が平文をセットした列には、元の平文が現れているはずだ。

この方法では、ランダムな文字を書いた円盤を回すという考え方がすなわちアルゴリズムだ。そして、それぞれの円盤における文字の配列、それと複数の円盤の並び順が「鍵」の役割を果たしている。円盤ごとに文字の並びが違っていて、かつ、円盤を自由に入れ替えられるようにしていれば、より柔軟性が高まる。その代わり、円盤の並びに関する情報を送信者と受信者が共有していなければ、復号化ができない。

1つ問題があるとすれば、文字数が限られる点だ。棒に取り付けた円盤の枚数すなわち、暗号化できる文章の最大文字数である。これでは長文の送信には具合が悪い。

参考 :Jefferson disk(Wikipedia英語版)

ローターの登場

そこで、もっと優れた、長文を扱えるようにする機械はできないかという話になる。その方法の1つとして、電気回路を使用する方法がある。

まず、入力側でタイプライター状のキーボードを押すと、電気配線に電気が流れるようにしておく。その先に換字部を用意して、押したキーとは異なる文字を出力するような配線を、使用する文字すべての分について施しておく。その先の出力は、変換後の文字に対応するランプが点灯するようにしておいて、それを読み取って書き付けることで暗号文ができる。

話を単純にするために、復号化の手段をどうするかという話は意図的に省略したが、要は、換字を機械的に行う1つの方法ということで理解していただければよい。ただし、この方法には1つ問題がある。

機械の中に電気配線を固定的に作り込んでしまうと、換字のパターンはその時点で固定化される。すると、換字のパターンが少なすぎて簡単に解読されてしまう。固定配線にしないで、いちいち手作業でプラグコードをつなぎ替えるようにする手もあるが、手間がかかる上に間違いの元である。

そこで登場したのがローターである。ローターの両側に電気接点があり、1つの接点が1つの文字に対応する。ただし、両面の接点の文字の配列は同じではなく、かつ、内部配線によって入力側と出力側の文字が必ず変わるようにしておく。

この場合、ローターが換字表の役割を果たしている。だから、同じ配列と内部配線を持つローターが1つあるだけでは、変換パターンは1つしかできず、少なすぎる。そこで、内部配線(換字のパターン)が異なる複数のローターを用意することになる。

複数の中から1つのローターを選び出して使ってもよいが、同時に複数のローターを組み合わせて使うと、もっと話を複雑にできる。

つまり、1文字タイプするごとにローターが1段階ずつ回転するようにする。26文字のローターなら、1個目のローターが1周するには26文字タイプする必要がある。そこで27文字目をタイプすると、2個目のローターが1段階回転する。

エニグマの考え方

この考え方を使って作られたのが、かの有名なナチス・ドイツのエニグマ暗号機である。後になって4個ローターのモデルも作られたが、基本的には3個ローターだ。26文字×3個ローターなら、すべてのローターが最初の位置に戻ってくるまでには26×26×26=1万7576文字をタイプしなければならない。

エニグマ暗号機にセットできるローターは3個または4個だが、そこで使用するローターはもっとたくさんあり、その中から指定されたものを選んでセットする。そして、どのローターをどの位置にセットすることもできる。ということは、使用するローターの組み合わせに関する順列組み合わせだけでも結構な数になる。

3個のローターなら、配置の組み合わせは6パターン。5個のローターから3個を選んでセットすると、配置の組み合わせは60パターンとなる。さらに、その3個のローターの開始位置も、最初にローターを回すことで自由に指定できる(26×26×26=1万7576パターンになる)。ということは、ローター3個なら17,576×6=10万5456パターン、ローター5個のうち3個なら105万4560パターンだ。

これは、単に換字のパターンを増やすというだけの話ではない。3個のローターを使うということは、1文字の入力に対して換字が3回行われるということであり、かつ、その換字のパターンが26×26×26=1万7576パターンあるという意味である。

それでも足りないとばかりに、前面にプラグボードというものがあり、ケーブルを使って2個の文字に対応するジャック同士をつなぐことで、文字の入れ替えを可能にする。例えば「A」のジャックと「Q」のジャックをつなぐと、ローターに入力する前の文字「A」は「Q」に、「Q」は「A」に化ける。その後で複数のローターによる換字が行われる。プラグボードは、換字を行うのではなく、文字を入れ替えて話をややこしくするためのものである点に留意してほしい。

エニグマ暗号機の考え方について説明したパネル

この「使用するローターの種類と位置」「個々のローターの開始位置」「プラグボードの結線」という情報を、通信する当事者同士でそろえておけばよい。これがすなわち「鍵」の情報に当たる。こうしたエニグマの設計思想は、「アルゴリズムは公知のものだが、鍵探索を困難にすることで解読を妨げる」という、今のコンピュータ・ベースの暗号と同じである。

もし暗号機が敵に鹵獲されたとしても、わかるのは、その時点で組み込まれていたローターの内部配線だけである。それをどう組み合わせて、どの開始位置にセットして使うかがわからなければ解読は不可能であり、あり得る順列組み合わせはプラグボードまで含めると天文学的な数だから、エニグマ暗号機は難攻不落……のはずだった。

ところが、当事者は難攻不落だと思っていたエニグマ暗号機だが、まずポーランド、続いてイギリスの暗号解読者達の努力により、解読されてしまった。これが第二次世界大戦の動向に大きく影響したのは間違いない。

そのエニグマ暗号解読の話について詳しく述べることは本連載のキャパシティを超えてしまうので割愛するが、『暗号解読』(サイモン・シン著)という良書があるので、興味がある方には御一読をお薦めしたい。

そこで注目したいのは、それまで暗号解読というと重視されてきた言語の専門家ではなく、数学者が前面に出てきたことである。エニグマ暗号機と、そのエニグマを解読するためになされた努力は、暗号の世界で数学者が中心に来るようになった時代の始まりであったと言えるのだ。エニグマに限らず、同時代の他の暗号解読でも同じような傾向はあったが、特にエニグマをめぐる物語は存在感が大きかったのではないか。