Open3

アナログな暗号を作る

atsuo MURATAatsuo MURATA

デジタルな暗号が使えない環境で暗号のやりとりをしたいときにどうすればよいのか

サイモン シン 「暗号解読 」が劇的に面白かったので色々と考えたことをつらつらと書くだけの場所

atsuo MURATAatsuo MURATA

まず、ここでいう 暗号 は中間者に伝達内容の中身を知られずに目的の者に何かを伝達する方法と定義する。
この前提に立ち、世に広まっているデジタル式の暗号ではなく、アナログな(アナクロな?)方法で暗号による伝達を考えていきたい。

条件

  1. 電子形式の暗号を使用しない
  2. 中間者は常に存在するものとする
  3. 連絡手段は 手紙 のみとする
  4. 手紙 はB5程度の大きさの通常の紙であり、文字はボールペンで書くものとする

方法を考える

1. 中間者に気づかれないためには

中間者が常に存在する環境下では、暗号を使用していることが判明すれば解読に乗り出されてしまう。
仮に伝達内容が何らかの意味でクリティカルだった場合(クリティカルでなければむしろ暗号化する意味がないが)、致命的な損失を被ることになるケースがほとんどだろう。
ここで伝達手段を 手紙 と限定してしまった以上、紙や封筒などに細工を施すことが考えられるが、 そこに証拠を残さない(あるいは、気づかれても問題ない・見逃される程度の跡であること) ことも暗号化の条件として当然織り込まれてくる。

2.

atsuo MURATAatsuo MURATA

伝統的な方法

サイモン・シンの「暗号解読」では、古より使用されてきた暗号化方法・秘密裏に情報を伝達する方法が書かれている。
そのいくつかを紹介したい。
本当はシーザー式の暗号などから始めたいところではあるが、今回掲題した内容にも関わってくるため、より時代をさかのぼって見てみたい。

原始的な暗号化

中間者に理解不能な文字で書く

非常に単純である。日本語ネイティブならサンスクリット語で書かれた文字を読める者は少ないだろう。
しかし、あえてこの方法を使用した場合、暗号または読まれたくない文章であることが明確なため、中間者の警戒を励起するのに十分である。

頭にタトゥーを入れて髪で隠す

そのままだが、頭に文字をタトゥーして髪が伸びるまで待ち、本人が受け取り側まで赴いて髪を剃って文言を見せるというもの。
非常に面白かったため覚えているが、この方法はデメリットが多すぎる。
書ける文字にかなり制限が加わる、髪が伸びるまで待つ時間が相当にかかる。一つの伝達事項でほぼ1人消費してしまうと思われるため、効率が悪い。移動時間も当然あり、途中でタトゥーを入れた伝達者が死亡するなどアクシデントに見舞われると台無しになる。

スキュタレー暗号

棒に革紐を巻きつけ、そこに文字を書くというもの。受け取り側と発信側は同じ半径の棒を所持しており、革が届いたらその棒に再度巻き付けて文字を読む。
紀元前5世紀にスパルタ人が考案したそうだ。
原始的な道具を使用しており、革紐をうまく隠せればかなり有効な暗号伝達手段であると考えられる。
たしかダヴィンチコードでも同じような手法で暗号化が・・違うなあれは区切られた棒を回すやつだったっけ?


単一換字式暗号

これも原始的だが、暗号史のステップとしては一歩進んだものとなる

シーザー暗号

ユリウス・カエサルが使用した暗号で、
元の文章のアルファベットから文字をある数だけ前後にずらして暗号化した文章を作成する暗号方式であり、この数が鍵(キー)となっている。
※ 上記パラグラフはほとんどWikipediaから引用し、修正を加えた。

アルファベットは26文字しかないため、鍵の数が26しかない。
つまり、前後に動かせる範囲が26以内に収まる。
このため、シーザー暗号であると判明していれば、26通り文字を動かすだけですぐに解読されてしまう。
1つ2つの単語が成立した瞬間に鍵を特定できるため、暗号強度としては全く弱い。

多表換字式暗号

ヴィジュネル暗号

実はこの暗号方式に似たものがシーザー暗号の前に発明されており、ポリュビオスの暗号表がほぼそれに該当する。
ポリュビオスの考案したものはギリシャ文字で下記のような24*24の表を作成(画像はアルファベットに応用したもの)、例えば「AND」を暗号化するときは「11 33 14」とする。

これを改良したものがヴィジュネル暗号である。
下図はヴィジュネル方陣と呼ばれるものである。

暗号化の説明が面倒なので引用する。

例として鍵を arm、平文を code とすると、ヴィジュネル方陣で、
aとcの交わりはCであり、rとoはF、mとdはPというように暗号文 C, F, P が得られる。
平文が鍵よりも長い場合、鍵を繰り返して用い、最後の平文eはaとの交わりでEとなる。
すると、平文「code」は暗号文「CFPE」となる。
ここで平文が暗号文と同一の文字になる箇所があるが、解読者にそれは分からない。
大事なのは(例では3である)鍵の周期を解読者は知らないということだ。

複合にはこの逆を行う。
https://www.weblio.jp/wkpja/content/ヴィジュネル暗号_ヴィジュネル暗号の概要

鍵は周期的に変更するルールを設け、これを発信・受信側で共有する。
弱点は2点ある

  1. 暗号化、復号化の作業が面倒だったことであり、あまり使用されなかった。
  2. 鍵の周期性。変換表は鍵によって逐次切り替えられるが、鍵自体は固定のため、鍵の長さごとに暗号文を調べると、それは同じ変換表によって単純換字された暗号になっていた。

ここでは、アナログ暗号作成のヒントになりそうなため紹介した。

単一換字式暗号と多表換字式暗号 の解読

頻度分析という手法により、換字式暗号は簡易に解読されるようになった。
頻度分析とは、各言語の中で使用される単語に含まれる文字の割合(頻度)を算出し、暗号文中に現れる文字の頻度と照らし合わせてあたりを付けていく暗号解読方法である。

これを見よ!
https://ja.wikipedia.org/wiki/頻度分析_(暗号)

これ以降はエニグマのような電子暗号が使用されていくことになるため、テーマ外として割愛する。