SSLってなに?
こんにちは、なおぽんです。
「SSL」という言葉はご存知でしょうか?
OpenSSLの重大バグが発覚。インターネットの大部分に影響の可能性 | TechCrunch Japan
最近では、OpenSSLにHeartBleedと呼ばれる脆弱性が発見され話題になりました。
SSLとは
Secure Sockets Layer: ネットスケープコミュニケーションズ (Netscape) が開発した、インターネット上で情報を暗号化し安全な通信を提供するプロトコル。
これだけ見てもイマイチよくわからないかと思うので、どういう仕組みで安全な通信が確立されているのか書いていきます。
例えば僕がAmazonで買い物をするとしましょう。
Amazonで買い物をするためにクレジットカード番号を登録したいです。
しかし、漏洩を防ぐためにSSL通信でやりとりをしたい......。
そこで、僕(ブラウザ)からAmazon(サーバー)に「SSL通信をしたい」と要求します。
するとサーバーはブラウザに暗号化に使う鍵(公開鍵)を送ってきます。
この公開鍵を使って暗号化した共通鍵を生成し、サーバーに送ります。
受け取ったサーバーは共通鍵を、自分だけが持っている秘密鍵を使って復号化するのです。
そこで初めて共通鍵を使用し、安全なSSL通信を確立出来るようになります。
この公開鍵と秘密鍵を使った暗号方式を公開鍵暗号方式と言います。
公開鍵暗号(こうかいかぎあんごう、Public key cryptosystem)とは、暗号化と復号に別個の鍵(手順)を使い、暗号化の為の鍵を公開できるようにした暗号方式である。1980年代にかけ、日本で紹介された直後は「公衆暗号系」と訳されていた。
しかし、ここで問題があります。
僕が見ているページは本当にAmazonなのでしょうか?
見た目は全く同じですが、誰かがAmazonになりすましている可能性があるのです。
そこで本人かどうかを証明するために認証局と呼ばれる第三者機関が出来ました。
Amazonは認証局で電子証明書を発行します。
(この電子証明書には、公開鍵、公開鍵の発行者、認証局の情報などが含まれています。)
そして先ほどと同じようにブラウザからのSSL通信の要求に対して、電子証明書(公開鍵を含む)を送るのです。
受け取ったブラウザはこの電子証明書を発行している認証局は本当に信用していいのか確認します。
「この認証局は信用出来るから間違いなくAmazonだ!」と判断すると、公開鍵を使用して共通鍵を生成しサーバーに送るのです。
サーバーが秘密鍵を使って複合化し、始めてSSL通信が確立されるのです。
この第三者(認証局)を使って、保証を実現する仕組みをPKI(Public Key Infrastracture)と言います。
暗号技術において、公開鍵基盤(こうかいかぎきばん、英: public key infrastructure、以下PKI)は、利用者の身元について「信頼できる第三者」(英: trusted third party)が審査を行い、保証を実現する仕組みのことである。
SSLを理解する上で公開鍵暗号とPKIの理解は欠かせないものとなります。
より詳しい内容については参考サイトが詳しく解説してくださっているのでどうぞ。
PKI基礎講座(1):PKIの基礎を理解しよう! - @IT
電子証明書や公開鍵はブラウザから見る事が出来るので、気になる方は見てみてはいかがでしょうか?