鍵交換 わかりやすく
二人が同じ錠を使うには、同じ鍵が必要です。では、その鍵をどうやって渡せばよいのでしょうか。郵便で送れば途中で誰かに写し取られるかもしれず、直接会うには遠すぎます。驚いたことに、鍵を一度も送らずに、二人が同じ鍵を持つ方法があります。二人でいっしょに作り出すのです。
速い鍵を安全に分け合う必要がある
前のレッスンで見た公開鍵暗号は安全ですが、計算が重くて遅いのが難点です。長い中身をまるごとこれでやりとりすると、時間がかかりすぎます。そこで実際の中身は、共通鍵暗号ですばやく閉めます。
問題は、共通鍵暗号を使うには二人がまったく同じ鍵を持たなければならないことです。共通鍵暗号のレッスンで行き止まりになった鍵配送問題が、ここでまた出てきます。公開鍵で共通鍵を閉めて送る方法もありますが、今回は鍵をまったく送らない別の道を見ていきます。
公開鍵と共通鍵を押して比べてみましょう。公開鍵は安全ですが遅く、共通鍵は速いものの、同じ鍵を分け合わなければなりません。
速い共通鍵暗号を使いたい気持ちははっきりしています。でも、その鍵をそのまま送るのは危険です。途中で誰かに写し取られたら、錠がどれほど丈夫でも役に立ちません。
だから、鍵そのものは道に出さずに、二人が同じ鍵を持つ方法が必要です。その方法を、絵の具を混ぜることにたとえて描いてみましょう。
公開の色に秘密の色を混ぜる
二人をガラムとナレと呼びましょう。まず、二人で使う公開の色を一つ決めます。この色は誰に見られてもかまいません。次に、それぞれが他人には決して見せない秘密の色を一つずつ選びます。
ガラムは公開の色に自分の秘密の色を混ぜて新しい色を作り、ナレも公開の色に自分の秘密の色を混ぜて新しい色を作ります。そして、この混ぜた色だけを相手に送ります。絵の具は一度混ざると、どの色を混ぜたのかを分けもどすのがむずかしい、という点が大事です。
ガラムとナレがそれぞれ公開の色に秘密の色を混ぜるように押してみましょう。混ぜた二つの色だけが相手に送られ、秘密の色は手元に残ります。
いま、ガラムはナレが送ってきた混ぜた色を、ナレはガラムが送ってきた混ぜた色を持っています。二人とも公開の色も知っています。まだ違う色を持っていますが、あと一段階で同じになります。
それぞれが受け取った色に自分の秘密の色をもう一度混ぜると、二人はまったく同じ色にたどり着きます。なぜそうなるのか、確かめてみましょう。
二人は同じ最後の色にたどり着く
ガラムが持っているのはナレの秘密の色が混ざった色で、ガラムはそこに自分の秘密の色を混ぜます。すると、公開の色に二人の秘密の色がどちらも混ざった色になります。ナレも同じように、ガラムの秘密の色が混ざった色に自分の秘密の色を混ぜます。
混ぜる順番は違っても、入った色が同じなので、結果は同じです。だから二人はまったく同じ最後の色にたどり着きます。この最後の色が二人だけが知る共有の秘密で、これを共通鍵として使います。
二つのマスの最後の色が同じになりました。鍵は一度も道に出ておらず、行き来したのは公開の色と混ぜた色だけです。それなのに、二人は同じ鍵を手に入れました。
同じ秘密を送るのではなく、いっしょに作る。これが鍵交換の要です。最初にこの方法を考えた二人の名前をとってディフィー・ヘルマン鍵交換と呼び、実際には絵の具の代わりに大きな数の計算を使います。では、行き来する色を誰かが全部のぞいていたらどうなるでしょうか。
のぞいても最後の色は作れない
道を行き来する色をすべて見張っている人がいるとしましょう。この人は公開の色を知っています。ガラムが送った混ぜた色も、ナレが送った混ぜた色も見ました。それでも、最後の色は作れません。
最後の色を作るには誰かの秘密の色が必要ですが、秘密の色は一度も道に出ていません。混ぜた色から秘密の色だけを取り出すのも、とてもむずかしいのです。だから、のぞく人は同じ最後の色にたどり着けません。
のぞく人が道で見たものを、一つずつ押して確かめてみましょう。公開の色と混ぜた色はすべて見えても、秘密の色がないので、最後の色は作れません。
のぞく人の手には空欄が残りました。秘密の色という最後のピースがないからです。だからガラムとナレは、この最後の色を二人だけの共通鍵として安心して使えます。
ただし、気をつけたいことがあります。のぞくだけの人は防げても、途中でガラムのふりをしてナレと、ナレのふりをしてガラムと、別々に色を混ぜる人は防げません。そのため鍵交換は、相手が本物かどうかを確かめる署名や証明書といっしょに使う必要があります。もう一つ、鍵交換は公開鍵で中身を閉めることとは別のことです。
まとめ
まとめるとこうです。公開鍵暗号は安全ですが遅いので、実際の中身は速い共通鍵でやりとりします。その共通鍵は送るのではなく、いっしょに作ります。公開の色にそれぞれの秘密の色を混ぜて交換し、受け取った色に自分の秘密の色をもう一度混ぜれば、二人は同じ最後の色、つまり共有の秘密にたどり着きます。
のぞく人は秘密の色を持たないので、その色を作れません。鍵交換は同じ秘密をいっしょに作る手順で、公開鍵で中身を閉める公開鍵暗号とは違います。
二つの考え方を押して分けてみましょう。鍵交換は共有の秘密をいっしょに作ること、公開鍵暗号は公開鍵で中身を閉めることです。
これで、遠く離れた二人が、鍵を道に落とすことなく、同じ秘密をいっしょに持てることがわかりました。この単純な色混ぜの原理は、いまウェブサイトに安全に接続するたびに使われています。ブラウザとサーバーは接続のたびにこの方法でその接続だけに使う新しい共通鍵を作り、終われば捨てます。だから、あとでサーバーの秘密鍵がもれても過去の会話は開けられません。この性質を前方秘匿性と呼びます。
残る宿題は、途中に入りこんだ偽物をふるい落とすことです。次のレッスンでは、秘密鍵で残したしるしによって、メッセージが本当にその人から来たのかを確かめる電子署名を扱います。