数学者オイラーの残した暗号文の解読

数学者レオンハルト・オイラーの暗号とのかかわりと言えば,オイラーの定理として知られる整数論の基本定理が今日のRSA暗号の基礎になっていることがまず挙げられるだろう.オイラーは転置暗号に応用できるナイトの旅(ウィキペディア)の研究もした.そして200年後になって初めて解読されたラテン語の暗号文も残していたことをKlausis Krypto Kolumneで知った.

オイラーの暗号文が含まれるのは1744年7月4日のクリスティアン・ゴルトバハ(ゴールドバッハ・オイラーの定理,ゴールドバッハ予想などで知られる数学者)への手紙だ.本題は解析学なのだが,末尾付近で暗号文を持ち出している.

しばらく前に次のような暗号文(ドイツ語原文はlogogryphum)を作りました.すべての記号は文字の意味をもち,平文はラテン語で書かれています: pxqſwlznjdvynſtiddkqxhleebfpxdfgtlzbccfbkſodxo
kfnglqxnſchejmlckzxhrfwjgfhxvzjnbgyxcdgixkoxj
mlncoigdxvzflmeſnfyjqfangvnylrcxfonbfjalrkwſnbf
pjoizoxqknubroſadgiaxwkcbrbcklofrnjwngſzfhgjfc
bcfvqjtxeevtbzfyjsbzhſmlnbgſsqjwglnxvzfkonbcoigd
xvrkfjalzxtſnilenfgvcboofcfxnnfgnkbcjnnjynxvplgn
bfzfoxeejdgxbcjcnſdyvdbhzlnvyxmbcblobbcyfekonb
ceiobfplwsxzxfjcndbhrlzqxsſonbcoljfſyqfmjeevhlee
xoiexmgicfdnktvoldxnfbxolcktvpxrnv
記号の意味に変化がないとはいえ,この種の暗号文(Schrift)は簡単には解読できないかもしれません.

オイラーとゴルトバハの間のその後の文通ではこの暗号文に触れられておらず,ゴルトバハが暗号文を解いたのかどうかはわからない.この書簡は1843年に刊行された書簡集にも収録されていたが,長年解読されずにいた.

オイラーは解読のためのヒントを与えてくれている.まず平文はラテン語と明かしている.「すべての記号は文字の意味をもち」というくだりは,ヌルがないことを示すだけでなく,転置暗号でなく換字暗号を使っていることを示唆しているといえるだろう.「記号の意味に変化はない」というのは,ヴィジュネル暗号のような多表式ではないことを表わしている.

この暗号文の解読にはオイラー関係の文書を集める団体によって1907年に懸賞がかけられても進展がなかったが,1953年に改めて懸賞を告知したところ,ピエール・スペジアリが解読した(スペインの暗号フィレンツェの暗号との関連で私も氏の別の著作を引用したことがある).だが紙媒体でしか論文が流通しない時代にあって,数学者たちがその内容を知ることはできなかった(デーヴィッド・カーンの大著『コードブレーカーズ』(1967)p.765でも言及されているだけ).そこで,1973年にハンス・ロールバハも自身の解読を公表した.

ラテン語の暗号解読というのも一興かと思うので,両氏の解読過程を紹介したい.

スペジアリによるオイラーの暗号文の解読

まずラテン語の文字頻度はI E U T A M S N R O ...となる.ラテン語では最も多いI E U T Aだけでテキスト全体の半分を占めるが,オイラーの暗号文では408文字中,最も高頻度のnでも34回しか現われない.ラテン語の文字21文字(K,W,Y,Zがなく,IとJの区別がない)に対して,暗号文には27通りの記号(アルファベット26文字とſ [長いsと呼ばれるsの異体字])が使われていることから,高頻度文字には複数の記号が割り当てられていると思われる.

同じ文字の連続は母音と子音を区別する手がかりになる.同じ文字が連続する箇所は次のとおり.

iddk, leeb, bccf, xeev, boof, xnnf, jnnj, xeej, obbc, jeev, leex

