※小説ではない※専門書 要約資料集 為替(換算)3.9万円でもらう 紐解集生成 専門 初入門 資料 作:{作者名}
> 水準: 一〜四(前半) / 冠: 情報・計算
> 相互リンク: →BOOK-0066(アルゴリズムとデータ構造) →BOOK-0070(ネットワーク) →BOOK-0010(コンピュータの始まり) →BOOK-0045(伝達術)→BOOK-0074(数論・本波同時刊行)
> 波との接続: BOOK-0045が「意味を符号に変換して送る」という伝達の一般原理を扱ったのに対し、本冊はその符号を**特定の受け手以外には読めなくする**技術——暗号——を扱う。BOOK-0070が「遠くまで届ける」技術なら、本冊は「届いても中身は読ませない」技術である。
# BOOK-0073 暗号 — 秘密を運ぶ技術(情報派生 第1巻)
> 水準: 一〜四(前半) / 冠: 情報・計算
> 相互リンク: →BOOK-0066(アルゴリズムとデータ構造) →BOOK-0070(ネットワーク) →BOOK-0010(コンピュータの始まり) →BOOK-0045(伝達術)→BOOK-0074(数論・本波同時刊行)
> 波との接続: BOOK-0045が「意味を符号に変換して送る」という伝達の一般原理を扱ったのに対し、本冊はその符号を**特定の受け手以外には読めなくする**技術——暗号——を扱う。BOOK-0070が「遠くまで届ける」技術なら、本冊は「届いても中身は読ませない」技術である。
## はじめに——南京錠を開けたまま送ってはいけない
手紙を送るとき、封筒に入れるのは「誰かに読まれたくないから」だ。だが封筒はナイフ一本で破れる。もっと確実に秘密を守りたいなら、南京錠のかかった箱に入れて送ればよい。しかし、ここで厄介な問題が起きる。箱の鍵は、受け取る相手にも渡さなければ、相手は箱を開けられない。では、その鍵はどうやって安全に届けるのか。鍵を別の手紙で送れば、その手紙もまた盗み見られるかもしれない。
暗号とは、つまるところ「秘密を運ぶ技術」であり、その本質は最初から最後まで**この「鍵をどう扱うか」という一点に集約される**。本冊は、二千年以上前の単純な文字のずらしから始まり、機械仕掛けの暗号、そして「鍵そのものを公開してしまう」という一見矛盾した二十世紀後半の発想の転換までを、歴史の物語として、そして数の計算として、両方の側面から追っていく。
なぜ面白いか。暗号の歴史は、「守る側」と「破る側」が互いの手の内を読み合いながら数百年かけて知恵比べを続けてきた、人類最大級の頭脳戦の記録だからだ。しかもその戦いの勝敗が、実際に戦争の行方や国家の運命を左右したことすらある。単なる暗記科目ではなく、数学・工学・心理戦が絡み合う、知的スリルに満ちた分野なのである。
---
## 第一章 シーザー暗号——文字をずらすという発明
### 1-1 最古の実用暗号
暗号の起源は諸説あるが、西洋の暗号史で必ず語られる古典として、古代ローマの将軍ユリウス・カエサル(シーザー)が軍事通信に文字のずらし(シフト)による暗号を用いたと伝えられている。これが「シーザー暗号」と呼ばれる所以である。
やり方は単純明快である。アルファベットを一定の数だけ後ろにずらし、元の文字を対応するずれた文字に置き換える。たとえば「3文字ずらす」というルール(鍵)を決めたとしよう。
```
平文: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
暗号: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
```
Aは3つ先のDに、Bは3つ先のEに変わる。この規則にしたがって「HELLO」という単語を暗号化してみよう。
- H → K
- E → H
- L → O
- L → O
- O → R
結果は「KHOOR」となる。実際にプログラムで検算しても、シフト3で HELLO は KHOOR に変換されることが確認できる(本稿の全ての変換例は執筆時に計算機で検証済みである)。同様に WORLD をシフト3で暗号化すると ZRUOG になる。
### 1-2 アルファベットの端をどう扱うか——モジュロ計算の入口
ここで一つ疑問が生じる。Xをシフト3でずらすとアルファベットの外に飛び出してしまう。X→Y→Z→(次は?)という具合だ。答えは「Aに戻ってやり直す」——つまりアルファベット26文字を輪のようにつなげて考える。
これは数学でいう「剰余(あまり)」の計算そのものである。アルファベットをA=0、B=1、……Z=25という数字に対応させると、シフトは「元の数に3を足して、26で割った余りを取る」という操作になる。剰余を求める計算を「モジュロ演算」と呼び、「7を3で割った余りは1」を「7 mod 3 = 1」と書く。
XYZをシフト3で暗号化する例で確認しよう。Xは23番目(0始まり)の文字なので、23+3=26。26を26で割った余りは0、つまりAに戻る。同様にYは24+3=27、27 mod 26 = 1でB、Zは25+3=28、28 mod 26 = 2でC。したがって「XYZ」は「ABC」に変換される。この輪っかの計算(モジュロ演算)が、シーザー暗号だけでなく、この後に登場するすべての換字式暗号、さらには現代の公開鍵暗号の数学的土台にもなっている。
### 1-3 鍵はたった25通りしかない
シーザー暗号の「鍵」は、何文字ずらすかという一つの数字だけである。26文字のアルファベットで意味のあるずらし方は、1から25までの25通りしかない(0ずらしは何も変わらないので暗号にならない)。
これがシーザー暗号最大の弱点である。破りたい人がいれば、25通りをすべて試すだけでよい。これを「総当たり(しらみつぶし)」と呼ぶ。25回試せば必ず正解にたどり着くのだから、隠す力としてはあまりにも心もとない。この弱点を乗り越えるための工夫として、次章で扱う「換字式暗号」が生まれることになる。
### 1-4 「隠す」と「読めなくする」は別の技術である
ここで一つ、用語の整理をしておきたい。情報を人目につかないように「隠す」技術と、情報の中身そのものを「読めなくする」技術は、似ているようでまったく別のものである。前者は、たとえば文字を絵の中に埋め込んだり、髪の毛を剃った頭皮に文字を書いてから髪を伸ばして隠したりするような手法で、「ステガノグラフィ(隠蔽術)」と呼ばれる。後者が本冊の主題である「暗号(クリプトグラフィ)」であり、情報の存在自体は隠さず、中身だけを第三者に理解できない形に変換する。
隠蔽術は、隠し場所さえ見つかれば一発で中身が読めてしまう。これに対して暗号は、暗号文を丸ごと見られてしまっても、鍵を知らなければ中身は読めないという設計思想に立つ。ケルクホフスの原理(第六章で詳述する)にも通じる、この「見られても平気なように作る」という発想こそが、暗号という技術の核心である。
---
## 第二章 換字式暗号と頻度分析——アル゠キンディーの慧眼
### 2-1 26文字を好き勝手に並べ替える
シーザー暗号は「決まった規則でずらす」だけだったが、これを一般化して「AはQに、BはZに、CはMに……」のように、26文字をまったく自由に対応づける方式を「単一換字式暗号」と呼ぶ。シフトという単純な規則に縛られないので、対応表の組み合わせは膨大になる。26個の文字を並べ替える方法の総数は26の階乗(26!)であり、これは計算すると約4×10の26乗という天文学的な数になる(26!=403,291,461,126,605,635,584,000,000、27桁の数である)。これほど組み合わせが多ければ、総当たりで破るのは非現実的に思える。
### 2-2 頻度分析という逆転の発想
ところが、この一見強力な暗号にも、古くから知られた弱点がある。それは「言語には文字の出現頻度に偏りがある」という事実だ。たとえば英語ではEという文字が最も頻繁に現れ、次にT、Aと続くことが知られている。日本語でも「ん」や母音の出現には偏りがある。
暗号文の中で最も頻繁に出てくる記号があれば、それは平文でいうEである可能性が高い——この推理を積み重ねていけば、対応表を一つずつ解き明かしていくことができる。これが「頻度分析」と呼ばれる解読手法である。
この手法を体系的な学問として記録した最初期の人物として、9世紻のアラビアの学者アル゠キンディーが挙げられることが多い(彼の著作に頻度分析の記述があるとされるが、詳細な成立年代や伝播の経緯には研究者によって異なる見解があり、諸説がある点には留意されたい)。単一換字式暗号は、組み合わせの数こそ膨大でも、言語そのものが持つ統計的なクセによって、鍵をまったく知らなくても解読され得ることが示されたのである。これは暗号史における重要な転換点だった。「隠す方法の複雑さ」と「実際の強さ」は必ずしも一致しないという教訓を、人類は千年以上前にすでに得ていたことになる。
なお、頻度分析は単一換字式暗号やシーザー暗号のような古典的な仕組みの学習教材として広く使われる考え方であり、本冊で扱うのもこの歴史的・数理的な入口までである。
### 2-3 頻度分析の考え方を具体的に追ってみる
頻度分析の理屈をもう少し丁寧に見てみよう。ある程度長い英文を単一換字式暗号で暗号化したとする。暗号文の中で最も多く登場する記号を数え上げると、それが平文のEに対応している可能性が高い。次に多いのはTやAに対応している可能性が高い、という具合に、頻度の順位を手がかりに一文字ずつ対応表を仮定し、意味の通る単語ができるかどうかを検証しながら解読を進めていく。
これは推理小説の謎解きに似ている。一つの仮定を置いて全体を眺め、矛盾が出れば仮定を修正する——この地道な作業の繰り返しによって、膨大な組み合わせの中から正解にたどり着くことができる。重要なのは、頻度分析が「鍵を総当たりする」のではなく、「言語という手がかりを使って鍵を推理する」点にある。組み合わせの数がいくら多くても、言語そのものに偏りという情報が含まれている限り、その偏りを逆手に取られてしまうのである。
この「偏りを逆手に取る」という発想は、実は現代の暗号解読や情報理論においても形を変えて生き続けている。データの中にある統計的な規則性(パターン)を見つけ出し、それを手がかりに未知の情報を推測するという考え方は、暗号解読に限らず、アルゴリズムによるデータ処理全般に通じる普遍的な発想である(データを効率よく扱う考え方については→BOOK-0066で扱っている)。
---
## 第三章 ヴィジュネル暗号——鍵を「言葉」にする
### 3-1 単一の鍵から複数の鍵へ
頻度分析に対抗するために考え出されたのが、16世紀にフランスの外交官ブレーズ・ド・ヴィジュネルの名を冠して知られる「ヴィジュネル暗号」である(この方式の考案には彼以前の複数の学者の貢献もあったとされる)。
ヴィジュネル暗号の要点は、シーザー暗号のような「一つのシフト量」ではなく、「複数のシフト量を繰り返し使う」ことにある。鍵として短い単語(たとえば「LEMON」)を選び、平文の各文字に鍵の文字を一つずつ対応させ、その文字が表す数だけシフトする。
たとえば平文「ATTACKATDAWN」を鍵「LEMON」で暗号化する例を見てみよう。鍵はLEMONの5文字を繰り返し使う。
```
平文: A T T A C K A T D A W N
鍵 : L E M O N L E M O N L E
```
Lは11番目(A=0から数えて11)の文字なので11シフト、Eは4シフト、Mは12シフト……というように、それぞれの文字ごとに異なるシフト量が適用される。この計算を行うと、暗号文は「LXFOPVEFRNHR」となる(検算済み)。
### 3-2 なぜ頻度分析が効きにくくなるのか
この方式が強力な理由は、同じ平文の文字Aが、暗号文では位置によって異なる文字に変換される点にある。単一換字式暗号では「Aは常にQになる」という固定対応があったからこそ頻度分析が機能したが、ヴィジュネル暗号では対応関係が鍵の長さの分だけ「ずれながら循環」するため、単純な頻度分析では歯が立たなくなる。
長らく「解読不可能な暗号(le chiffre indéchiffrable)」と呼ばれたヴィジュネル暗号だが、19世紀になると鍵の周期性を見抜く統計的な手法が発展し、鍵の長さを推定した上で頻度分析を各周期ごとに適用する解読法が確立された。これもまた、「複雑にすればするほど絶対的に安全」というわけではないという教訓を裏付ける例である。
### 3-3 鍵の長さと「使い捨て鍵」という理想形
ヴィジュネル暗号の安全性は、鍵の長さに大きく依存する。鍵が短ければ短いほど繰り返しの周期が短くなり、解読の手がかりが増える。逆に言えば、もし鍵の長さを平文と同じ長さにし、しかも鍵を完全にランダムな文字列にして、一度使った鍵は二度と使わないようにできたらどうなるか。
この理想を突き詰めた方式は「ワンタイムパッド(使い捨て鍵暗号)」と呼ばれ、理論的には数学的に解読不可能であることが証明されている。ただし、平文と同じ長さの、真にランダムな鍵を毎回新しく作り、それを安全に共有し続けなければならないという実務上の負担が極めて大きく、限られた特別な用途を除いて広く一般に使われるものではない。ここでもまた「鍵をどう安全に共有するか」という同じ壁にぶつかることになる。この鍵配送の壁こそが、第五章で扱う暗号史最大の転換点へとつながっていく。
---
## 第四章 エニグマとその解読——機械対人間、そして機械対機械
### 4-1 歯車が生み出す膨大な組み合わせ
20世紀に入ると、暗号化は手作業から機械へと移る。その代表がドイツで軍事通信に使われた「エニグマ」という暗号機である。エニグマは複数の回転する歯車(ローター)を使い、キーを打つたびに内部の配線状態が変化する仕組みを持っていた。これにより、同じ文字を続けて打っても毎回異なる文字に暗号化される、極めて複雑な換字が実現された。
### 4-2 ブレッチリー・パークとチューリング
第二次世界大戦中、イギリスはブレッチリー・パークと呼ばれる施設に暗号解読の専門家を集め、エニグマの解読に取り組んだ。この解読チームの中核を担った一人が、数学者アラン・チューリングである。1940年代、チューリングらは「ボンブ」と呼ばれる電気機械式の解読補助装置を開発し、エニグマの鍵設定を効率的に絞り込む手法を確立した。
ここで重要なのは、エニグマの解読が単なる「力任せの総当たり」ではなかったという点だ。ドイツ軍の通信には、天気予報の定型文や特定の挨拶など、内容が推測しやすい部分(既知平文)があった。チューリングらはこうした手がかりと機械的な計算力を組み合わせることで、日々変わる鍵設定を現実的な時間内に突き止める方法を編み出した。これは「人間の知恵」と「機械の計算力」を融合させた、暗号解読史上の画期的な出来事であり、後のコンピュータ科学の発展にもつながる重要な一歩となった(計算機の発展そのものについては→BOOK-0010で詳しく扱っている)。
エニグマの物語が教えてくれるのは、暗号の強さは「仕組みの複雑さ」だけでは決まらず、「運用のクセ」や「人間の習慣」からも綻びが生まれるという事実である。どれほど精巧な機械でも、同じ言葉を繰り返し使う人間の癖までは隠しきれなかったのだ。
### 4-3 暗号解読が生んだもう一つの遺産——計算機械への道
ブレッチリー・パークでの取り組みが後世に残した意味は、エニグマという一つの暗号が解読されたという事実だけにとどまらない。膨大な組み合わせを機械的に、高速に、そして自動的に検証していくという発想そのものが、のちの汎用計算機(コンピュータ)の設計思想へとつながっていったとされる。「決められた手順を人間に代わって機械に高速で繰り返させる」という考え方は、暗号解読という具体的な必要性の中で磨かれ、計算機科学という大きな分野の礎の一つになった。この「手順」を体系的に扱う考え方については→BOOK-0066(アルゴリズムとデータ構造)で詳しく扱っている。
暗号と計算機は、その誕生の物語において分かちがたく結びついている。「秘密を守りたい」という切実な欲求が、皮肉にも「大量の計算を高速にこなす機械」という、今日の情報社会そのものを支える技術を後押ししたのである。
---
## 第五章 鍵配送問題——最大の弱点はいつも「鍵をどう届けるか」
### 5-1 共通の鍵を使う方式の限界
シーザー暗号からエニグマまで、ここまで紹介してきた暗号はすべて「暗号化するときに使う鍵」と「復号する(元に戻す)ときに使う鍵」が同じ、あるいは同じ鍵から機械的に導ける関係にあった。このような方式を「共通鍵暗号」と呼ぶ。
共通鍵暗号には根本的な弱点がある。通信を始める前に、送り手と受け手はまったく同じ鍵をあらかじめ共有しておかなければならない。ここで冒頭の南京錠の比喩を思い出してほしい。箱に鍵をかけて送ることはできても、その鍵自体を安全に届ける手段がなければ、結局は堂々巡りになってしまう。鍵を郵送すれば、その郵送過程が盗み見られるかもしれない。これが「鍵配送問題」と呼ばれる、暗号の世界における長年の難題だった。
### 5-2 「鍵を公開してしまう」という逆転の発想
この問題に対して、1976年、ホイットフィールド・ディフィーとマーティン・ヘルマンが画期的な発想を発表した。それは「暗号化に使う鍵と復号に使う鍵を別々のものにし、暗号化用の鍵は誰に見られても構わないように公開してしまう」という考え方である。
この発想を、南京錠の比喩でもう一度説明しよう。受け手は「開いた状態の南京錠」を大量に用意し、それを誰でも受け取れる場所に置いておく(これが「公開鍵」)。送り手は、その辺に転がっている開いた南京錠を一つ取って、自分の荷物にカチッとかけて送る。錠をかけたら最後、それを開けられるのは、対応する「閉じるための特別な鍵」を持っている受け手だけである(これが「秘密鍵」)。南京錠(公開鍵)は誰が持っていても、送る内容を暗号化するだけで、元に戻す(復号する)ことはできない。こうして「鍵そのものを堂々と公開する」という、一見すると矛盾した方法で鍵配送問題を解決する道が開かれた。
翌1977年には、ロナルド・リベスト、アディ・シャミア、レナード・エーデルマンの三人が、この発想を実際に動く暗号方式として実装した「RSA暗号」を発表した。RSAという名前は、この三人の頭文字(Rivest、Shamir、Adleman)に由来している。RSA暗号は大きな数の素因数分解の困難さを安全性の根拠にしており、この「困難さ」を支える数論の詳しい仕組みは→BOOK-0074で扱う。
### 5-3 なぜ「掛け算は簡単、逆は難しい」のか——直感で捉えるRSAの発想
RSA暗号がなぜ安全なのかを、数式を使わずに直感だけで捉えてみよう。二つの大きな素数(1とその数自身でしか割り切れない数)を掛け合わせて、一つの巨大な数を作ることを考える。たとえば小さな例で言えば、素数7と素数11を掛け合わせると77になる。この「掛け算」自体は誰にでも一瞬でできる、とても簡単な計算である。
ところが、逆の作業——77という数字だけを渡されて、「これは何と何の素数の積か当ててください」と言われたらどうだろうか。77程度の小さな数ならすぐに7×11だと見当がつくが、これが数百桁もの巨大な数になると、現在知られている最も効率的な方法を使っても、素因数(元の二つの素数)を突き止めるには天文学的な時間がかかってしまう。
RSA暗号は、この「掛け算は簡単だが、逆算(素因数分解)は途方もなく難しい」という性質を安全性の土台にしている。公開鍵として公開されるのは、この巨大な積の数字であり、秘密鍵として本人だけが握っているのは、元になった二つの素数の情報である。南京錠の比喩で言えば、公開されている巨大な数字が「開いた南京錠」であり、それを作るのに使った二つの素数が「錠を開け閉めできる特別な鍵」に当たる。錠(積の数字)は誰でも見られるが、鍵(元の素数)を知らない限り、錠を開ける計算は事実上不可能に近い、というわけだ。この素数の性質そのものについては→BOOK-0074でさらに詳しく掘り下げる。
### 5-4 公開鍵暗号は何を変えたか
公開鍵暗号(非対称鍵暗号とも呼ばれる)の登場は、暗号の使われ方を根本から変えた。それまでは「あらかじめ信頼できる方法で鍵を共有できる相手」としか秘密の通信ができなかったが、公開鍵暗号があれば、一度も会ったことのない相手とでも、公開されている鍵を使って安全に通信を始められる。今日、私たちがインターネットで買い物をしたり、パスワードを送信したりするときの安全性は、この発想の延長線上にある(通信そのものの仕組みは→BOOK-0070で扱っている)。
なお、実際の通信では、公開鍵暗号は計算に時間がかかるため、最初の鍵交換にだけ公開鍵暗号を使い、その後の大量のデータのやり取りには共通鍵暗号を使うという「良いとこ取り」の組み合わせが一般的である。
---
## 第六章 現代の常識——ケルクホフスの原理
### 6-1 「秘密は鍵だけにせよ」
19世紀のオランダの暗号学者オーギュスト・ケルクホフスは、暗号システム設計における重要な原則を提唱した。それは「暗号の仕組み(アルゴリズム)そのものが敵に知られても安全でなければならず、秘密にすべきは鍵だけである」という考え方である。これは「ケルクホフスの原理」と呼ばれ、現代の暗号設計における最も基本的な指針の一つとなっている。
一見すると不思議に思えるかもしれない。「仕組みを隠したほうが安全なのでは」と感じるのが自然な直感だからだ。しかし歴史が示す通り、仕組みを秘密にすることに頼った暗号は、いつか誰かに仕組みを見破られた瞬間にすべての安全性を失う。それよりも、「仕組みは世界中の専門家に公開して検証してもらい、たとえ手口が知られていても、鍵さえ守られていれば安全」という設計のほうが、長期的にはるかに頑丈である。現代のインターネットで使われる暗号方式の多くは、この原理にしたがって、仕組み自体は公開された標準規格として世に出ている。
振り返ってみると、シーザー暗号の「シフトという規則そのもの」を秘密にしていた時代から、エニグマの「機械の内部配線」を秘密にしていた時代を経て、現代では「鍵という一つの数値だけ」を秘密にする時代へと、暗号設計の考え方は着実に洗練されてきたことがわかる。仕組みを丸ごと隠すのではなく、たった一つの鍵だけを守ればよいという設計は、鍵さえ交換すればいつでも安全性を作り直せるという柔軟性ももたらす。これは、エニグマが「機械そのものが鹵獲されれば終わり」だったのに対し、現代の暗号は「鍵さえ変えれば同じ仕組みを使い続けられる」という大きな強みを持つことを意味している。
### 6-2 通信の「錠前」としての暗号
私たちが日常的にインターネットを使うとき、ブラウザとウェブサイトの間の通信は暗号によって保護されているのが当たり前の前提になっている。この「通信には錠前がかかっているのが当然」という常識は、シーザーの時代の単純なシフトから、頻度分析との攻防、機械式暗号と人間の知恵比べ、そして鍵配送問題を解決する数学的発想の転換という、二千年以上にわたる知恵の積み重ねの上に成り立っている。
暗号の物語は、「隠したい」という素朴な欲求から始まり、数学・工学・歴史・そして人間の心理までを巻き込みながら発展してきた、知の総合格闘技のような分野である。次巻となるBOOK-0074では、この暗号の安全性を数学的に支える「数論」の世界——素数や合同式の性質——に足を踏み入れていく。
---
## この巻のまとめ
- シーザー暗号は文字を一定数シフトする最古の実用暗号の一つで、鍵はわずか25通りしかない。
- 単一換字式暗号は組み合わせが26!(約4×10の26乗)通りと膨大だが、言語の文字出現頻度の偏りを利用した「頻度分析」(9世紀のアル゠キンディーに帰されることが多い、諸説あり)によって解読され得る。
- ヴィジュネル暗号は鍵の文字ごとに異なるシフト量を繰り返し適用することで、単純な頻度分析を無力化した。
- エニグマは機械式の複雑な換字暗号だったが、1940年代にチューリングらブレッチリー・パークのチームが、数学的推理と機械的計算力を組み合わせて解読した。
- 共通鍵暗号には「鍵をどう安全に届けるか」という鍵配送問題がつきまとう。
- 1976年のディフィーとヘルマンによる公開鍵の発想、1977年のRSA暗号(リベスト・シャミア・エーデルマンの頭文字)により、鍵の一部を公開しても安全な通信ができる方式が生まれた。
- ケルクホフスの原理は「秘密にすべきは鍵だけであり、仕組み自体は公開されていてよい」という、現代暗号設計の基本原則である。
> 相互リンク: →BOOK-0066(アルゴリズムとデータ構造) →BOOK-0070(ネットワーク) →BOOK-0010(コンピュータの始まり) →BOOK-0045(伝達術) →BOOK-0074(数論・本波同時刊行)
# BOOK-0073 暗号 — 秘密を運ぶ技術(情報派生 第1巻)