データの暗号化は無線LANと同じ方式
無線LANの暗号化は、送信するデータを暗号化キーで暗号化し、受信したら同じ暗号化キーで元に戻す。SSLでデータを送受信するときも基本的には、同じ方式を用いている。つまり、通販のサイトで個人情報を送信するときには、暗号化キーで情報を暗号化し、情報を受け取ったサーバーは同じ暗号化キーで元に戻す。
この方法は、送信元と受信先で同じキーが使われるため、共通鍵暗号方式といい、その暗号化キーを共通鍵と言う。
ここで問題になるのは、共通鍵をどのようにして受け渡すかということだ。無線LANであれば、利用者が顔をあわすことができる環境なので、紙のメモを渡せば済む。
ところが、SSLの場合は、サーバーとユーザーはインターネットで繋がっているので、インターネット回線を通して共通鍵をやり取りしなくてはいけない。むろん、「今行っているSSL通信の共通鍵は、これですよ~。」などと回線に乗せる訳にもいかない。
共通鍵を公開鍵で暗号化する
さて、ここから少し話が複雑になる。実は、認証局がSSLサーバ証明書を発行するとき、同時に「公開鍵」という鍵と「秘密鍵」という一対の鍵をサーバー側に発行している。このとき、「公開鍵」で暗号化されたデータは「秘密鍵」でないと元に戻すことができない。
SSLを利用している銀行などのサーバーからユーザーに発行されるSSLサーバ証明書には「公開鍵」が含まれている。ユーザーは、この公開鍵を使って、共通鍵を暗号化し、回線に流す。
一方、サーバー側は、暗号化された共通鍵を受信したら、認証局から発行され保管している秘密鍵で、暗号化された共通鍵を元に戻している。
サーバー側に共通鍵が無事に渡れば、共通鍵で暗号化された個人情報は、容易に元に戻すことができる。
公開鍵と秘密鍵で情報を受け渡す方式を、「公開鍵暗号方式」というが、少々分かりにくい。次は、そこを簡単に解説しよう。
いったい公開鍵と秘密鍵って何?
ここまで読むと、「いったい公開鍵と秘密鍵って何?」と疑問に思われる方もいるだろう。次の説明を読んでいただきたい。■公開鍵
暗号化する専用の鍵。
たとえば、古民家の倉にある「錠前」にあたる。「錠前」は、鍵をかけることしかできない。公開鍵は、誰でも使えるような状態にあっても、暗号化しかできないので問題はない。
■秘密鍵
暗号化されたデータを元に戻す専用の鍵。
上例であれば、錠前をぐるっと回して開ける大きな鍵にあたる。秘密鍵は、サーバー側で厳重に管理しておく必要がある。
以上で理解頂けただろうか。
なお、公開鍵と秘密鍵があるのであれば、公開鍵暗号方式で個人情報を暗号化すればよいようにも思える。ところが、公開鍵と秘密鍵による処理には時間がかかるので、サイトの表示が一時的に停止してしまい、実用的とは言えない。
一方、共通鍵による暗号化の処理は短時間に行われるので、個人情報といった情報量の多いデータに利用しても問題はない。また、共通鍵の情報量は極小なので、公開鍵と秘密鍵で処理してもサイトが停止することはない。