連続する文字の両隣に現われ,それ自身は連続して現われないもの(i, k, l, f, x, v, j)は,母音と思われる.b, o, cは連続して現われることも,連続する他の文字の隣に現われることもある.このうちbは連続して現われることもあるが(obbc),子音のように連続するo, cの隣に現われるパターンが3つもあるので(leeb, bccf, boof),母音と思われる.(ラテン語にはiiとかvuといった綴りもあり,短い暗号文中でたまたま子音が連続して現われないこともあると思われるので,このロジックは甘いと思うのだが,少しでも可能性があればそれを追求していかないと暗号解読はできない.)

eは連続して現われるパターンが5つもあり,一方,単独で現われるのは6例しかない.低頻度文字でこのような特徴をもつのはLと思われる(nullum, illa, bellum, augella, ancillaなど連続して使われる例が多い).

繰り返し現われる文字列に着目すると,fjalrkwſnとfjalzxtſnがある.このうちkとxは母音だと仮定した.両者が同じ母音だとすると,この2つの文字列は同一である可能性が高い.つまり,r=z,w=tということになる.(これもかなり大胆な仮定だと思う.)

経験上,母音よりも子音のほうが特定が容易.母音はみな同じような頻度なので.

ラテン語で最も高頻度の子音はT, M, S, Nで,これらを暗号文の高頻度記号にあてはめていくやり方は,悪いとは言わないが効率が悪い.

ncoという,高頻度の3子音の連続に着目する.ラテン語でそのような3文字はMST, MTR, NTS, NTM, NTR, NST, RST, STR, STMが考えられる.だがまだ絞り込む材料がない.

そこで低頻度の記号に着目する.たとえばaは暗号文中に5回しか現われていない(fangv, jalrk, ſadgiaxwkc, jalzx;下線は母音と思われるもの).母音(と思われる記号)を含まないang, adgの2つに着目する.高頻度記号のnはT, M, S, Nのどれか,より低頻度のgはN, R, Dのどれか.だとするとa=Xで,ang=XTRだと思われた(小文字が暗号文,大文字が平文の文字).直前の母音fはEだ.

adgのdはgよりもさらに低頻度で,連続して現われる.P, B, Fが候補となり,adg=XPRが思いつく.

ncoに戻ると,n=Tとしたので,高頻度の子音cはMかSだろう.暗号文でc=Mをあてはめてもうまくいかなかったので,c=Sとする.すると,次のようなパターンがある(母音に下線を付した).

ncoigdxvzf
TS  RP   E

少し上にはxを含み近くにaが2回現われる箇所がある.

adgiaxwkc
XPR X   S

ここでk=xが同じ母音だと仮定しているので,PROXIMISという単語が浮かび上がる.それをあてはめると上記の例は次のように補足できる.

ncoigdxvzf
TS ORPI  E

xvzfについて,nxvzf=TI..EがTIONEだと思われるので,上記はSCORPIONEと思われる.(結局,手がかりになるかと思われた高頻度の3子音の連続ncoは,語末の-nと語頭のco-が続いただけのことで,単語の一部ではなかった.)

ここまでくればあとは芋づる式に解読できる.

ロールバハによるオイラーの暗号文の解読

暗号文の文字頻度(多い順にn, f, x, ...)をラテン語と比べてみれば,転置暗号ではなく換字暗号であることは明らかだった.とはいえ,高頻度文字がそれほど突出していないことから,同じ平文文字に複数の記号が割り当てられる同音換字暗号(ホモフォニック暗号)であると思われた.ラテン語ならk,w,y,zは使われず,jもほとんどない.さらに,当時iとj,uとvは区別なく使われていたことから,平文の使用文字は20となる.暗号文ではアルファベット26文字に加えて,ſ(長いs)というsの異体字も使われていたので27字ある.つまり,7文字は他の文字と同音字になっているということだ.

まず,同音字の特定を目指した.そのために繰り返し現われるシーケンスに着目する.coigdxvは2回現われるが,その次の文字は一方ではr,他方ではz.fjalという文字列も2回現われ,次の文字はそれぞれrとzだった.このことから暗号文におけるrとzは等価だと予想できる(もちろんそうでない可能性もあるが,とりあえず何か仮定をしないと先に進めない).dbhzl,dbhrlというグループが現われることも,z=rという仮定を支持している.さらに,xvzjと3回現われるxvzfとも同じとするとj=fとなる.さらに,nnfgnとnnjynでj=fとすると,g=yとなる.このあたりになるとかなり大胆な仮定に思えるが,fyj(2回)とjgf,nylとnglといった3字連接があることから支持されると考えられた.

