コード (暗号)
Channel: 宇宙のすべての知識 プリンシピア
Date: 24/06/2019

コード (暗号), by Wikipedia https://ja.wikipedia.org/wiki?curid=1624017 / CC BY SA 3.0

#暗号技術
#言葉の文化
コード (暗号)

コード (code) とは、メッセージを特別な知識や情報無しでは意味が分からないように変換する秘匿手段の一つであり、暗号の一種である。軍の運用など、ある程度の規模の活動に必要な、相当量の単語やフレーズ（あるいはもっと長いメッセージ）について、事前の合意により、別の単語、無意味な文字列、数字などに置き換える暗号である。

（まず、コードとサイファ（cipher）の分類の概要について、暗号#概要 を参照のこと）

ここでそもそも、前述のような分類は、コンピュータの利用（暗号を運用する側だけでなく、攻撃側もまたコンピュータを利用できるということ）が前提となっている現代の暗号学より以前の、ロータリスイッチなどの電気機械による暗号機の時代の暗号学の頃に確立されているが、現代の理論から見て一応は、コードを“syllabic(音節) and lexical(語彙) cipher”などとしてサイファの一種と見なし理論的には扱うことは不可能ではない。しかし、暗号の長い歴史の中でサイファとは別系統のものとして独自の発展や進化を遂げてきており、（日本ではどちらも「暗号」にひっくるめてしまっており、codeとcipherを訳し分ける必要がある場合のための定訳といったようなものも無いが）英語圏他欧州も含め、codeとcipherという別の語があるように、別種のものとして（暗号学では）扱われている。

（現代の）サイファでは、秘密は鍵に集中するのであり、その方式を秘匿することによる強度上の利点は純粋な理論的には存在しない。そのため、むしろ広く暗号学界によってその方式に攻撃の研究が為されたほうが安全性が保証されたものになる、と言えるし、そうでなくとも広く使われている方式の暗号を利用したほうが、その暗号通信を「特徴のある通信」にしてしまうことを防げる。一方でコードは、その方式自体が秘密でなければならない。ただしもし、そのように定義するならば、コードは、現代の暗号学による狭義の現代暗号ではありえない（（狭義の）現代暗号とは、秘密が鍵のみに集中するような方式ということだから）ことになる。ケルクホフスの原理の記事も参照。

なお、英語 code は暗号化を目的としないものを含む（文字コード（character code）などの用例におけるcode）。その意味では、公開され市販もされていたようなコードブックというようなものもある（w:Commercial code (communications)）。そういったものを使う場合、必要であれば、それと別に秘密のコードブックも用意し、電報などでのやりとりには、さらにそちらで変換する。

また一種のコードと言えなくもないが、一種の乱数表のようなものとして、きちんとそのような目的のため設計されたもの（）ではなく、市販の辞書や聖書などの書籍をそのまま利用した暗号（規約さえ秘匿できれば、表自体は盗まれることの心配をしなくてよく、また自国以外で活動する諜報員には入手しやすさという利点もある）、フィクションでの例だがシャーロック・ホームズの「恐怖の谷」に登場するような暗号は「ブック暗号」という別の分類がある（英語版で記事名が である通りサイファと扱われることもあるが（注に書いた通りそれに近い性格もある）、英語版の2017年10月現在の記事には「book ciphers are more properly called codes.」とあるように、コードと扱われることもある）。

enciphered codeは19世紀末から20世紀半ばまで外交および軍事暗号として広く利用された。これはplaincodeの通信文(時間)を圧縮できる長所を活かしながら、オーソドックスに強度を付加できる点にあった。

しかし高度に訓練された暗号手を必要としたのが欠点であり、機械式暗号が実現されると可及的速やかに置き換わった。

placode(プレイコード)やbasecode、生の(裸の)コードとも言う。コード換字のみで暗号化する。つまり一次式暗号である。

一般にコード、符牒、暗号書(一次暗号書)、codebook、repertory、cipher dictionay、word bookとはplaincodeを指す。

多くの場合plaincodeを丸暗記するのは現実的でない、それ故に暗号書を携帯、保管、配送する必要が生じる。plaincodeを組織的に丸暗記した例としてはコードトーカーがある。

Plaincodeの編纂においては利用する組織(...