ポイント

●SSL(TLS)とは,主にWebアクセスでやり取りするデータを暗号化するための仕組みである。相手が信頼できるか確認する機能もある
●SSL(TLS)を利用してクライアントがサーバーを認証するためには,事前に認証局(CA)の公開鍵証明書を入手している必要がある
●ショッピング・サイトなどでSSLを利用する際に警告画面が出ないのは,あらかじめ認証局の公開鍵証明書がWebブラウザにインストールされているからである

 SSLは,第2章で勉強した技術の中では最も身近に感じると思いますが,いろいろな技術が組み合わさって出来ています。わからないところが出てきたら,すでに解説してきた記事へのリンクをたどって復習をしながら読み進めてみてください。

SSL/TLSとは

 SSL(Secure Sockets Layer)/TLS(Transport Layer Security)とは,主にクライアントとサーバー間のWebアクセス・データを暗号化するためのしくみです。Webアクセス以外のアプリケーションでも利用されています。また,お互いが正しい通信相手であるか確認する機能もあります。

 例えば,ショッピング・サイトに住所・氏名や,クレジットカードの番号を送る時などに,「サーバーが正しいかを確認して,情報を暗号化して送信する」ということができます。

 Webアクセスする際に「https」で始まるアドレスにアクセスすると,ブラウザによっては鍵のマークが出てきます。この鍵マークが「サーバーとクライアント間でやり取りするデータを,SSLあるいはTLSによって暗号化している」という意味です(図1)。

図1 Internet Explorerの場合,鍵のアイコンでSSL(TLS)の利用を確認できる

SSLとTLSの関係

 SSLは,元々は米ネットスケープ社が開発した技術です。そして,ユーザーに特別な知識や準備なしに暗号通信することができて利便性が高いことから,インターネットにおけるさまざまな標準規約を定めているIETF(The Internet Engineering Task Force)において扱われるようになりました。ここでの同技術の呼び名がTLS(Transport Layer Security)です。SSLとTLSの間には互換性はありませんが,大枠の仕組みはほとんど同じです。

 現在主に使われているSSLはv2(バージョン2)とv3(バージョン3)で,SSLv3を基にTLSが作られました。例えば,Internet Explorerの場合だと,ツール ⇒ インターネットオプション ⇒ 詳細設定とメニューをたどった画面で利用可能なバージョンを設定できます(図2)。


図2 Internet Explorerの設定画面
SSLv2.0,SSLv3.0,TLS1.0と,利用可能にするものをそれぞれ別にチェックするようになっている。なお、SSLv2は既知の脆弱性があるため,推奨されていない。

SSL(TLS)のシーケンス

 それでは,Aさんがインターネット上にあるSSL(TLS)サーバーを利用する時の流れを見てみましょう(図3)。ただし,ここでは一般に使われているサーバー認証(アクセスしたサーバーが信頼できるかをクライアントが判断する)において,SSL(TLS)がなぜうまく行くのか(どのようにしてサーバーを信頼することができるのか)という部分に焦点を当てて解説します。詳細なシーケンスに関しては,RFC2246やRFC4346を参照してください。

図3 SSL(TLS)のシーケンス

ポイント(1)---なぜ共通鍵暗号方式なのか

 それでは,SSL(TLS)を理解するためのポイントを確認して行きましょう。

 まず,図3の(7)を見てみてください。ここでは,実際にやり取りするデータを暗号化しています。そこには,共通鍵暗号方式が利用されています。これは,クライアントとサーバーのやり取りが極端に遅くならないようにするためです。もし,この部分を公開鍵暗号方式で実装していたら,暗号化/復号に要する時間が多くなってしまい,HTTPSでWebアクセスした途端に急激に遅くなる,といった事態になってしまうかもしれません。

ポイント(2)---なぜ乱数を暗号化するのか

 次に図3の(4)と(5)に注目します。クライアント側で作った乱数をサーバーの公開鍵で暗号化して,サーバーに送付しています。そして,この乱数を基にしてクライアント側とサーバー側の双方で暗号化に使う共通鍵を作成しています。もし,この乱数を暗号化せずにサーバーに送付すると,伝送経路上で悪意のある第三者が盗聴でき,図3(7)で利用する鍵を第三者が生成できてしまいます。このため,たとえ乱数といえども暗号化して送付する必要があるのです。

 公開鍵暗号方式の仕組みにより(公開鍵暗号方式[後編]----使い方と特徴」参照),サーバーの公開鍵で暗号化されたデータの中身を見ることができるのは,サーバーの公開鍵のペア,すなわちサーバーの個人鍵を持っている「サーバー」だけになります。このことにより,悪意のある第三者が鍵を不正に作ることを防いでいます。

ポイント(3)---なぜ受信した証明書を信頼できるのか

 図3の(3)では,Aさんがサーバーから送られてきたX.509証明書を信頼できるかどうか確認しています(X.509証明書に関しては「PKI(後編)---X.509証明書とPKIの仕組み」を参照してください)。

 さて,ここで質問です。Aさんはサーバーの公開鍵証明書を信頼するために,事前に入手しておかねばならないものがあります。それは何でしょうか?