TOUCH THE SECURITY Powered by Security Service G

コラム

2019.03.20

近代暗号物語 ――コンピュータの父・チャールズバベッジが挑んだビジュネル暗号 1/2

写真:サイエンス・ミュージアム(ロンドン)に展示される、チャールズバベッジの肖像と「能」 / Alan Levine from Strawberry, United States [CC BY 2.0]

19世紀の英国の数学者チャールズ・バベッジ(1791~1871)は、人類で初めてプログラム可能な計算機「解析機関(アナリティカル・エンジン)」を考案したことから、コンピュータサイエンスの分野ではよく知られた偉人だ。

ここでは、チャールズ・バベッジの数ある功績の一つとして挙げられる、ある暗号の解読について取り上げてみたい。

(前半)

1.マッドサイエンティスト? ――現代におけるバベッジの像

サイバーパンクの立役者、ウイリアム・ギブスン&ブルース・スターリング著「ディファレンス・エンジン(上)(下)」は、バベッジの計算機が完成していたという、空想の世界が舞台となる。(ハヤカワ文庫SF)

バベッジの考案した計算機。それは当時の主要エネルギー源であった蒸気機関を動力源とするものであり、今日から見るとどこか奇天烈で、強烈な印象を抱く人も多いだろう。

故に、彼はスチームパンク小説などのSFの世界でも有名である。フィクションに登場するマッドサイエンティストは、だいたいバベッジ、もしくは交流システムを考案したニコラ・テスラのエピソードを使ってキャラクターが設定されている。

しかしこの計算機は、極めて実用性の高いものだった。

電卓やGPSなどという便利なものがない当時、航海をするには星の測量をして自分の位置を計算した。このとき、三角関数表などの数表を使う。しかし、これが間違いだらけで、バベッジは、この数表を自動的に計算して、印刷する機械を作ろうと考えた。そこで試作されていたものが、階差数列を利用して、数表を次々と計算する機械「階差機関(ディファレンス・エンジン)」である。

更にその発展型として模索された「解析機関(アナリティカル・エンジン)」は、パンチカードによるプログラムを交換することで、さまざまな数表が印刷できるという、もし完成していれば7つの海を支配する大英帝国に大きな貢献ができるものだった。

2.ハッカーとしての天質と功績

バベッジは数学者としても優秀で、ケンブリッジ大学のルーカス講座の教授を務めていたこともある。数学講座としては最も権威あるもので、2代目教授はアイザック・ニュートンであり、近年ではスティーブン・ホーキングが務めている。

一方で、バベッジは明らかにハッカーだった。錠前の構造の研究をしたり、変装術に熱中していたこともある。当然、暗号解読にも熱中し、当時「解読不能」と言われていたビジュネル暗号の攻撃法を開発している。

3.ビジュネル暗号 ――近代まで解読不能だった暗号

暗号の基本的な方式は、アルファベットの文字を別の文字に置き換える「換字式」と呼ばれるものだ。最も単純なものでは、それぞれの文字を3文字前の文字に置き換えるシーザー暗号がある。IBMを1文字ずらして置き換えるとHALになる。「2001年宇宙の旅」に登場する人工知能HALは、こうして命名されたとも言われる。

このシーザー暗号は、あまりにも単純であるため、暗号の専門家は、紙とペンすら使わずに、暗号文を直接読んでしまうことができるという。そこで、「n文字ずらし」ではなく、文字をランダムに別に文字の文字に置き換える方法も使われた。しかし、この場合、どの文字をどの文字に置き換えたのかを示す換字表が必要になり、この換字表を送信者と受信者の間でどうやって安全に受け渡すかという問題が生じる。

そこで、フランスの外交官、ブレーズ・ド・ビジュネルは、1586年に出版した「秘密の書記法について」の中で、新しい暗号方式を公表した。これがビジュネル暗号と呼ばれ、19世紀のバベッジの時代まで「解読不能」と言われていた。

4.ビジュネル暗号の仕組み

ビジュネル暗号は、ビジュネル方陣と呼ばれる表を元に換字表を作っていく。ご覧の通り、アルファベットをずらしながら並べた表で、誰にでも簡単に作ることができる。

ビジュネル暗号に使われるビジュネル方陣。アルファベットをずらしながら並べた単純なもの。簡単に作れるため、送受信者間で受け渡しをする必要がない。

ここで、鍵語を決める。文字数に制限はなく、長ければ長いほど暗号強度は高くなるが、暗号化と復号化の手間がかかるようになる。ここでは6文字のPERSOLにしてみる。

ビジュネル方陣からPERSOLの6行を抜き出して換字表として使う。原文の1文字目はPの行を使って暗号化し、2文字目はEの行を使って暗号化し、7文字目は再びPの行に戻って暗号化をしていく。復号化をしていくときは、換字表を逆に見ていけば原文が現れる。

鍵語を「PERSOL」に定めたら、ビジュネル方陣から鍵語の各行を抜き出して並べる。これが暗号表になる。原文の1文字目はPの行で、2文字目はEの行で…と暗号化していく。送受信者間で鍵語を受け渡すだけで、暗号化、復号化ができる。

このビジュネル暗号の利点は、送信者と受信者の間で、鍵語や換字表のやりとりをしなくて済む点だ。両者が同じ本を持っておき、送信日が7月23日であれば「23ページの7番目の単語を鍵語にする」と定めておくだけでいい。

もうひとつの利点は、頻度分析攻撃に強いことだ。英文の場合、出現する頻度が多い文字はeであり、以下、t、a、o、i、n…と続くことがわかっている。単純な換字暗号では、eは必ず別の同じ文字に置き換えられるので、暗号文にその文字が頻出することになる。そのため、暗号文の文字の出現回数を数えて、「いちばん多い文字がeである」という推測ができることになる。さらに、th、he、inなどの2文字の出現頻度、the、ingなどの3文字の出現頻度なども手がかりになり、クロスワードパズルの要領で暗号を解読してしまうことができる。

しかし、ビジュネル暗号では、1文字目から6文字目までは、同じ文字であってもまったく別の文字に置き換えられるため、このような頻度分析攻撃が使えない。鍵語をじゅうぶんに長くすれば、暗号文どの文字もほぼ同じ割合で出現することになり、これゆえに「解読不能」と呼ばれていた。

バベッジはこのビジュネル暗号の攻撃手法を開発した。注目をしたのは、同じ文字列が繰り返し登場する周期性だった。

2/2に続く

記事一覧に戻る