株式会社シベスピ 従業員ブログ

シベスピの社員ブログ。技術・想い・経験沢山書いていきます!

古典的な暗号化技術とその限界

毎度のことながら、ブログに書けるようなネタが無くて困っています。
最近の出来事といえば...思い付きで遠くまで洋菓子を食べに行ったとか、ヒューズから電源取ってドラレコを取り付けたとか色々ありますが
うーん、書こうにもオチがないし、ドラレコの件は写真ばかりになるし...何か良い方法ないですかね。

という訳で今回は、たまたま目に付いた参考書より、暗号の話です。
とはいっても共通鍵のAESや公開鍵のRSA等の話ではなく、古典的な暗号方式「換字式暗号」についてが中心となります。

換字式暗号

平文(暗号化前の文)を一文字または複数文字の単位ごとに別の文字に置き換え、一見すると意味不明な文字列を作る暗号化技術です。
換字式暗号は主に変換前後の対応表を用意し、適用する方式が主流です(※1)
この場合、対応表を入手しない限り復元は困難となるため、古典的ではあるものの長らくこの暗号化技術が使われてきました。

頻度分析

さて、一見解読が困難なようにも見える換字式暗号ですが、この方式は頻度分析という手法によって簡単に見破られる事となります。
頻度分析とは、簡単に言うと「平文、暗号文でよく使う文字ランキング作って、突き合わせてみよう」という暗号読解の手法です。
文字ごとに出現頻度を割り出し、暗号文にも同様の頻度で出現する文字があれば対応しているとみなす事で、解読に必要な対応表を埋めていく事が可能になります。
ところでこの頻度分析、一体どれほど正確なのでしょうか?
↓検証してみました↓

実験

今回はExcelで頻度分析による暗号解読が再現できるかを検証してみます。
条件は以下3つ

  • 言語は英語
  • 単一換字式暗号(一文字につき一文字の対応表を用意し暗号化)を用いる
  • 平文、暗号文のサンプルは英字新聞から抜粋

①マクロで暗号化機能を作成

↓「対応表」を元に、入力した文章を変換するマクロを作成

↓対応表

②平文のサンプル取得

「平文サンプル」へ平文のサンプルを追加。英字新聞より、約10,000字分の記事を抽出。

③暗号文のサンプル取得

「暗号文サンプル」へ、英字新聞より抽出した文章を暗号化し、サンプルとして追加。(平文のサンプルに使用した文章は使わないように注意!)

④頻度算出

②③で追加したサンプルを元に、平文と暗号文で使用されているアルファベットの数を算出し、一文字ずつ出現頻度の順位をつける。

グラフにしてみると、出現頻度の差が顕著になります。Eが圧倒的ですね。
暗号文ではRの出現頻度が1位となっていることから、
この時点でEの暗号化後はRだろう。と分析できます。

⑤復号用の対応表作成

④のデータを元に、復号用の対応表を作る。同時に、復号用のマクロも作成。

⑥答え合わせ

ここからが本題。平文→暗号化→復号→平文で
どれだけ元の文に近い文章が復元できるかを確認します。よーいスタート。

「This is a book」を暗号化し

取得した暗号で復号を行います。

「Tlis is a book」が取得できました。
元の文と比べて、予想以上に正しく復号できましたね。
恣意的な解釈に繋がるためあまり良くない手順ですが、文脈から「Tlis ⇒ This」と読み替えて解読することもできそうです。
今回は合計約10,000文字の英文をサンプルとしていましたが、もっと集めれば、精度は上がっていくものと考えられます。

おわり

いかがでしたでしょうか?
対応表が一つしかない簡単な換字式暗号であれば、比較的簡単に解読が可能であることが分かるかと思います。
今回のような解読法は言語学の応用であり、古典的な暗号には有効ですが、現代ではそうもいきません。
エニグマ(※2)の登場以降、暗号解読はこういった言語学の分野から数学の分野へと移行し、コンピュータの登場により暗号化技術は人力では到底解読ができない(※3)レベルまで進化しました。
今回色々調べてみて、こういうものを考えた先人たちはすごいなと、しみじみ思いました。



※1.実際は複数の対応表を用いる場合が多いですが、長くなるので割愛
※2.大戦中ドイツで開発され、当時世界最強とされていた暗号機。エニグマの攻略には、とある天才数学者の活躍や当時のドイツらしいうっかり等色々面白いエピソードがあるので、興味ある方はぜひ調べてみてください。
※3.なお、サマーウォーズの主人公は...。