2017年06月02日

歴史の雰囲気が漂う暗号方式 〜戦時中のADFGVX暗号〜

応援クリックを1日1回宜しくお願いいたします。



2日ほど空きましたが(頭を鍛えるゲームの記事と空白の1日)、本日も暗号を進撃します。

本日はADFGVX暗号という覚えにくそうな名称です。

名前の由来は、ADFGVXを1文字ずつモールス信号にしたときに6文字のそれぞれが間違われにくいらしいです。

確実にAかDかFかGかVかXかが分かるように電信できることが重要な時代(第一次世界大戦中)に作られました。

Aがツ、ツー
Dがツー、ツ、ツ
Fがツ、ツ、ツー、ツ
Gがツー、ツー、ツ
Vがツ、ツ、ツ、ツー
Xがツー、ツ、ツ、ツー
う、うー・・・う、うん判別しやすい文字と思われます。


暗号方式としては簡単に言うと、ポリュビオス暗号表+転置式暗号です。

換字表というポリュビオス暗号表のような表でアルファベット+数字の36文字を6$\times$6の表でADFGVXの2文字に変換して、平文$\times$2の文字数の文字列にします。

その文字列をある手順で行列に入れて、ある方向に読み出す方法で転置式暗号を入れます。


ADFGVX暗号における転置式暗号

鍵文字というアルファベット文字列を処理します。

最初の方の文字を優先して、同じ文字を消去します。(例:ppapabc → pabc)

アルファベットを0〜25の数字に変換します。(例:pabc → 15,0,1,2)

小さい順に番号を付けます。(例:15,0,1,2 → 4,1,2,3)

この数字の個数を列にもつ行列考えます。(例:n行4列)

換字表で変換した文字列を行列の1行目から1文字ずつ入力していきます。
このとき、行列の右下の方に空欄ができるときもあります。

小さい番号の列から、1行目から最後の行まで読み出す。

これが暗号文となります。

例はWikiに。






復号化はWiki通り、暗号化の逆の手順です。

ADFGVX暗号の解読

ポリュビオス暗号表だけではなくて、1文字を2文字にした後で転置式暗号も入っているので、単一換字式暗号に対する頻度分析は効きません。


戦時中は推定を工夫しつつ解読したそうです。

一般解読法(General Solution for ADFGVX)はこちらです。
GENERAL SOLUTION FOR THE ADFGVX CIPHER SYSTEM

Substitution keyなどは分かりますが、時間できたら読もうと思います。


最後に、ADFGVX暗号のアプリケーションを作成しました。
↓↓↓
ADFGVX暗号

復号化するときには大文字・小文字を区別できなくなるので、全て小文字としています。



posted by Line Segment at 18:00 | Comment(0) | TrackBack(0) | ホームページ | このブログの読者になる | 更新情報をチェックする