シーザー暗号の解読
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/08 15:20 UTC 版)
復号シフト取得される平文0 exxegoexsrgi 1 dwwdfndwrqfh 2 cvvcemcvqpeg 3 buubdlbupodf 4 attackatonce 5 zsszbjzsnmbd 6 yrryaiyrmlac ... 23 haahjrhavujl 24 gzzgiqgzutik 25 fyyfhpfytshj シーザー暗号は暗号文単独攻撃によって簡単に解読することができる。以下の2つのシチュエーションを想定する。 攻撃者は何らかの単一換字式暗号が使われていることを知っている(もしくは推測している)が、それがシーザー暗号かどうかまでは分からない。 攻撃者はシーザー暗号が使われていることを知っているが、シフトの数が分からない。 はじめのケースでは、頻度分析や単語パターンなどの、一般的な単換字式暗号と同様の解読手法を使用することができる。シーザー暗号は特徴的なアルゴリズムであるため、解読者はすぐに法則性に気づき、解読もしくは推測することができるだろう。 二番目のケースにおいては、より直接的に暗号解読を行える。英語であれば26通りといったように、シフト可能な数は限られているため、総当たり攻撃を試みることができる。総当たり攻撃の一つの方法は、暗号文の一部をシフト可能な数だけ表に書き出してみる事である。この方法は「completing the plain component」と呼ばれている。例として、"EXXEGOEXSRGI"という暗号文があるとき、平文は4つシフトしたものであると、すぐに識別できる。もう一つの総当たり攻撃は、暗号文の各文字の下に、逆順にシフトさせたアルファベットすべてを記載していく方法である。この際、縦方向にアルファベットを逆順に並べた紙片を用意しておくとより手早く行うことができる。その紙片を使って暗号文を並べると、別のいずれかの列に平文が出現する。 文字の頻度分布と組み合わせることで、別の総当たり攻撃を試みることができる。暗号文に出現する文字の頻度のグラフと、使用されている言語の文字の分布期待値のグラフにより、人はグラフの特徴を比べることで、いくつシフトしているかを容易に発見することができるだろう。たとえば、英語の平文ではEやTが最も出現頻度が高く、QやZが最も出現頻度が低いといった特徴がある。コンピュータを使用し、たとえばカイ二乗検定などを実施することでも、暗号文の出現頻度と平文の出現頻度の比較を行うこともできる。 自然言語の場合、ほとんどの場合において解読結果は1通りに定まるが、平文が極端に短い場合、複数の解読候補が存在しうる。たとえば、英語において、"MPQY"という暗号文は"aden"または"know"と解読しうる。同様に、"ALIIP"は"dolls"または"wheel"に、"AFCCP"は"jolly"または"cheer"に変換しうる。詳細は判別距離を参照。 シーザー暗号による暗号化や復号を複数回行った場合でも、安全性に変化はない。なぜなら、A 個分のシフトと B 個分のシフトを別個に行ったとしても、それは (A + B) 個分のシフトを行ったものと同等だからである。数学的には複数の暗号鍵による暗号化を行ったとしても、それはひとつの群として扱われる。
※この「シーザー暗号の解読」の解説は、「シーザー暗号」の解説の一部です。
「シーザー暗号の解読」を含む「シーザー暗号」の記事については、「シーザー暗号」の概要を参照ください。
- シーザー暗号の解読のページへのリンク