換字式暗号

換字式暗号（かえじしきあんごう、Substitution cipher）、あるいは換字暗号（かえじあんごう）は、平文を、1文字または数文字単位で別の文字や記号等に変換することで暗号文を作成する暗号である。文字の変換ではなく並べ替えによって平文を読めない状態にする転置式暗号と共に、古典暗号の代表的な暗号の一つであり、16世紀頃には換字式・転置式という分類がなされている。
概要.
最も古い暗号の一つであるシーザー暗号は、最も単純な換字式暗号の一つであり、文字から文字に1文字単位で変換する方式（単純換字暗号）である。シーザー暗号の変換ルールは「3文字シフト」であった。
しかし、9世紀頃にはこのような単純な暗号は、変換ルールが固定の1対1写像である限り、どのような変換であっても解読可能であることが知られていて、以来、暗号解読されないように、色々な改良が行われ、様々な換字式暗号が登場した。さらに近代のエニグマ他に代表される機械式暗号も、変換ルールを機械の利用により複雑にする技巧を凝らした、換字式暗号の一種と言える。
シーザー暗号は、1文字を別の1文字に変換する方式であるが、普通の文字に変換するのではなく単語や数字・記号・図形等に変換する暗号もあり、有名なものから無名なものまで数多くある。
などがある。
図形に変換する暗号として、アーサー・コナン・ドイルの「踊る人形」（1903年）がよく知られているが、類似の換字表は1874年にも発表されている。新聞のクイズ欄にて換字式の暗号文を掲載することもあった。換字表には、モールス符号、アスキーコード、JISコードなどのように秘匿用途ではないものもあるが、戦時に表を取り替えて暗号として使用した例もあった。
換字式暗号は初期には紙と鉛筆だけで暗号文を作成していた。変換ルールが複雑な場合や効率よく変換を行う目的で、変換表や円盤などが使われることもあった。ヴィジュネル方陣やアルベルティの暗号円盤などが知られている。
なお、"換字" はそのまま読むと"かんじ"となるが、"漢字"と同じ読みだと紛らわしいため、"かえじ"と読む慣わしがある。
分類.
換字式暗号には、変換ルールの性質（1対1、1対多）や種類（単一固定、複数可変）、変換の単位（1文字か複数文字）などによって次のような分類がなされている。
具体的な暗号方式の一覧は、暗号理論を参照。
構造.
換字式暗号は、
として、
として表現できる。#CI,#COを集合のサイズ、#keyを鍵の長さ、key[i]を鍵のi+1番目とする。
シフト暗号は、CO=CI, KEY=[0..(#CI-1)], ci∈CI, co∈CO, key∈KEY, #key=1として、
となる。シーザー暗号はシフト暗号の鍵が3の場合なので、
である。アフィン暗号は、key={a,b}, aは#CIと互いに素な整数, bは任意の整数として、
ヴィジュネル暗号は、key∈KEY^i, #key=i, reg=0 として、
となる。ヴィジュネル暗号で#key=1の場合は、シフト暗号と同じになる。
ボーフォート暗号 (Beaufort cipher) は、アルファベットを逆順に並べてからシフトする暗号で、
となり、ENC_bとDEC_bは同じ手順で行えるという特徴がある。
アフィン暗号をベースとした多表式暗号は、key={a,b}^i として、
となり、シーザー暗号からボーフォート暗号までを含む暗号となる。
ヴィジネルが考案した自己鍵暗号は2種あり、key∈KEY,#key=1,reg=keyとして、
となる暗号である。ENC_v2は暗号文から鍵が直接判明するので暗号としては全く安全ではないが、鍵の生成方法としては過去のciの全てを次の鍵に影響させるという点で新しいアイデアであった。
歴史.
歴史については暗号史も参照。
換字式暗号は、暗号文を平文に戻すには変換を逆に行えばよいため、変換ルールが特定されると暗号文も解読されてしまう。文字のシフトのような単純な変換ルールでは、ルール自体が容易に推測されてしまうため、より複雑なルールが作られた。数文字おきに文字を対応させた上でシフトしたり（アフィン変換）、鍵語を使った変換（鍵の重複文字を除いて並べ、他の文字をその後に並べる）などが考案された。しかし、固定の変換ルールでは平文の統計的性質が暗号文に残ってしまうため、頻度分析に対する安全性という点では無力であった。そこで、変換ルール自体を切り替えて使用することが考案された。それがヴィジュネル暗号などの多表式と呼ばれる方式である。その他、1文字単位ではなく、複数文字単位で変換したり、平文や暗号文自体を変換ルールにフィードバックすることも考案された。
現代の暗号では、もっぱら数理的にデータを扱うため、ある程度の関連は言えなくもないものの、基本的には古典的な分類である換字式といった分類を当てはめて考えることはない。単純な換字式暗号はROT13など、暗号というよりも、ネタバレの記述を一読ではわからない程度に難読化する、「ひねりを加える」程度の用途などに見られる。
安全性.
一般的にアルゴリズムが公開された古典暗号は、安全ではないと考えるべきである。
単純換字は、頻度分析によって解読可能である。同音換字は、文字単位の出現頻度を平均化できるため、単一文字での頻度分析は難しくなるが、2重音字 (digram) や3重音字 (trigram) での頻度分析で解読できる可能性がある。
多表式であっても周期換字で、周期が短い場合には、一致反復率やカシスキー・テスト（頻度分析）などにより周期を特定した上で、頻度分析を行うと解読できる場合がある。