これはアドベントカレンダーTNCT23s 3J Advent Calendar 202518日目の記事である。
§ はじめに
あなたが今日使っているスマホの通信や、銀行のオンラインサービス、パスワードを保存するアプリ。そのどれもが「暗号」によって守られている。
では、もしその暗号方式がすべて公開され、攻撃者が内部の仕組みを完全に知っているとしたら─
多くの人は直感的に「それは危険だ」と考える。
暗号は “隠すほど安全” だと思いがちであるからだ。
しかし、暗号の歴史はまったく逆の事実を示している。
ケルクホフスの原理
アウグスト・ケルクホフス(Auguste Kerckhoffs, 1835-1903)は次の原理を提唱した。
「暗号は、“鍵”さえ知られなければ、仕組みが全て公開されても安全であるべきだ。」
ケルクホフスの原理(Kerckhoffs' principle)
これは現代暗号の根幹を成す考え方であり、クロード・シャノン(Claude Shannon, 1916-2001)はこれを "the enemy knows the system"(「敵はシステムを知っている」)という言葉で簡潔に表した。そして、そのような前提に立つことが、もっとも信頼できる暗号を生み出してきた。
問題提起
ではなぜ、そんな逆説のような発想が正しいのだろうか。そして、なぜ方式を “秘密にする” 暗号は危険なのだろうか。
本記事では、古代の単純な暗号から、第二次世界大戦で使われたエニグマ、
そして現代のAESやRSAに至るまで─
暗号の歴史を遡って、「現代暗号がなぜアルゴリズム公開を恐れないのか」
その理由を紐解いていく。
§ 暗号とは
そもそも暗号とはなんだろうか?
暗号とは、情報を第三者が理解できない形に変換し、必要な相手だけが元の情報へ戻せるようにする技術である。
現代社会では、スマートフォンの通信から、クラウドサービス、企業内部のデータ管理に至るまであらゆる場面で暗号が利用されている。
暗号化の目的は「隠すこと」ではなく、攻撃者が膨大な手間をかけても解読できない状態を作ることにある。
しかしここで大切なのは、暗号技術には次の2つの本質がつきまとうという点だ。
1. 中途半端な暗号は無防備より危険
「弱い暗号を使うぐらいなら、最初から暗号など使わないほうがましだ」(『暗号解読』[Singh Simon])
一見それらしいアルゴリズムでも、数学的に脆弱だったり、独自方式で検証されていなかったりすると、攻撃者からすれば格好のターゲットになる。さらに、「暗号」という言葉だけで使用者に誤った安心感を与える。結果として、機密性の高い情報の扱いがぞんざいになっていまうだろう。
特に、
- 自社独自の暗号
- 十分に検証されていないアルゴリズム
などは暗号化しないより危険な場合すらある。
2. 完全な暗号は存在しない
暗号は永遠に安全なものではない。
数学的手法の進歩、計算能力の向上、新しい攻撃手法の発見によって、かつて安全とされてきた暗号が破られることは歴史上何度も起きてきた。
つまり暗号とは、「永遠の安全を約束するもの」ではなく、現時点で攻撃者が現実的なコストで破れない状態を作るための技術 にすぎないのである。
暗号の本質
暗号の安全性は、秘密のアルゴリズムではなく、
- 公開された方式
- 十分な数学的根拠
- 多数の専門家による検証
によって確保される。
そして、暗号の世界で最も重要な認識は次の二つに集約される。
弱い暗号は、ないより危険。
強い暗号ですら、いつかは破られる。
この前提を理解して初めて、次の章で扱う暗号たちの歴史的意義が、より深く見えてくるだろう。
§ シーザー暗号
シーザー暗号(Caesar cipher)は、ガイウス・ユリウス・カエサル(Gaius Iulius Caesar, 100 B.C.E - 44 B.C.E)が使用したといわれる暗号で、極めてシンプルな暗号アルゴリズムである。
暗号化は非常に単純で、アルファベットを一定の文字数ずらす(シフトする)だけである。
たとえばシフトを3と決めると、
- A → D
- B → E
- X → A
- Y → B
...という具合で、"HELLO" は "KHOOR" になる。
複合化は暗号化と逆のことをすればよい。
つまりシフトが3ならば、
- E ← H
- H ← K
- L ← O
- O ← R
...という具合で、"KHOOR" から平文 "HELLO" が得られる。
シーザー暗号における鍵
シーザー暗号は、平文・暗号文とシフトする文字数さえわかれば、暗号化・複合化が可能である。つまり、シーザー暗号における “鍵” はシフトする文字数にあたる。
ところで、もし “鍵” がない場合に、暗号文を複合化することは可能だろうか?すなわち、シーザー暗号は解読可能だろうか?
シーザー暗号の解読
アルファベットは全部で26文字あるから、シフトする文字数は0から25までの26通りしかない。したがって、単に暗号文だけ渡されたとしても、シフトする文字数を26通り試せば必ず平文が得られるのだ。
このように、すべての候補を試す方法を 総当たり攻撃(Brute-force attack) という。
§ 単一換字暗号
シーザー暗号を一歩発展させたのが 単一換字暗号(Simple substitution cipher)である。
アルファベットをまるごと入れ替える方式で、AをQに、BをMに、CをZに...というようにあらかじめ決めた1対1対応表を使って暗号化・複合化する。
単一換字暗号における鍵
シーザー暗号はシフトする文字数が鍵になるが、単一換字暗号では、文字の対応表が鍵になる。
では、鍵空間(鍵の候補の集合)の大きさ(鍵の候補の数)はどうなるだろうか?
シーザー暗号は26通りしかなかったが、単一換字暗号では 26!通り(≈4×10²⁶通り) という天文学的な数になる。この数を総当たり攻撃するのは現代コンピュータでも不可能に近い。
にもかかわらず─
暗号は破られた。
単一換字暗号の解読
暗号が破られた理由は、文字の出現頻度は変わらない という性質にある。
英語では、E、T、Aなどがよく現れ、JやQは少ない。
単一換字暗号は、文字を置き換えるだけなので、このパターンがそのまま残る。
統計を使うことで、最も頻出する文字がEだろう、次がTだろう、
この繰り返しは "TH" かもしれない─
と推測ができ、最終的にはすべて解読される。
新しい攻撃手法の発見
9世紀、アラブ人数学者のアル=キンディー(al-Kindī, 801–873)が頻度分析を体系化した。
方法としては極めてシンプルだが、これは暗号史の大転換点だった。
暗号を「直感的にごまかす」段階から、数学的に分析し、弱点を突く時代 への移行である。
頻度分析を理解している攻撃者にとって、単一換字暗号は複雑に見えても、方式がわかっていれば論理的に攻撃できる。
この事実は、暗号の安全性が「方式の秘匿」ではなく 数学的な強度そのものに依存すべきだ という後世の常識につながる。
§ ヴィジュネル暗号
単一換字暗号の弱点(頻度分析)を克服するために登場したのが ヴィジュネル暗号(Vigenère cipher)である。
複数のシーザー暗号を「鍵となる単語」に従って切り替える方式で、同じ文字でも位置によって別の文字に変換される。これにより頻度分析が効きにくくなり、“解読不可能” と信じられた時代が長く続いた。
ヴィジュネル暗号の弱点発見
「コンピュータの父」であるチャールズ・バベッジ(Charles Babbage, 1791-1871)がヴィジュネル暗号の弱点を発見した。
ヴィジュネル暗号の弱点は、その鍵の周期性にある。
詳しくは読者自身で調べてほしいのだが、鍵となる単語(鍵語)が平文全体に対して繰り返して使われるため、暗号化のパターンにも鍵語の長さと同じ周期が生まれる。
ヴィジュネル暗号の解読
バベッジがヴィジュネル暗号の弱点発見から10年ほど後のことである。フリードリヒ・カシスキ(Friedrich Kasiski, 1805-1881)が独自に上記の弱点を突く攻撃手法を発見・発表した。この時点ですでにバベッジは同じ手法を発見していたが、公表はしなかった。結果としてこの攻撃手法は カシスキー・テスト(Kasiski's test)と呼ばれている。
カシスキ―・テストは暗号文中で繰り返される文字列間の間隔を計測し、その最大公約数を求めることで 鍵語の長さ(周期) を推測する手法である。
周期がわかることで、各グループにわけることができ、それぞれが単なる単一換字暗号へと変換される。したがって、頻度分析が適用できるようになるのである。
仕組みが複雑になっても、背後にある数学的構造が理解されれば攻撃可能 という点は変わらなかった。
§ エニグマ
1918年にドイツの発明家、アルトゥール・シェルビウス(Arthur Scherbius, 1878-1929)が機械式暗号機 エニグマ(Enigma)を発明。
暗号史において「手作業の古典的暗号」から「機械による大規模鍵空間の暗号」へと進んだ象徴的な存在である。
構造自体は、文字を入力すると内部のローター(回転する円盤)を通して別の文字に置き換える─という単純な “多段換字” にすぎない。
しかし、ローターの選択・順序・初期位置、リング設定、プラグボード接続などを組み合わせた鍵空間は膨大で、方式(アルゴリズム)が知られていても総当たりによる解読は現実的でなかった。
つまり、エニグマは「方式を隠さなければ安全」というセキュリティ・バイ・オブスキュリティに依存しない暗号として登場し、暗号史の大きな転換点となった。
エニグマの解読
それでもエニグマは最終的に解読された。理由は機構の弱点と運用上のミスである。
- 特有の構造による解析上の弱点
- 定型文や天気報告など予測しやすい平文の多用
- 鍵設定の運用ミス
こうした“人間の側”の問題が積み重なり、イギリス・ブレッチリー・パークで突破されることになった。
エニグマは、暗号の安全性が「方式を隠すこと」ではなく「十分に大きな鍵空間と適切な運用」によって支えられるべきである――という、現代暗号にも続く考え方を示した歴史的装置である。
§ 現代暗号
現代暗号(AES、RSA、ECCなど)はすべて以下の原則に従っている。
- 方式は論文で公開され
- 世界中の研究者に分析され
- 攻撃を受け
- 改良され
- それでも破られないものだけが選ばれる
もはや「アルゴリズムが隠されているので安全」という時代ではない。
むしろ逆だ。
方式が公開され、敵が完全に知っていても破られないこと。
これこそが安全性を保証する唯一の基準である。
Security by obscurityが抱える “脆さ” は、
歴史が証明した。
§ おわりに
古代の単純な換字暗号から始まり、シーザー暗号が破られ、単一換字が破られ、ヴィジュネル暗号が「解読不能」から転落し、
そして巨大なエニグマさえ、人間の運用ミスによって崩れた。
歴史は一貫して同じ答えを示している。
敵は必ず方式を知る。
そして、それを前提に設計された暗号だけが生き残る。
だから現代暗号はアルゴリズム公開を恐れない。むしろ、それを前提として設計されている。安全性は秘密の中ではなく、公開の中で証明されるからだ。
これこそ、暗号がたどり着いた最終的な思想である。
the enemy knows the system
だから暗号は強くなった。