ADFGVX 暗号は、フリッツ ネーベル大佐によって発明され、第一次世界大戦の終わりに導入されたドイツの暗号化システムです。
これはポリュビオスの広場からインスピレーションを得たもので、当初は GEDEFU 18 (GEheimschrift DEr FUnker 18: 無線電信家の番号18) と呼ばれていました。四角形内の文字の座標は数字ではなく、無線 (TSF) で送信される ADFG という文字によって与えられました。このシステムの独創性は、最初の置換後に得られたテキストが正方形の列の置換を受けることです。
ADFGVX 暗号の使用と復号化
ADFGVX 暗号は、ドイツのパリ攻撃に備えるために 1918 年 3 月 5 日から使用されました。
6月以降、ドイツ人はADFGXという文字に満足できなくなり、文字Vも登場しました。1つは25文字、もう1つは36文字の記号で、後者は10を加えたものです。数字を完全なアルファベットに変換します。代替マスは毎日変更されるキーを使用して構築されました。 36 個のシンボルの 2 乗を使用する暗号は、ADFGVX 暗号として知られています。
6月2日、フランス側で状況が緊迫していたとき、ジョルジュ・パンヴァン中尉は非常に綿密な統計研究に基づいて最初のメッセージを解読することに成功し、その後他の多くのメッセージを解読したため、ドイツ軍は奇襲と攻撃の効果を完全に失った。彼らの攻撃の失敗に貢献した。

暗号化の原理
暗号化は 2 つの手順で実行されます。
- 文字の置換によるメッセージの暗号化。
- キーの使用に基づいて取得されたメッセージの転置。
代替品
まず、メッセージの各文字が、暗号化テーブル内の位置に対応する 2 つのコードに置き換えられます (最初に送信されるコードを示す 6 つの列と、2 番目の送信コードを示す 6 行で構成されます)。もちろん、2 人の特派員は同じテーブルを使用する必要があります。
たとえば、次の暗号化テーブルを使用するとします。
| 最初のコード | |||||||
|---|---|---|---|---|---|---|---|
| もっている ·– | D –··· | F ·–· | G ––· | V ···– | × –·– | ||
| 2番 コード | もっている ·– | 8 | t | b | w | r | q |
| D –··· | p | 4 | c | g | 2 | 9 | |
| F ·–· | 3 | ああ | 5 | メートル | × | e | |
| G ––· | d | もっている | z | j | s | y | |
| V ···– | L | h | 7 | あなた | v | 0 | |
| × –·– | n | 1 | k | 6 | 私 | f | |
起動攻撃メッセージは次のようになります: AV DG AX FD XF VA DG VG VG DG GV DA 。
ADFGVX という 6 文字が使用されるのは、メッセージがモールス信号で転写されるときに、これらの文字が混同されるリスクが低いためです (上の表の対応するコードの下に示されています)。

移調
コードのすべての難しさの原因となる 2 番目のステップは、キーワードに基づく転置です。
- まず、コード化されたメッセージが新しいテーブルに転記され、その最初の行にキーワードが含まれます。
- 次に、キーワードを構成する文字がアルファベット順に分類されるように列を入れ替えます。
前の例でキーワードcat を使用すると、次の表 1 が得られます。キーの文字をアルファベット順に分類した後、表 2 に最終的な暗号化メッセージが含まれます。
|
|
したがって、テーブルを読み取ることで得られる最終的なメッセージは、 DA VG FA XD AX FV VD GG DV HH DG VAとなります。受信者は、元の転置キーを知っていて、6×6コーディングテーブルを持っている場合、同じ手順を逆の順序で実行して復号化します。
コード表と使用されるキーを、作成したテキスト (たとえば、短いテキスト内の特定の単語または数字の2番目の文字または 2 桁目) に格納することによって、またはこのテキストを書籍から取得することによって、隠すことができます。ページ番号、または辞書やディレクトリのページの最初の単語のみを平文で送信してください。
暗号解析
このコードの解読 (暗号解析) の難しさは、コードの 2 つの部分が配置されている相対的な位置が分からなければ、元のメッセージ内の文字の出現をその相対的な頻度だけで識別できないという事実に関係しています。ただし、キーが非常に長い場合でも、考えられる組み換えの数は非常に少ないままです。元のメッセージが十分に長ければ、考えられるすべての間隔でコード ペアを探索するだけで、特徴的な周波数を特定することができます。キーの長さを推定し、したがって転置テーブルの幅を推定します。
次に、得られた各ペアの頻度を使用して、最初の文字を推定し (メッセージの想定言語で最も頻度の高い文字から始めます。たとえば、文字e 、 s 、 a 、 n )、次の式で他の頻度の低い文字を推定します。辞書検索。コーディング テーブルには比較的少数のボックス (文字 26 個と数字 10 個) が含まれているため、元のメッセージで使用されている言語に固有の既知の統計を使用して、非常に簡単にコード テーブルを完全に埋めることができます。
この暗号化アルゴリズムの改良点は、より大きなコーディング テーブルを使用することで構成されます。たとえば、文字のグループ、または既知のランダム シーケンスからの数字を伴う文字のセルを含む 6x6x6 の 3 次元テーブルです。次に、元の文字または数字ごとに 3 つのコードを取得します。また、句読点をコード化し、大文字や区切り文字のスペースを区別することもできます。はるかに大きな転置テーブルを使用して、転置キーを増やすこともできます。

