SSLとは?(3)
『公開鍵暗号方式』
SSLで暗号化するには「共通鍵」というのを使うという話をしました。
でもこの共通鍵は、暗号のやり取りをする両者(ブラウザとWebサーバ)で共通の鍵を使う必要があるので、どっちかが作った鍵を相手に渡さないといけません。
そのとき鍵を盗聴されてしまうリスクがあります。
そこで、その「共通鍵」を安全にやり取りするために利用されるのが、「公開鍵暗号方式」です。
公開鍵暗号方式では、まず最初にペアの鍵を作る必要があります。そのペアとは「公開鍵」と「秘密鍵」の組み合わせです。
で、ここが重要なんですが、
「公開鍵で暗号化したデータは、秘密鍵でしか元に戻せない」
という仕組みがあります。
それを念頭において、AさんとBさんが公開鍵暗号方式を行った場面を考えて見ましょう。
1. Aさんは「公開鍵」と「秘密鍵」のペアを作ります。
2. AさんはBさんに公開鍵を渡し、 「Bさん、この公開鍵でデータを暗号化して送って」 とお願いをします。
3. Bさんは、Aさんの公開鍵を使ってデータを暗号化し、そのデータをAさんに渡します
4. 自分の公開鍵で暗号化されたデータを受け取ったAさんは、それとペアとなる秘密鍵でデータを元に戻します。
この例のポイントは、「2」でAさんはBさんに公開鍵を渡している点です。
共通鍵の場合、ここで盗聴されると、データを元に戻されてしまいますが、公開鍵が漏れても、結局秘密鍵がわからないとデータは元に戻せないので安心です。
だから公開してもいい鍵ということで「公開鍵」と言ってるんですね。
このように安全な公開鍵暗号方式ですが、デメリットとしては、暗号と復号化の処理に時間がかかることが挙げられます。
だから、SSLでは、この公開鍵暗号方式を「共通鍵」を渡すことだけに使います。
公開鍵暗号方式を使って、安全にブラウザとWebサーバの間で「共通鍵」を交換して、後は、高速な共通鍵暗号方式を行うというわけです。