こうして同音字の特定(仮定)が進むともっと長い文字列の比較もできるようになる.fjalrkwſnとfjalzxtſnでr=zであることを考えると,k=x,w=tと推定できる.やはりこれだけだと大胆過ぎると思われる仮定だが,nnfgnkとnnjynx,koxjとxokf,zxfjとrkfjといった例から支持されるといえる.

これで7つのうちの5つの同音字がわかったことになる(残り2文字はſとvと予想される).まとめると,

j=f,k=x,w=t,y=g,z=r

となる.ラテン語の平文で使われないj,k,w,y,zが同音字に割り当てられているということは偶然とは考えにくい.


ここで暗号文の同音字を一方の文字に統一したもので改めて頻度統計を取ってみる.この際,ロールバハは単に各文字を数えるだけではなく,次にくる文字別の内訳も作った.2字連接を調べる連接表の簡略版といえる.

2字連接ではQUが最も顕著な特徴をもつ.Qの次には必ずUがきて,他の文字はこない.ところが,連接頻度表からはそのような特徴をもった文字はみつからない.暗号ではよくあるのだが(オイラーがどの程度,一般的な暗号の慣行を知っていたのかは定かではないが),平文のQUはまとめて暗号文の一つの記号に対応していると思われた.それでもQ(QU)は比較的低頻度で,その次は必ず母音だという特徴がある.ラテン語やイタリア語では特に(英語やドイツ語に比べ)母音の頻度が高い.

そう思って連接頻度表を見ると,p=QUの次にくるのはx, l, fしかない.これらの相対頻度から,f=E,x=I,l=Aと思われる(ただし,lは平文のAにしては頻度が低すぎるのでl=Oの可能性もある).

また,暗号文にeeという連続が現われ,eが低頻度であることから,eはD,L,Pのいずれかと思われる.このうちe=Lをこれまでわかったこと(仮定)にあてはめてみると,

I ALLEQUI
xhleebf xd
 E ILL
qftxeevtbr
ILLE
xeefg
  E ELL  ALLI
gqfmfeevhleexoi

このうち3番目のILLEはもっともらしいと思われた.そうでなくとも,2番目の例からbとvは母音と思われる.bとvの頻度からすると,b=U,v=Oと思われる.とすれば,非常に高頻度の2字連接bcはUSと思われる.

連接頻度表に戻ると,(左端の)vとiは同じような連接相手をもつことがわかる.ſとlも同様である.こうして,残り2つの同音字v=i,ſ=lが得られた.上記でv=i=Oとすれば,

  E ELLO ALLI O
gqfmfeevhleexoi

となり,こうなると欠けている文字を補うのは難しくない.

 DEBELLOGALLICO
gqfmfeevhleexoi

de Bello Gallicoは「ガリアの戦いについて」の意味のラテン語で,有名なカエサルの著作『ガリア戦記』のことだ.

ここまでくればあとは芋づる式に判明する.暗号文の末尾の部分は

CAESAR DE BELLO GALLICO LIBRO SEPTIMO CAPITE VICESIMO QUINTO(カエサル,ガリア戦記,第7巻,第25章)

となる.他の部分は,若干の暗号化のミスや版の異動はあるものの,ガリア戦記の一節だった.

解読結果

解読された平文と暗号表は次のとおり.

Quidam ante portam oppidi Gallu[s], qui per manus se[b]i ac pici[s] traditas glebas in ignem e regione turris proiiciebat, scorpione ab latere dextro transiectu[s] exanimatu[s]que concidit. Hunc [e]x proximis unus iacentem tran[s]gre[s]sus eodem illo munere fungabatur; [e][a]dem ratione ictu scorpioni[s] exanimato altero succeseit tertius et tertio quartu[s], nec ille prius est a propugnatoribus uacuus relictus locu[s] quam [オイラーはここで『ガリア戦記』の数語を抜かしている] fini[s] est pugnandi factus. Cae[s]ar de Bello Gallico libro septimo capite uicesimoquinto

