公開鍵暗号 わかりやすく
前のレッスンでは、鍵一つで閉めたり開けたりする共通鍵暗号を見ました。速くてすっきりしていましたが、遠くの相手にその鍵をどうやってこっそり渡すかという宿題が残りました。では、閉める鍵と開ける鍵が別々だったらどうでしょうか。閉める鍵は世界中に配ってもかまわず、開ける鍵だけを自分ひとりが握っているとしたら。この考えから生まれたのが公開鍵暗号です。
鍵が二つある
共通鍵暗号では鍵は一つでした。公開鍵暗号は、対になる二つの鍵をいっしょに作って使います。一つは公開鍵で、名前のとおり誰に配ってもかまいません。もう一つは秘密鍵で、自分だけが持ち、決して渡しません。
二つの鍵は数学的に対になっていますが、公開鍵を知っていても秘密鍵を計算で割り出すことはできません。とても大きな数を素因数分解するように、一方向はかんたんでも逆向きは事実上できない数学の問題をもとに作られているからです。
二つの鍵を一つずつ押して、役割を見てみましょう。公開鍵は誰にでも配り、秘密鍵は自分だけが持っています。
公開鍵は広げておいてもかまいませんでしたが、秘密鍵は奥深くに隠しておかなければなりませんでした。同じ対なのに、役割は正反対です。一方は世の中に知らせ、もう一方は最後まで秘密として守ります。
では、鍵が二つあるとき、閉めるにはどちらを使い、開けるにはどちらを使うのでしょうか。閉める側から見ていきましょう。
公開鍵で閉める
誰かに秘密のメッセージを送るには、まずその人の公開鍵を手に入れます。公開鍵は誰でも持てるので、かんたんに手に入ります。その公開鍵でメッセージに鍵をかけます。
公開鍵で閉めるのは、相手が配っている開いた南京錠をメッセージにかけるのと同じです。南京錠は誰でもかけられますが、一度かけると、かけた本人でさえもう開けられません。公開鍵では閉めることしかできず、開けることはできないからです。
「公開鍵で閉める」を押してみましょう。誰でも持っている公開鍵で、メッセージに南京錠がかかります。
メッセージに鍵がかかって、読めない形になりました。閉めるのに使ったのは、秘密ではない公開鍵でした。だから、閉めることは本当に誰にでもできます。
ところが、閉めた本人でさえ、もう開けられません。公開鍵でかけた南京錠を開ける鍵は、別にあるのです。
秘密鍵でだけ開く
公開鍵でかけた南京錠は、それと対になる秘密鍵でしか開きません。同じ対の秘密鍵なら開き、ほかの鍵ではびくともしません。かけるときに使ったその公開鍵でも開きません。
だから、秘密鍵を持つただ一人だけが、そのメッセージを読めます。公開鍵を世界中が持っていても、読めるのは秘密鍵の持ち主だけです。
鍵を一つずつ当ててみましょう。対の秘密鍵だけが南京錠を開け、かけた公開鍵や違う秘密鍵はすべて失敗します。
対の秘密鍵を当てたときだけ開きました。この非対称こそが、公開鍵暗号の要です。閉めるのは誰でも、開けるのはただ一人。閉める権限は大きく開いておき、開ける権限だけを固く閉ざしておくわけです。
この性質のおかげで、前のレッスンの宿題が解けます。鍵をこっそり渡す必要そのものがなくなるからです。
鍵配送問題が解ける
共通鍵暗号では、同じ鍵を二人がそろって持っていなければならないので、その鍵をこっそり渡すのが悩みの種でした。公開鍵暗号には、この心配がありません。受け取る人の公開鍵は、誰が持っていっても、それで閉めることしかできないからです。
開けるための秘密鍵は、最初から持ち主の手を離れません。秘密のうちに渡す鍵がそもそもないので、危ない配送の段階がまるごと消えるのです。
共通鍵と公開鍵を押して、段階を比べてみましょう。共通鍵暗号には秘密の配送の段階がはさまっていて、公開鍵暗号にはその段階がありません。
二つのやり方を並べると、違いがはっきりしました。共通鍵暗号には秘密の配送という危うい段階が必ずはさまっていましたが、公開鍵暗号にはその段階がありません。ただし、公開鍵暗号は計算が重く、大きなデータをまるごと閉めるには時間がかかります。
そのため実際には、公開鍵暗号で短い共通鍵を安全に渡し、データは速い共通鍵暗号で閉めています。もう一つ宿題も残っています。受け取った公開鍵が本当にその人のものか、途中で誰かにすり替えられていないかを確かめる必要があります。この問題は、あとで証明書として扱います。
まとめ
まとめるとこうです。公開鍵暗号は、対になる二つの鍵を使います。公開鍵は誰にでも配り、秘密鍵は自分だけが持ちます。公開鍵で閉めたものは、対の秘密鍵でしか開きません。閉めるのは誰でも、開けるのはただ一人です。
だから公開鍵は公開しても安全で、秘密のうちに渡す鍵がそもそもありません。共通鍵暗号の鍵配送問題は、こうして解けます。
要点を順に押して振り返りましょう。(鍵が二つ → 公開鍵で閉める → 秘密鍵でだけ開く → 鍵配送問題の解決)
これで、二つの鍵の魔法がわかりました。配る鍵と自分だけの鍵で、秘密を安全にやりとりする方法です。この一組の鍵は、順番を逆にして使うと、偽造できない署名を作るのにも使われます。それは電子署名のレッスンで扱います。
その前に、次のレッスンでは、鍵をまったく送らずに二人が同じ秘密の鍵をいっしょに作って持つ方法、鍵交換を見ていきます。