コード_(暗号)
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事には複数の問題があります。改善やノートページでの議論にご協力ください。

脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2016年8月)


独自研究が含まれているおそれがあります。(2016年8月)


正確性に疑問が呈されています。(2016年8月)


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

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

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

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

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


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

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

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

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

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

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

Plaincodeの編纂においては利用する組織(企業、官庁、軍隊)のモラル、ドクトリン、知識が必ず反映される。よってPlainecodeを盗んで査読すると単に相手の通信文が読めるだけでなく、計り知れない情報が推論できる。

企業の商用コードに「違法」や「賄賂」のコード語句が有れば、恐らくその企業は違法行為や贈賄をしているであろう。敵軍のコードに新兵器のコード語句があれば編纂当時に実用化されているだろう。味方の秘密兵器名がそのまま有れば当時から秘密が漏れているだろう。

たとえば、昭和19年に編纂した日本陸軍暗号書5号には「硫黄島」や「艦載機」の語句が当初採用されていなかった。つまり陸軍が硫黄島で戦い、(米海軍の)艦載機の攻撃を受けるとは想定していなかったことがわかる。
Enciphered codeアルベルティの暗号円盤。例えば「出航準備完了」のplaincodeが”123”であれば、これを"bac"や"gkl"のようなenciphered codeに変換できる。

encicode(エンサイコード), superenciphered code, reciphered codeとも言う。

まずコードで換字を行い、強度を高めるためにサイファでさらに暗号化する。二次式暗号(あるいはそれ以上)である。

enciphered codeを採用する理由はいくつかある。

plaincodeが盗まれる、紛失する等で秘匿性が失われた(と判断された)場合に応急措置として採用する場合。

plaincodeの秘匿性を不要として、二次暗号化とその鍵変更だけで強度を確保する場合(例えば市販の商用コードをPlaincodeに用いる)

plaincodeの秘匿性も必要として、さらに強度を高める場合。

記号転換が許す限りサイファの形式には何ら制限はない。換字式や転置式、ストリームやブロック暗号が使える。

よく知られる乱数式暗号や乱字式暗号とはenciphered codeの一種である。俗に「乱数の剥ぎ取り」と呼ばれる作業はenciphered codeを元のplaincodeに戻そうとする事である。

15世紀にアルベルティが最初に考案したとされる。彼は1?4の数字から構成されるplaincodeを作成し、次いで彼の考案した暗号円盤で換字することでenciphered codeとした。しかしこの考案は19世紀末まで実用化される事はなかった。

一般に未知のenciphered code解読は対照平文が入手できても困難である。しかしplaincodeが盗まれたり鹵獲されたりあるいは理論的に再構築(reconstruction)されると一挙に強度が低下する欠点がある。これはヴィジュネル暗号において仮定語(クリブ)が利用可能になるのと等しい。

plaincodeの設計(編集)の善し悪しが、enciphered code全体の強度を左右する事がある。
通信文を全て暗号化できるか
平文とコードを混ぜる場合

極めてセンシティブな語句、例えば金額や非合法な単語だけにコード(コードネーム、符牒、隠語)を割当てて残りは平文のまま通信する。コード編纂が非常に簡便だが暗号強度は低くなる。例えば接続詞、前置詞、疑問符、句読点等はコードにされない事が多いが、これらは判明しているとコード解読に役立つからである。
全てコードにする場合

大手商社や外交、軍用コードが該当する。サイファと同様に「暗号化できるものは全て暗号化せよ」のセオリーにより、使用される語彙を統計調査してコードを割り当てる。通信する集団の文体や言葉遣いが揃っている事、揃う様に教育する事も重要である。編纂時に未知か不要と判断された固有名詞等をコード化する場合は2つの方法、スペルアウトと補遺がある。また必要であれば付録辞典も併用してコード編纂を効率化する。
スペルアウト

応急的に採用。事前に相手との取り決めは不要である。単文字や音節のコードを組み合わせて綴る。なお解読側からは貴重な手がかりとなる。

例えば第一次世界大戦にてドイツ陸軍は野戦コードに"Distilliertes Wasser"(蒸留水)が無かった当時、これをd + ist + i + ll + ie + r + te + s + wasserと9つのコードでスペルアウトした。連合軍コード解読班は高頻度のistやsを含む特徴的なコード群を探す事で他のコードも芋づる式に特定できた。またサイファからコードに配置換えになった暗号手が原語を探すのを面倒がり代わりに全て単文字でスペルアウトした事故もある。
補遺プロシアのコードブック。補遺が手書きで追加されている

spare groupとも言う。頻繁にスペルアウトする語句を将来追加する為に対応原語を未定としたコードを幾つか用意しておく。補遺のコードに原語を割り当てるのはコードの運用母体が行うので、個々の発信者が独自には利用できない。
付録辞典

例えば少人数が狭い地域で扱うplaincodeであれば人名、地名、艦名、商品名は都度スペルアウトして済むが、規模が大きくなると付録辞典(別冊の専用plaincode)を用意する必要が有る。当然ながら本編のplaincode側に「次のコードからは人名事典」「人名事典の終わり」といったコードも用意する必要が有る。

入れ変わりの多い人名、艦名、商品名の管理が別冊内で一元管理できるので、本編plaincodeを編集する必要が無い。

膨大な地名や商品名には膨大なコードを割り当てる必要があるが、本編のコードと重複割当が可能になる。

1冊制と2冊制

日本語訳から誤解しやすいが冊数自体というよりは、正確には「単表制」「2表制」とでも呼んだほうが暗号方式的には正しい(運用まで含めたシステム全体から見れば、表が分かれている場合、暗号化と復号のどちらか片方の作業は片方の1冊のみで行えるという運用上の点からは、2冊という表現も当を得ていないわけでもない)。英語の "alphabetical" と "randomized" という表現は、語の対応あるいは表の構成をあらわしていると言える。
1冊制

one-part code、alphabetical codeとも。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:26 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef