スマホでもパソコンでも、サイトのアドレス欄にちいさな鍵マークが出ているのを、あなたは毎日のように見ているはずだ。たぶん、ほとんど意識もせずに。
でも、あの鍵マークの裏側では、とんでもなく長い歴史を持った技術が、いまも静かに動いている。暗号だ。しかもその歴史は、2000年以上。——以前、複式簿記が500年もののアンティークだという話を書いたが、暗号はさらにその4倍、年季が入っている。今日はその寄り道に付き合ってほしい。
始まりは2000年以上前、古代ローマの将軍だった
記録に残るいちばん有名な暗号のひとつは、古代ローマの英雄、ユリウス・カエサル(英語読みでジュリアス・シーザー)が軍事連絡に使ったものだ。
やり方は、びっくりするほどシンプル。文章のアルファベットを、決まった数だけ後ろにずらす。たとえば3つずらすと、Aは「D」に、Bは「E」になる。「ATTACK(攻撃)」と送りたければ「DWWDFN」と書く。受け取った味方は、3つ前に戻して読む。それだけ。
こんな単純な仕掛けでも、当時は立派に役立った。敵に手紙を奪われても、ずらしのルールを知らなければ、ただの意味不明な文字列にしか見えないからだ。この“文字を別の文字に置き換える”やり方は、のちにシーザー暗号と呼ばれ、暗号の世界のいちばん最初のページになった。
ただしシーザー暗号、けっこうあっさり破られる
ところが、この暗号には弱点があった。ずらす数は、せいぜい25通りしかない。1つずらし、2つずらし……と片っぱしから試せば、誰でもいつかは元の文章に戻せてしまう。
もっと賢い破り方もある。どの言語でも、よく使われる文字は決まっている(英語なら E が登場しやすい)。だから暗号文の中でいちばん多く出てくる文字は、たぶん E が化けたものだろう——そうやって文字の出やすさ(頻度)から逆算する方法で、ずらしのルールはあっけなく見破られる。
ここから、暗号の長い宿命が始まる。誰かが新しい暗号を作る → 誰かがそれを破る → もっと強い暗号を作る。この“いたちごっこ”が、このあと2000年、ずっと続いていくことになる。

黒猫:強い暗号も、いつかは破られる。だから人類はずっと作り直してきた。完成形なんてものは、ない。
シーザーの次は、“ずらし方を毎回変える”暗号が来た
シーザー暗号があっさり破られたあと、人々はもっと意地悪な暗号を考えた。その代表が、16世紀ごろに広まったヴィジュネル暗号だ。
アイデアはこう。シーザー暗号は「ずっと3つずらす」と決め打ちだから、頻度分析でバレる。だったら、1文字ごとに、ずらす数を変えてしまえばいい。合言葉(キーワード)を決めて、その文字に応じてずらし量をコロコロ変えるのだ。こうすると、同じ E でも場所によって違う文字に化けるので、「いちばん多い文字はEだろう」という頻度分析が、もう通用しなくなる。
これがあまりに手強く、ヴィジュネル暗号は長いあいだ「解読不能の暗号」と呼ばれた。きちんと破り方が確立されるまで、なんと300年近くかかったとも言われる。暗号と解読のいたちごっこは、こうして少しずつ、桁を上げていった。
戦争が、暗号を“本気”にさせた
時代はぐっと飛んで、第二次世界大戦。このころには、暗号は国の命運を左右する“本気の道具”になっていた。
その象徴が、ドイツ軍が使ったエニグマという暗号機だ。見た目はタイプライターに似ているが、中で複数の歯車(ローター)が回り、1文字打つごとに変換のルールがどんどん変わっていく。シーザー暗号のような“固定のずらし”とは比べものにならない複雑さで、設定の組み合わせは天文学的。ドイツは「これは絶対に解読されない」と信じていた。
“コンピュータの父”が、その暗号を解いた
その「絶対に解けない」はずのエニグマに挑んだのが、イギリスの数学者アラン・チューリングたちのチームだった(最初の突破口はポーランドの数学者たちが開き、それを大きく発展させた形だ)。
彼らは、人の手ではとても追いつかない膨大な組み合わせを、機械に高速で調べさせることで、解読の糸口をつかんだ。——勘のいい人は、もう気づいたかもしれない。“大量の計算を機械にやらせる”という発想は、そのままコンピュータの原型につながっている。チューリングは、いまや「コンピュータ科学の父」と呼ばれる人物だ。
つまり、あなたがいま基本情報で学んでいるコンピュータは、ルーツのひとつを“暗号を解くための機械”に持っている。暗号とコンピュータは、生まれたときからの親戚なのだ。

白猫:暗号を解くために計算機をつくって、いまその計算機で暗号を守ってる。なんだか、ぐるっと一周してて面白くない?
現代の暗号には、2000年来の“ある悩み”があった
コンピュータの時代になって、暗号はさらに複雑で強力になった。でも、シーザーの昔からずっと消えずに残っていた、根本的な悩みがある。
それは、「暗号を解くための“鍵”を、どうやって相手に渡すか」という問題だ。ずらす数にしても、もっと複雑なルールにしても、送る側と受け取る側が同じ鍵を知っていなければ話にならない。でも、その鍵を相手に届ける途中で盗まれたら?——暗号そのものがどれだけ強くても、鍵の受け渡しがアキレス腱になる。これを鍵配送問題という。長いあいだ、誰もうまく解決できなかった。
そして“鍵を渡さない暗号”が発明された
この2000年来の悩みに、1970年代、とんでもない発想の転換が生まれた。公開鍵暗号だ。
イメージは、こんな南京錠。あなたは「開いた状態の南京錠」を、誰にでも自由に配ってしまう(これが“公開鍵”)。手紙を送りたい人は、その南京錠で箱をパチンと閉じて送ってくる。でも、いったん閉じた南京錠を開けられる本物の鍵は、あなただけが持っている(これが“秘密鍵”)。
ここがすごいところで、箱を閉じるための道具(公開鍵)は、世界中にばらまいてしまっていい。閉じることは誰にでもできるが、開けられるのは自分だけだからだ。だから、もう秘密の鍵そのものを相手に渡す必要がない。2000年ずっと人類を悩ませてきた鍵配送問題が、これで一気にほどけた。
白状すると、私はこの“公開鍵”で最初フリーズした
えらそうに南京錠の説明をしておいてなんだが、私は基本情報の勉強でここに来たとき、見事に固まった。「鍵を渡さないのに暗号化できる? いやいや、意味がわからん」と、しばらく真顔で参考書をにらんでいた。
つまずきの正体は、たぶん「鍵」という1つの言葉に、“閉じる鍵”と“開ける鍵”の2つがある、とイメージできていなかったことだ。家の鍵は、閉めるのも開けるのも同じ1本。だから「鍵を配ったら、誰でも開けられるじゃないか」と思ってしまう。でも公開鍵暗号では、閉める鍵と開ける鍵が別もの。配るのは“閉める専用”の鍵だけ。ここに気づいた瞬間、急に視界がひらけた。
だから、もしあなたが同じところで固まっても、安心してほしい。それは頭が悪いからじゃない。ただ「鍵が2種類ある」という一点に、まだ出会っていないだけだ。
あなたが毎日見る、あの鍵マークの正体
話を最初の鍵マークに戻そう。サイトとの通信が暗号化されているとき、その裏ではこの公開鍵暗号の仕組みが使われている。あなたのスマホとサイトが、誰にも盗み見られずに“秘密の合言葉”を交換し、そこから先のやり取りを丸ごと暗号で包む。あの小さな鍵マークは、「いま、その仕組みがちゃんと効いてますよ」という目印なのだ。
古代ローマの将軍が文字を3つずらしていたところから、ここまでで約2000年。あなたが何気なくネットで買い物をするその裏側で、暗号という長い物語の“いちばん新しいページ”が、毎回めくられている。
ここまで読めば、試験の“共通鍵・公開鍵”はもう怖くない
じつはこの話、基本情報のセキュリティ分野にそっくりそのまま直結している。試験では、送る側と受け取る側で同じ鍵を使う共通鍵暗号(処理は速いが、鍵配送問題をかかえる)と、さっきの南京錠の公開鍵暗号(鍵を渡さなくていいが、処理が重い)が必ず出てくる。
そして実際の通信では、この2つのいいとこ取りをする。まず公開鍵暗号で“共通鍵”を安全に相手へ渡し、そこから先の本文は、速い共通鍵暗号でやり取りする。このハイブリッド方式が、いまの暗号通信の基本形だ。——用語だけ丸暗記しようとすると呪文だが、こうして歴史の流れで見ると、「なぜ2種類あるのか」「なぜわざわざ組み合わせるのか」が腑に落ちないだろうか。私自身、この順番で理解して、ようやく頭に残った。
暗号の歴史は、ずっと「隠したい人」と「暴きたい人」のせめぎ合いだった。そのたびに新しい知恵が生まれ、ときにはコンピュータそのものまで生み出してしまった。
次にブラウザの鍵マークを見かけたら、ほんの一瞬でいい。「これ、ご先祖は2000年前のローマの将軍なんだよな」と思い出してみてほしい。たぶん、いつもの画面が、ちょっとだけ違って見えるはずだ。
あなたが毎日見る鍵マークは、2000年つづく“隠す側と暴く側”の物語の、最新ページだ。