暗号

暗号とは、セキュア通信の手法の種類で、第三者が通信文を見ても特別な知識なしでは読めないように変換する、というような手法をおおまかには指す。いわゆる「通信」に限らず、記録媒体への保存などにも適用できる。

1. 概要
-----

秘匿通信を行う上で最も単純な方法は「木を隠すなら森」という諺のごとく、通信文そのものの所在を隠してしまうことである。歴史上実際に行われたものとしては、通信文を丸めて飲み込んだり、ベルトの内側に書き普通の被服のように身につけたり、新聞の文字に印をつけて文章を作る、頭を剃りあげて頭皮に通信文を刺青し、再び頭髪が生えそろうことで隠す、などもあったようである。「暗号らしい手法」としては「ステガノグラフィー」といい、「それとはわからないような形で」記録する、というものである。画像などに情報を埋め込む「電子透かし」にも同じ技術を利用するが、電子透かしではその画像の著作権情報などといった関係のある情報を埋め込むのが目的であるのに対し、ステガノグラフィーは全く無関係な情報を秘密のうちに紛れ込ませる、という点が異なる。またいわゆる縦読みなども一見して普通の文章の中に見えるためステガノグラフィーの一種と言えなくもない。

広義では以上のような方法も暗号に含まれるし暗号学が探求する対象であるが、狭義では、その見た目が「なんだかわからない」という、難読であると明確なものを指して特に暗号に分類する。

狭義の暗号は、古典的には主要な分類に、以下の2つがある。

「コード」 通信文内の、単語やフレーズといったある程度意味のある塊の単位で、あらかじめ取り決めてある記号と交換する。

「サイファー」 通信文に対し、意味とは関係なく、文字毎の単位で、あらかじめ取り決めてある置換や転置を掛ける。

「コード」は一般に、軍の運用に必要なものなど、ある程度の語彙について秘密の記号群を決めておくものであるが、「討ち入り」「開戦」などといった特定の重要な件のみについて、「○◇△といえば、～のこと」等と事前に取り決めておくことで秘匿することも行われた。個人間で行うものから組合やギルド等の特定のグループ内で行うものがある。事前の取り決めではなく、特定の人達だけが知る事項などを元に、意味は同じままで、言い方を変えることで秘匿することもある。秘匿したい特定の単語だけ置き換えることも、コードブックと呼ばれる辞書を作成して全ての単語を置き換えることもあり、歴史的な例としては、前者は「スコットランド女王メアリーの暗号」、後者は「ルイ14世の大暗号」や「ナポレオンの小暗号」などが知られている。

「サイファー」は、機械化以前は一般に作業手数が大きいといった欠点があったが、機械化以後はサイファーが主流の暗号である。機械化に次いで、暗号のコンピュータ化の時代となったが、それらの暗号も、だいたいサイファーに分類するのが妥当であろう。

また以上のようなセキュア通信のための狭義の暗号に限らず、相手の身元を確認する認証や改竄の検出、貨幣の偽造防止技術、電子署名、認証、ハッシュ関数、電子マネーその他、情報セキュリティの多くの局面で、暗号はキーテクノロジとなっている。

なお、暗号化の逆の操作を表す語は「復号」であり、本来符号化に対するそれ同様「～化」とはしないが、「復号化」という誤用はかなり広く定着している。

2. 暗号学
------

3. 歴史
-----

4. 種類
-----

まず、古典的な暗号と現代的な暗号を分けるものとして、ケルクホフスの原理がある。現代的な暗号理論よりも前の時代には、暗号の「方式」と「鍵」の識別は明瞭ではなかったし、そのどちらも秘匿されねばならぬものであった。すなわち攻撃側の視点からは、方式がわかってしまえば、それによって、鍵を得ることも容易になってしまうのであった。現代の暗号は、秘密は鍵に集中しており、その方式はむしろ公知のものであったほうが、その強度なども広く研究されているために、むしろ安全である。

