公開鍵暗号方式(Public-key cryptography)
インターネットのように不特定多数が利用するネットワークで通信を行う際、その経路上には「やり取りするデータが盗聴される恐れ」が常につきまといます。
この時、「盗聴されないように」ではなく「盗聴されても中身がわからないように」という考え方に基づいて「データの中身を第三者にはわからない形へと変換してしまう」ことを暗号化といいます。
公開鍵暗号方式は、暗号化と復号に別々の鍵を用いるのが特徴となる暗号方式です。
まず受信者は、秘密鍵と公開鍵のペアを持ちます。公開鍵は広く一般に公開して構わない鍵で、「自分にデータを送る時はこれで暗号化してください」と送信者に渡します。送信者は、この公開鍵を使ってデータを暗号化して、受信者へと送ります。この時、こうして暗号化されたデータは、秘密鍵でないと復号することができない形式になっています。そして受信者は、送られてきたデータを自身の秘密鍵を用いて復号するというわけです。
一見「鍵を公開して大丈夫なの?」と思ってしまう方式ですが、公開された鍵は暗号化にしか用いることができないため、途中でデータを盗聴される恐れにはつながりません。
この公開鍵暗号方式は、秘密鍵暗号方式に比べて暗号化や復号にかなり処理時間を要します。そのため、利用形態に応じて双方を使い分けするのが一般的です。
たとえばHTTPS。ここで用いる暗号化プロトコルのSSLでは、まずWebサイトとの間で公開鍵暗号方式を用いた通信を行います。この最初のやり取りにより秘密鍵(共通鍵)がクライアントとサーバ間で共有されて、以降は秘密鍵暗号方式による通信が行われる流れになっています。