この記事には複数の問題があります。改善
やノートページでの議論にご協力ください。コード (code) とは、メッセージを特別な知識や情報無しでは意味が分からないように変換する秘匿手段の一つであり、暗号の一種である。軍の運用など、ある程度の規模の活動に必要な、相当量の単語やフレーズ(あるいはもっと長いメッセージ)について、事前の合意により、別の単語、無意味な文字列、数字などに置き換える暗号である。 (まず、コードとサイファ(cipher)の分類の概要について、暗号#概要 を参照のこと) ここでそもそも、前述のような分類は、コンピュータの利用(暗号を運用する側だけでなく、攻撃側もまたコンピュータを利用できるということ)が前提となっている現代の暗号学より以前の、ロータリスイッチなどの電気機械による暗号機の時代の暗号学の頃に確立されている[1]が、現代の理論から見て一応は、コードを“syllabic(音節) and lexical(語彙) cipher”などとしてサイファの一種と見なし理論的には扱うことは不可能ではない。しかし、暗号の長い歴史の中でサイファとは別系統のものとして独自の発展や進化を遂げてきており、(日本ではどちらも「暗号」にひっくるめてしまっており、codeとcipherを訳し分ける必要がある場合のための定訳といったようなものも無いが)英語圏他欧州も含め、codeとcipherという別の語があるように、別種のものとして(暗号学では)扱われている。 (現代の)サイファでは、秘密は鍵に集中するのであり、その方式を秘匿することによる強度上の利点は純粋な理論的には存在しない。そのため、むしろ広く暗号学界によってその方式に攻撃の研究が為されたほうが安全性が保証されたものになる、と言えるし、そうでなくとも広く使われている方式の暗号を利用したほうが、その暗号通信を「特徴のある通信」にしてしまうことを防げる。一方でコードは、その方式自体が秘密でなければならない。ただしもし、そのように定義するならば、コードは、現代の暗号学による狭義の現代暗号ではありえない((狭義の)現代暗号とは、秘密が鍵のみに集中するような方式ということだから)ことになる。ケルクホフスの原理の記事も参照。 なお、英語 code は暗号化を目的としないものを含む(文字コード(character code)などの用例におけるcode[2])。その意味では、公開され市販もされていたようなコードブックというようなものもある(w:Commercial code (communications)
コードとサイファ
enciphered codeは19世紀末から20世紀半ばまで外交および軍事暗号として広く利用された。これはplaincodeの通信文(時間)を圧縮できる長所を活かしながら、オーソドックスに強度を付加できる点にあった。 しかし高度に訓練された暗号手を必要としたのが欠点であり、機械式暗号が実現されると可及的速やかに置き換わった。 placode(プレイコード)やbasecode、生の(裸の)コードとも言う。コード換字のみで暗号化する。つまり一次式暗号である。 一般にコード、符牒、暗号書(一次暗号書)、codebook、repertory、cipher dictionay、word bookとはplaincodeを指す。 多くの場合plaincodeを丸暗記するのは現実的でない、それ故に暗号書を携帯、保管、配送する必要が生じる。plaincodeを組織的に丸暗記した例としてはコードトーカーがある。 Plaincodeの編纂においては利用する組織(企業、官庁、軍隊)のモラル、ドクトリン、知識が必ず反映される。よってPlainecodeを盗んで査読すると単に相手の通信文が読めるだけでなく、計り知れない情報が推論できる。 企業の商用コードに「違法」や「賄賂」のコード語句が有れば、恐らくその企業は違法行為や贈賄をしているであろう。敵軍のコードに新兵器のコード語句があれば編纂当時に実用化されているだろう。味方の秘密兵器名がそのまま有れば当時から秘密が漏れているだろう。 たとえば、昭和19年に編纂した日本陸軍暗号書5号には「硫黄島」や「艦載機」の語句が当初採用されていなかった。つまり陸軍が硫黄島で戦い、(米海軍の)艦載機の攻撃を受けるとは想定していなかったことがわかる。 encicode(エンサイコード), superenciphered code, reciphered codeとも言う。 まずコードで換字を行い、強度を高めるためにサイファでさらに暗号化する。二次式暗号(あるいはそれ以上)である。 enciphered codeを採用する理由はいくつかある。 記号転換が許す限りサイファの形式には何ら制限はない。
また一種のコードと言えなくもないが、一種の乱数表のようなものとして、きちんとそのような目的のため設計されたもの(en:Random number book)ではなく、市販の辞書や聖書などの書籍をそのまま利用した暗号(規約さえ秘匿できれば、表自体は盗まれることの心配をしなくてよく[3]、また自国以外で活動する諜報員には入手しやすさという利点もある[4])、フィクションでの例だがシャーロック・ホームズの「恐怖の谷」に登場するような暗号は「ブック暗号」という別の分類がある(英語版で記事名が en:Book cipher である通りサイファと扱われることもあるが(注に書いた通りそれに近い性格もある)、英語版の2017年10月現在の記事には「book ciphers are more properly called codes.」とあるように、コードと扱われることもある)。
種類
PlaincodeとEnciphered code
Plaincode
Enciphered codeアルベルティの暗号円盤。例えば「出航準備完了」のplaincodeが”123”であれば、これを"bac"や"gkl"のようなenciphered codeに変換できる。
plaincodeが盗まれる、紛失する等で秘匿性が失われた(と判断された)場合に応急措置として採用する場合。
plaincodeの秘匿性を不要として、二次暗号化とその鍵変更だけで強度を確保する場合(例えば市販の商用コードをPlaincodeに用いる)
plaincodeの秘匿性も必要として、さらに強度を高める場合。