

暗号学において、コードとは意味のレベルで動作するメッセージを暗号化するために使用される方法であり、つまり、単語やフレーズが別のものに変換されます。コードでは、「change」を「CVGDK」または「cocktail lounge」に変換する場合があります。米国国家安全保障局はコードを「平文要素が主に単語、フレーズ、または文であり、コード相当物(「コードグループ」と呼ばれる)が通常、同じ長さの無意味な組み合わせの文字または数字(またはその両方)で構成される置換暗号システム」と定義しました。[ 1 ] : Vol I、p. 12フレーズまたは単語を暗号化および復号化するには、コードブックが必要です。
対照的に、暗号はメッセージを個々の文字、または小さな文字のグループ、あるいは現代の暗号では個々のビットのレベルで暗号化します。メッセージは最初にコードによって変換され、次に暗号によって変換されます。[ 2 ]このような多重暗号化、または「超暗号化」は、暗号解読をより困難にすることを目的としています。
暗号とコードの違いは、コードは通常、数学を用いずに文字または文字のグループを直接表す点です。そのため、数字は 1001 = A、1002 = B、1003 = C、… という 3 つの値を表すように構成されます。結果として得られるメッセージは 1001 1002 1003 となり、ABC を伝達します。一方、暗号は、文字または文字のグループを表すために数学的な公式を利用します。たとえば、A = 1、B = 2、C = 3、… です。したがって、メッセージ ABC は、各文字の値を 13 倍することによって得られます。メッセージ ABC は、13 26 39 となります。
符号には、暗号解読されやすいことや、扱いにくい符号帳の管理が難しいことなど、さまざまな欠点があるため、現代の暗号技術では暗号方式が主流となっている。
対照的に、コードは表現的なものであるため、個々のコードブック要素の数学的分析には適していません。この例では、メッセージ 13 26 39 は、各数字を 13 で割ってアルファベット順に並べることで解読できます。しかし、コードブック暗号解読の焦点は、頻度分析を使用して、平文メッセージ内の文字の頻度と一致する個々のコード要素の比較頻度です。上記の例では、コードグループ 1001、1002、1003 が複数回出現する可能性があり、その頻度は平文メッセージ内の ABC の出現回数と一致する可能性があります。
(過去には、あるいは非技術的な文脈では、コードや暗号はあらゆる形式の暗号化を指すのに使われることが多かった。)
コードは「コードブック」(物理的なもの、あるいは概念的なもの)によって定義されます。コードブックとは、対応する平文とともにコードグループを一覧にした辞書です。当初、コードは設計者やエンコーダーの便宜上、「平文順」でコードグループが割り当てられていました。例えば、数値コードグループを使用するコードでは、「a」で始まる平文の単語は低値のグループに、「z」で始まる平文の単語は高値のグループに割り当てられます。同じコードブックを使用して、平文メッセージを符号化されたメッセージ(コードテキスト)に「エンコード」し、コードテキストを平文メッセージに「デコード」することができます。
暗号解読者の作業をより困難にするために、暗号作成者は、コードグループと対応する平文の順序との間に予測可能な関係がないコードを設計しました。実際には、これは、エンコード用のコードグループを見つけるためのコードブックと、復号用の平文を見つけるためにコードグループを参照するためのコードブックの 2 冊が必要になることを意味しました。このような「2 部構成」のコードは、開発により多くの労力を要し、配布 (および交換時の安全な廃棄) には 2 倍の労力を要しましたが、解読はより困難でした。1917年 1 月のツィンメルマン電報は、10,000 を超えるフレーズと個々の単語を含むドイツの外交「0075」2 部構成コードシステムを使用しました。[ 3 ]
ワンタイムコードとは、あらかじめ決められた単語、フレーズ、または記号で、単純なメッセージを伝えるために一度だけ使用されることを意図しており、多くの場合、何らかの計画を実行または中止する合図、あるいは計画の成功または失敗を確認する合図として使用されます。ワンタイムコードは、一見無害な会話の中に含めるように設計されています。適切に行われれば、ほとんど検出不可能ですが、すでに疑念を抱かれている人物の通信を監視している訓練を受けた分析官であれば、「バーサおばさんが陣痛を起こした」といった発言に不吉な意味があることに気づくかもしれません。ワンタイムコードの有名な例としては、次のようなものがあります。
メッセージが事前に取り決められていないこともあり、受信者のみが知っているであろう共通の知識に頼る場合もある。例えば、当時ポツダム会談でソ連のヨシフ・スターリン首相と会談していたアメリカのハリー・トルーマン大統領に送られた電報は、原子爆弾の最初の実験成功をトルーマンに知らせるものだった。
非公式コードとは、それを使用する当事者同士が独自に作成するコードのことである。この種の通信は、戦場で軍隊が使用する手信号に似ている。
例:「昼」と「夜」が使われている文はすべて「攻撃」を意味します。次の文で言及されている場所は、攻撃される場所を示しています。
この用語の初期の使用例は、ロバート・A・ハインラインのSF小説『フライデー』[ 5 ]の登場人物であるジョージ・ペローによるものと思われる。
テロ専門家のマグナス・ランストープ氏は、9月11日の米国攻撃を実行した男たちは、基本的な電子メールと彼が「バカの暗号」と呼ぶものを使って計画を話し合っていたと述べた。 [ 6 ]
単一換字式暗号の解読は容易だが、単純な暗号であっても解読は難しい。暗号化されたメッセージの解読は、外国語で書かれた文書を翻訳しようとするのと少し似ており、基本的には暗号群とそれらが表す平文の単語の「辞書」を作成する作業となる。
単純な暗号を理解するための手がかりの一つは、英語の「the」や「a」のように、単語の出現頻度に差があるという事実です。電報では、「STOP」(文末または段落末)を表すコードグループが非常に頻繁に使用されます。これは、メッセージの意味までは分からなくても、文の構造を把握するのに役立ち、暗号解読において有用です。
同じ暗号で暗号化された多数の暗号文を集め、他の情報源からの情報を用いることで、暗号解読のさらなる進展が可能になる。
例えば、ある特定の軍隊からのメッセージにほぼ exclusively に見られ、他の場所では全く見られない特定のコードグループは、その軍隊の司令官を示している可能性が高い。また、特定の場所への攻撃に先立つメッセージに現れるコードグループは、その場所そのものを表している可能性が高い。
暗号文の断片は、暗号グループの定義を即座に明らかにする手がかりとなることがあります。暗号グループが特定されるにつれて、文脈や経験に基づく推測から明らかになる暗号グループが増え、徐々にその数が蓄積されていきます。単純な1部暗号は、2部暗号よりもこのような経験に基づく推測に弱い傾向があります。なぜなら、1部暗号のコード番号「26839」が「bulldozer」を表すと判断された場合、下位のコード番号「17598」は「a」または「b」で始まる平文の単語を表す可能性が高いからです。
暗号化されたメッセージに情報を「仕込む」または「散りばめる」には、さまざまな手法が用いられる。例えば、特定の時間と場所で敵に対して襲撃を実行し、襲撃後に送られてくる暗号メッセージを分析するといった方法がある。暗号化エラーは、暗号を解読する上で特に有効な手がかりとなる。人は必ずと言っていいほどミスを犯し、時には致命的なミスを犯すこともある。データの仕込みやエラーの悪用は、暗号に対しても有効である。
新しい暗号を作成することは、新しい言語を作り、その辞書を作成するようなもので、コンピュータが普及する以前は特に大変な作業でした。暗号が破られた場合、作業全体を最初からやり直さなければならず、暗号学者と暗号利用者双方にとって多大な労力を要しました。実際には、暗号が広く普及していた時代には、暗号解読者の妨害を防ぎ、盗まれたりコピーされたりした暗号書の有効期間を制限するために、暗号は定期的に変更されていました。
いったん暗号が作成されると、暗号書の配布は物流的に煩雑になり、暗号が漏洩する可能性が高まります。「3人が秘密を守れるのは、そのうち2人が死んでいれば」という諺がありますが(ベンジャミン・フランクリン - Wikiquote)、これは多少誇張かもしれませんが、秘密は複数の人が共有すると守りにくくなります。暗号は、少数の慎重な人だけが使用する場合は比較的安全だと考えられますが、軍隊全体が同じ暗号書を使用する場合は、セキュリティの確保ははるかに困難になります。
対照的に、暗号の安全性は一般的に暗号鍵の保護に依存している。暗号鍵は盗まれたり、他人に漏洩したりする可能性があるが、変更や配布ははるかに容易である。
暗号解読の難易度を高めるため、メッセージを最初に符号化した後、さらに暗号化することが一般的だった。数値コードの場合、これは通常「加算値」と呼ばれるものを用いて行われた。加算値とは、コードグループに桁ごとに加算される長い鍵番号のことで、10を法として計算される。コードブックとは異なり、加算値は頻繁に変更された。有名な日本海軍の暗号、JN-25もこの方式を採用していた。