暗号紹介:Chaocipher 暗号の仕組みとその特徴
用語について
「Chaocipher」の発音について、字面を見ると「チャオサイファー」のようだが、解説動画における発音を聞くと「ケオサイファー」あるいは「ケイオサイファー」のように聞こえる。おそらくこれは「ケオス」すなわちchaos(混沌)と「サイファー」すなわちcipher(暗号)の合成語なのだろうか。暗号名称の由来は未確認であり、確証はない。
考案者の名「Byrne」も発音に少々窮するが、解説動画における発音は「バーン」に近いように聞こえる。
ここではカタカナ表記を保留し、アルファベットのまま記述する。
Chaocipherとは
1918年、John Francis Byrneにより考案された暗号。Byrneはこの暗号の普及に努めたが、アメリカ政府機関はこれを採用しなかった。それでもByrneはこの暗号が解読不能であると確信し、売り込みを続けた。1953年、Byrneは自伝『Silent Years』を著し、Chaocipherによる暗号文を載せ、暗号解読者たちの挑戦を待った。その暗号化方式は伏せたままである。解読できる人間が現れぬまま2010年になり、Byrneの家族がアメリカ国立暗号博物館に関係資料を寄贈したことで、はじめて暗号化方式が明らかとなった。こうしてようやくByrneの挑戦状は解読された。
ケルクホフスの原理というものがある。「暗号は、秘密鍵以外のすべてが公知となってもなお安全であるべきである」というものである。これは暗号化方式を秘匿しようとしても、いずれは必ず敵の知る所になるという経験則に基づく。Byrneはこれを知らなかったのだろう。暗号化方式を公開せず、事実長らく解読されなかったChaocipherだが、仮に公に採用された場合、いずれ敵の容赦ない分析を受けることになっただろう。もしそうなった場合、Chaocipherは破られずにいられただろうか。
以下のサイトも参考のこと。
Chaocipherを研究しているMoshe Rubin氏のサイト「The Chaocipher Clearing House」
暗号解析サイトdcode.fr内のChaocipher暗号化・復号ツール
アプリのダウンロード等不要で解析ツールを使える便利なWebページ。
暗号機の仕組み
以下、Rubinの論文(参考文献参照)を参考にしつつ解説を進める。
Chaocipherは2つのディスクを使う。「左ディスク」と「右ディスク」である。ディスクの円周上に、26のアルファベットが書かれたタブ(つまみ)が並んでいる。タブは取り外し、付け替えが可能である。2つのディスクには歯車がついており、互いにかみ合わせて回転させることが出来る。両歯車の歯車比は1:1であり、片方が時計回りに回る時、もう片方は反時計回りに回る。両ディスクを離してそれぞれ独立で回転させることも出来る。それぞれのディスクの12時の位置がzenith(天頂)、6時の位置がnadir(天底)と呼称される。
そのモデルを図1に示す。
もともとのモデルは左右のディスクを用いているが、ソフトウェアの実装の仕方によっては左右ではなく内側と外側のリングなど、その他のモデルを用いる場合もある。その場合もやっていることは本質的には変わらない。
暗号化方式
まず、左ディスクと右ディスクのアルファベットの配置を決める。これがChaocipherの鍵である。
この記事ではRubinの論文にならい、ディスクを用いず、アルファベットを1行で書き下す単純化したモデルを使い、アルファベットの配列を表現する。ここでは図2に示す配列を用いる。
両ディスクのアルファベットの配置が決まったら、暗号化を行う。
暗号化方式は以下の3つのステージからなる。
1、プレーンテキスト文字に対応する暗号文字を決定する
2、左ディスクのアルファベットを入れ替える
3、右ディスクのアルファベットを入れ替える
(2と3の順番は逆でもよい)
ステージ1:プレーンテキスト文字に対応する暗号文字を決定する
暗号化は1文字ずつ行う。プレーンテキストの文字を右ディスクから探し出す。左ディスクの同じ位置にある文字が、暗号文字である。
例としてAを暗号化する。右ディスクにおいてAは13番目の位置にある。左ディスクの13番目の文字はPであるから、AはPに暗号化される(図3)。
ステージ2:左ディスクのアルファベットを入れ替える
左ディスクのアルファベット入れ替えは以下のステップからなる。
1、ディスクを回転させ、直前に得た暗号文字を1番目の位置(zenith)に移動させる。
2、2番目の位置のアルファベットを取り外す。
3、3番目から14番目の位置(nadir)のアルファベットを、空いた隙間を埋めるように詰める。
4、先ほど取り外したアルファベットを、14番目の位置(nadir)に挿入する。
これを実際に行ってみる。
1、直前に得た暗号文字はPである。よってPが1番目の位置に来るようにディスクを回転させる。
2、2番目の位置にあるアルファベットEを取り外す。
3、3番目から14番目の位置にあるアルファベットを詰める。
4、空いている14番目の位置に先ほど取り外したEを挿入する。
この様子を図4に示す。
こうして新たな左ディスクのアルファベット列が得られた。
ステージ3:右ディスクのアルファベットを入れ替える
右ディスクのアルファベット入れ替えは次のステップからなる。左ディスクの入れ替えと異なる点があることに注意。
1、ディスクを回転させ、直前に暗号化したプレーンテキスト文字を1番目の位置(zenith)に移動させる。
2、さらにもう1文字分だけディスクを回転させ、2番目の文字が1番目の位置(zenith)に来るようにする。
3、3番目の位置のアルファベットを取り外す。
4、4番目から14番目の位置(nadir)のアルファベットを、空いた隙間を埋めるように詰める。
5、先ほど取り外したアルファベットを、14番目の位置(nadir)に挿入する。
これを実際に行ってみる。
1、直前に暗号化したプレーンテキスト文字はAである。よってAが1番目の位置に来るようにディスクを回転させる。
2、さらにもう1文字分だけディスクを回転させ、2番目の文字Vが1番目の位置に来るようにする。
3、3番目の位置にあるアルファベットKを取り外す。
4、4番目から14番目の位置にあるアルファベットを詰める。
5、空いている14番目の位置に先ほど取り外したKを挿入する。
この様子を図5に示す。
こうして新たな右ディスクのアルファベット列が得られた。
左右のディスクが新たなアルファベット配列になったところで、再びステージ1に戻る。
暗号化
キーワード「THOMAS」と「JEFFERSON」を用いてアメリカ独立宣言の一節を暗号化する。ディスクのアルファベット配列は、左ディスクのアルファベット配列が「THOMASBCDEFGIJKLNPQRUVWXYZ」、右ディスクのアルファベット配列が「JEFRSONABCDGHIKLMPQTUVWXYZ」である。
暗号化すると次のようになる。
暗号化の最中のディスクの様子を図6に示す。
ディスクの様子をステップごとに並べると、暗号文を担当する左ディスクの1番目の列にWGZMXHJBQI…と暗号文が現れ、右ディスクの26番目の列にWHENINTHEC…とプレーンテキストが現れる。
復号方法
鍵を知っている正当な受信者が、受け取った暗号文を復号する方法を述べる。基本的に暗号化方法とほぼ同一である。まず鍵を使って左右のディスクのアルファベット配列を決めた後、以下の操作を繰り返し行う。
1、暗号文字に対応するプレーンテキスト文字を決定する。つまり左ディスクから暗号文字を探し出し、右ディスクにおいて対応する位置にある文字をプレーンテキストの文字とする。これは暗号化のときとは反対である。
2、左ディスクのアルファベットを入れ替える。これは暗号化の時と同じである。
3、右ディスクのアルファベットを入れ替える。これも暗号化の時と同じである。
解読方法
1、キーワードを推測する
暗号文のみが提示され、2つのディスクのアルファベット配列は分からないが、鍵と思しき単語やフレーズに心当たりがある場合の解読法。単純に鍵から2つのディスクのアルファベット配列を生成し、それを使って暗号文を解読するという方法である。人力で簡単にできる方法はこれしかないと思われる。
余談を一つ。Chaocipherに限った話ではないが、思いつくキーワードを試してもうまくいかない場合、暗号文の方に何らかの仕掛けが施されているかもしれない。例えば暗号文を反転した上で出題しているという可能性もある。
筆者は「プレーンテキストを一度反転させたうえ、Chaocipherで暗号化し、再度反転させたものを暗号文として出題する」という事例を見たことがある。
2、既知のプレーンテキストから鍵を構成して解く
暗号文と、プレーンテキストの一部が分かっており、2つのディスクのアルファベット配列が分からず、その手がかりがない場合の解読法。Byrneはその挑戦状において、暗号文に対応するプレーンテキストの一部を開示している。そのような場合の解法である。
Carl Schefflerが2010年に示している通り、鍵を構成する方法自体は存在するのだが、コンピューターの力を要するところがあり、人力では不可能と思われる。
3、暗号文のみから解く
暗号文しか分からない場合の解読法。
2016年、George Lasryらが暗号文のみから解読を行う方法を発見した。分割統治法によるアプローチとindex of coincidence(IC)を用いて、山登り法という探索アルゴリズムで解読文を探す方法であるらしい。残念ながらその論文"Cryptanalysis of Chaocipher and solution of Exhibit 6"の全文を見ることは諸事情からできていない。おそらく、これも人力では不可能な解読法と思われる。
Chaocipherの特徴
・頻度分析を行うと、すべての文字が均等な確率で現れるわけではないが、一般的な英文に比べると偏りがなくなっている。上述のアメリカ独立宣言の暗号文における分布を図7に示す。
・index of coincidence(IC)は低く、ランダムなテキスト(IC≈0.0385)に近い。例に挙げた暗号文の場合、IC=0.03997...である。
・Chaocipherはautokey cipher(自己鍵暗号などと訳される)である。つまり、ある暗号化ステップは、それ以前のすべてのステップの影響を受けている。2つのディスクの状態が、プレーンテキストと暗号文によって逐一変わるからである。周期はきわめて長く、事実上「周期の長さ=文章の長さ」と言える。
まとめ
・ChaocipherはJohn F. Byrneが解読不能の暗号を目指して考案した暗号。公に採用されることはなかった。2010年に暗号化方式が公開されるまで、長らく解読されなかった。
・キーワードを推測する以外の解読方法は人力では難しいと思われる。
・Chaocipherはautokey cipherの一種であるため、周期を推測して解読することが出来ない。
参考文献・資料
・Chaocipher – The Cipher Nobody Wanted
解説動画。
・Moshe Rubin, "CHAOCIPHER REVEALED: THE ALGORITHM", 2010
Chaocipherについて基本的なことが書いてある論文。
・Carl Scheffler, "Chaocipher: Cracking Exhibit 1"
既知のプレーンテキストと暗号文からChaocipherを破る方法を説明している。筆者はほとんど理解できていない。
この記事が気に入ったらサポートをしてみませんか?