鍵を使わない方法は、一度敵に知られた方法は二度と使えない、暗号の信頼性を客観的に評価することができないなどの問題がある。例えば単純なシーザー暗号は、方式自体がバレないようにしなければ安全性が保てないほど脆弱であるし、ある程度の量の暗号文があれば何百年以上も前からある頻度分析という手法によって方式自体もバレてしまう。それに対し鍵を使う方法は、アルゴリズム自体を敵に知られても構わない方式を目標としており、一度考案した方式は鍵を変えることで何度でも使える、アルゴリズムを広く公開することで信頼性を十分に検討できる、などの多くの利点がある。

近代以降になると、このように「鍵さえ秘密にしていれば暗号化・復号の方法を公開しても安全が保てる」ことが暗号にとって望ましい性質であることが明確化された。

古典暗号の時代の「サイファー」の主要な2種類は、以下の二つである。

換字式暗号 - ある文字に別の文字を割り当てる。単一換字、多表式換字などがある。
転置式暗号 - 文字の順序を並べ替える。上の2つの分類は、現代暗号でもなんら変わるものではないが、現代的には次のような暗号の分類がある。このうち前者の共通鍵暗号は、分類としては古典暗号時代からなんら変わらぬ暗号の方式であって、「現代暗号の分類」とするのはむしろおかしいのだが、後者との対比としてしばしば挙げられるものである。後者の公開鍵暗号は、暗号をその時代の最新の数理で検討するようになった現代暗号ならではの暗号と言える。

共通鍵暗号 - 暗号化・復号で同じ鍵を使う。
公開鍵暗号 - 暗号化・復号で異なる鍵を使う。近代以降、前述のように、秘密は鍵に集中すべきことから、暗号の問題は鍵の配送にあることが明確になった。暗号系を含む全体を通信システムとして検討したならば、そもそもそのような「鍵」をやりとりできるほどに安全な通信路があるならば、その通信路で本文も通信してしまえば良いからである。この問題には、公開鍵暗号方式の発明によって一応の決着が付いた。すなわち、公開鍵暗号であればその非対称なペアになっている鍵のうちの片方は秘密ではないため、配送の問題が生じないからである。ただし通常は計算量の理由から、公開鍵暗号を本文の暗号通信に直接使うことはせず、公開鍵暗号を利用した安全な鍵交換方式によって共通鍵を安全に交換し、その鍵によって共通鍵暗号通信をおこなう。

コードやサイファーのような記号による暗号ではなく、スクランブルといったアナログ技術による広義の暗号システムとしては、かつてアナログ電話の時代に盛んに研究されたものがある。秘話の記事を参照。

さらに、より「アナログ」な事例としては、少数民族の言語や方言などによる、相手側が仮に傍受しても瞭解が不可能な会話を利用したものがある。太平洋戦争での事例として、アメリカ側はナバホ語による通話を利用し、日本側は薩隅方言による通話を利用した。

具体的な暗号方式の一覧は、暗号理論を参照。

4.1. コードの例
----------

ルイ14世の大暗号： コードブックは「act=486、ion=102、…」のように音節単位で3桁の数に対応させる。暗号文「486-102」を復号すると act-ion になる。19世紀末フランス軍の暗号解読者バズリが解読を発表した。
日露戦争で使われた暗号文：「アテヨ イカヌ ミユトノケイホウニセツシ、ノレツ ヲハイタダチニヨシスコレヲワケフ ウメルセントス、ホンジツテンキセイロウナレドモナミタカシ」。コードブックは「アテヨ=敵、イカヌ=艦隊、ノレツ=連合艦隊、…」のように秘匿したい単語をカナ3文字に対応させている。平文は「敵 艦隊見ユトノ警報ニ接シ、連合艦隊 は直チニ出動、コレヲ撃沈 滅セントス、本日天気晴朗ナレドモ波高シ」となる。
真珠湾攻撃で使われた暗号文：「ニイタカヤマノボレ1208」。なお、「ト」の連打、「トラ」の反復などもよく知られているが、これらは正確には電信の聞き分け易い音を合図としたものである。日本海軍機が搭載していたのは無線電話機ではなく、無線電信機であったため、交戦時に複雑な電文の送信・聴取は困難なことから、和文電信で聞き取りやすい符号の組み合わせとなった。「ト」は、「ラ」はで、[ト][ト][ト]...＝･･―･･ ･･―･･ ･･―･･...＝全軍突撃せよ）