暗号文ではところどころ f(=E)とすべきところが ſ になっているが,これはよく似た字形の転記ミスの可能性が高い.さらに,Sをfと暗号化している箇所があるが,ロールバハは表の暗号文字と平文文字を取り違えたものと推測している(S→cと暗号化すべきところ,F→sというところを見てしまった).スペジアリは暗号文字fをEとSの両方の欄に入れており,散逸しているオリジナルの手稿で2通りのfの字体があったのではないかと推測している.

講評

オイラーの暗号を解読した2氏のやり方は,独立に解読しただけあってアプローチが異なっている.

スペジアリはまず母音と子音を区別している.これは常套手段であり古来論じられてきたものだが(ポルタフォークナー),オイラーの暗号では単語の切れ目がわからないので少し難しい.スペジアリは連字を手がかりに論じているが,そのロジックは盤石ではないように思われる.だが100%の確実性を待っていては暗号解読はできない.少しでも可能性があると思ったら追及してみないことには進まない.

fjalrkwſnとfjalzxtſnのように3文字も違う文字列を,3文字のうち同じ位置に母音があるというだけで同じ文字列とみなしてしまうのも同様で,その3文字がmesとnosだった可能性だってあるはずでかなり乱暴な仮定だとは思うのだが,結局は同じ文字列という読みは当たり,この文字列はeexanimatだった(1語というかたまりではなかった).

母音と子音の区別ができたときに3子音の連続に着目したり,低頻度の文字に着目したりする点はおもしろい.(Xが手がかりとなる例は別稿で引用したDevos (1967), p.48でも言及されている.)比較的低頻度なのによく連続して現われるeをLと推定する点は両者共通だ.

ロールバハは母音と子音の区別からはいるのではなく,まず同音字の特定を目指した.長い文字列の次が同音字というだけでは危ういところだが,そうして予想したr=zを他の箇所で確認しているので安心できる.その後のj=f,g=yはかなり大胆な予想だと思ったのだが,(私は同様のやり方で失敗したことがある)3字連接で確認を取っているので正解だった.(他にもチェックの結果排除した同様の仮定はあったのだろう.)

7つのうちの5つの同音字が仮定できたところでロールバハは連接頻度表を作成した.最も特徴的なQ-Uの連接は使えなかったが(QUがひとかたまりとして扱われていたため),QU+母音の特徴から一気にQU,E,I,Aを特定している.このあたりからはロジックとしては甘いように思われるが,可能性のあるものを追及して成功した結果を記しているのだろう.

暗号解読では間違いないヒントが得られることはめったにない.両氏の解読プロセスは,論理的には必ずしも断定できなくても,可能性があれば追及することが必要だということを改めて教えてくれる.スペジアリも,Le facteur chance joue aussi quelquefois en faveur de celui qui persévère.(運という要因も,辛抱強く努力する者に有利にはたらくことがある)と述べている(p.7右下).

参考文献

P. Speziali (1953), "Le logogriphe d'Euler", Bulletin de la Société suisse des bibliophiles, 10me année, No.1/2, avril 1953 (pdf in the Friedman archives;フリードマンが人伝にスペジアリの解読に関心を示したのに応えてスイス在住のスペジアリが論文をフリードマンに送付した際の送り状(1953年11月23日付)がついている)

Hans Rohrbach (1973), "The Logogryph of Euler", Journal für die reine und angewandte Mathematik (Göttingen University)

The Chapel Hill weekly. [volume], November 27, 1963 (Chronicling America) (10年前のスペジアリによる暗号解読に関する講演の案内記事)

Paul Heinrich Fuss (ed.) (1843), Correspondance mathématique et physique de quelques célèbres géomètres du XVIIIème siècle, vol.1 (Google) p.293にオイラーの暗号文

Juškevič and E. Winter (ed.), (1965) Leonhard Euler und Christian Goldbach, Briefwechsel 1729-1764 (snippet at Google), p.200にオイラーの暗号文(ロールバハによれば,長いsが普通のsとして印字されており,若干のミスプリもあるという)



©2021 S.Tomokiyo
First posted on 3 January 2021. Last modified on 9 January 2021.
Cryptiana: Articles on Historical Cryptography
inserted by FC2 system