まず,SSLを使うと何ができるのかを見ていこう。SSLが持つ機能は大きく二つある。「データの暗号化」と「通信相手が信頼できることの確認」(認証)だ(図1-1)。
![]() |
図1-1●SSLはインターネット上でデータを安全にやりとりするプロトコル 接続相手のサーバーが信頼できるかどうかを確かめたうえで,データを暗号化してやりとりする。クレジットカード情報などをやりとりするWebショッピングには欠かせない機能だ。 [画像のクリックで拡大表示] |
暗号化と相手認証の機能を持つ
Webアクセスをしていると,個人情報など,他人に見られたくないデータをやりとりするケースが出てくる。そんなときにSSLを使って,インターネットでやりとりするデータを暗号化し,万一データが見られても内容がわからないようにする。クライアントがデータを暗号化してインターネットに送り出し,この暗号化データを受け取ったサーバーが元のデータを取り出す。こうして,通信途中でやりとりの内容を見られることを防ぐわけだ。
また,大事なデータを送るときには,通信相手のサーバーが,なりすまされた相手ではなく,自分の信頼できる相手かどうかを確かめる必要も出てくる。そこでSSLには,通信相手が信頼のおけるサーバーかどうかを確かめる機能も備わっている。これは,クライアントがサーバーから「サーバー証明書」と呼ばれる情報を受け取り,そのサーバー証明書を検証することで,通信相手のサーバーが信頼できるかどうかを判断するしくみになっている。
SSLは「Webアクセス」でやりとりされるデータの暗号化によく使われる。だが実際は,アプリケーションの種類は問わない汎用的なプロトコルになっている。つまり,HTTP以外にもメールやFTPといったアプリケーションのデータを暗号化することも可能である。
アプリとTCPの間に位置する
次に,SSLが通信全体のどの部分に位置するのかを見てみよう。Webアクセスに登場するさまざまなプロトコルとSSLの関係を確認する(図1-2)。
![]() |
図1-2●TCPとアプリケーションの間で動作する アプリケーションがTCPにデータを渡すところにSSLが介在して,データを暗号化する。 [画像のクリックで拡大表示] |
通常のWebアクセスは,Webブラウザから「http://」で始まるURLで指定したサーバーあてに要求を送る。このときWebブラウザはTCPにデータを渡す。SSL(SSLクライアント)は,このWebブラウザとTCPの間に位置する。Webブラウザが「https://」で始まるURLのサーバーあてにデータを送るとき,WebブラウザはTCPではなくSSLにデータを渡す。そしてSSLは,ブラウザから受け取ったデータを暗号化してから改めてTCPへ渡す。
暗号データを受け取ったTCPは,このデータがSSLのデータであることを示すため,TCPパケットに「443番ポートあて」と明記する。このデータが,IP,イーサネットと渡って回線上に送り出される。以上が,SSLの暗号通信における送信時の流れである。
受信時は,送信時の流れとは逆の流れになる。受信側では,TCPパケットに書かれた「443番ポート」の表示を見て,このデータがSSLによって暗号化されていることがわかる。そこでサーバー側のSSL(SSLサーバー)は,暗号化されたデータを復号してWebサーバー・ソフトへ渡す。
SSLはこのように,アプリケーションとTCPの間に位置して,データの暗号化と復号の作業をしているわけだ。
標準化したTLSも内容は同じ
SSLは元々,米ネットスケープ・コミュニケーションズが開発した独自仕様のプロトコルだった。その後,Webアクセスの普及とともに,SSLをベースとした標準技術も登場した。それがTLSである。
SSLとTLSの動作と機能はほぼ同じである。現在は,SSL3.0とTLS1.0が一般的に使われており,Internet Explorer7やFirefox2でもデフォルトでこの二つが使えるようになっている。