 |

|
 |
SSL(Secure Socket Layer) は Netscape
Communications 社が提案するセキュリティプロトコルであり、暗号化、
認証、 完全性(改竄防止)を提供する。
OSI 参照モデルでは第5層のセッション層に位置し、アプリケーション層から透過的であるため
HTTP, FTP, TELNET
などのアプリケーション層のプロトコルの下で対応することが可能である。
同様のプロトコルとして EIT (Enterprise Integration Technology)
の設計による S-HTTP (Secure HTTP) があるが、HTTP
に特化したアプリケーション層のプロトコルであったため汎用性に欠けている。
また2大ブラウザである NetscapeCommunicator と InternetExplorer が SSL
に対応したこともあり S-HTTP は影を潜め、SSL が WWW
で最も利用されるセキュリティプロトコルとなった。
SSL には複数のバージョンが存在する。SSL 1.0
は実装されることはなく、初期の Netscape Navigator (1.0 から 2.x) で SSL
2.0
が組み込まれた。しかし乱数ジェネレータの実装上のバグがあったため、1996年3月と11月にこの問題を解決した
SSL 3.0 のドラフトが発表される。現在の NetscapeCommunicator では SSL 2.0
と SSL 3.0 の両者が使えるようになった。実装はされたが RFC
などへの標準化作業は行われなかった。
SSL と同様のプロトコルとしては Microsoft 社が発表した PCT (Private
Communication Technology) という対抗プロトコルがある。PCT は
InternetExplorer で実装されたが、SSL が既に普及していたこともあり
InternetExplorer 3.0 からは SSL 3.0 もサポートされるようになった。
IETF の TLS Working Group が 1996年6月の 36th IETF 会議で活動を開始し、SSL
3.0 をベースに標準化が進められ、現在 RFC2246 として TLS 1.0
が公開されている。TLS 1.0 ではバージョン番号に 3.1
が使用されており、事実上の SSL 3.1 とも言える。
TLS では PCT 独自機能の付加、Fortezza
のサポート中止などの変更点が見られる。
|
 |
SSL プロトコルは2つのレイヤ上に構成される。トランスポート層の直上に
SSL Record Protocol が、更に上位層を SSL Handshake Protocol が担当する。
|
 |
図 3 Layer
|
|
SSL Record Protocol は バイト以下の SSLPlaintext
レコードに分割し、データ圧縮、 メッセージ認証子(MAC)の生成、
データの暗号化などの処理がされ、上位の SSL Handshake Protocol
には透過的に行われる。
SSL v3 での SSL Handshake Protocol は次のような処理が行われる。
ClientHello
メッセージにてクライアント側でサポートしている暗号化・圧縮アルゴリズムが送信される。サーバ側でその中から選択したあと
ServerHello
メッセージで送信される。このとき双方でランダムに生成した値も交換しておく。
Certificate
メッセージでサーバ自身の公開鍵証明書を送信する。公開鍵証明書が存在しない場合には
ServerKeyExchange メッセージで RSA 公開鍵又は Diffie-Hellman
公開鍵が送信される。SSL で使用される公開鍵証明書は X.509 v3
が採用されている。
CertificateRequest
メッセージはクライアントに公開鍵証明書の提示を求める場合に用いられる。
ServerHelloDone メッセージで ServerHello
メッセージからの一連の送信が終えたことをクライアントに伝える。
クライアントは CertificateRequest
メッセージを受け取った場合に限り Certificate
メッセージを送信する。クライアントが公開鍵証明書を持っていない場合にはここで
Alert を返却する。
クライアントは 48 ビットの PreMasterSecret データを生成し
ClientKeyExchange メッセージで送信する。
CertificateVerify
メッセージはクライアントの公開鍵証明書の検証を行う際に利用される。
Finished メッセージは SSL Handshake Protocol
が終了するときに送信される。
ChangeCipherSpec
メッセージは使用する暗号化・圧縮アルゴリズムを変更する際に送信される。新規セッション確立時の
SSL Handshake Protocol 中にも利用される。
|
 |
図 4 SSL Handshake
|
|
 |
つぎに SSL 2.0/3.0 にて RSA
とともに使用可能な暗号アルゴリズムとハッシュアルゴリズムの組
(cipher suite と呼ばれる) を紹介する。
|
| Cipher Suite |
SSL
2.0
|
SSL
3.0
|
3DES_EDE_CBC_SHA
|
○
|
○
|
DES_CBC_MD5
|
○
|
×
|
DES_CBC_SHA
|
×
|
○
|
IDEA_CBC_MD5
|
○
|
×
|
IDEA_CBC_SHA
|
×
|
○
|
RC4_128_MD5
|
○
|
○
|
RC4_128_SHA
|
×
|
○
|
RC2_CBC_128_MD5
|
○
|
×
|
輸出用
|
DES_CBC_40_SHA
|
×
|
○
|
RC4_40_MD5
|
○
|
○
|
RC2_CBC_40_MD5
|
○
|
○
|
暗号化なし
|
NULL_MD5
|
×
|
○
|
NULL_SHA
|
×
|
○
|
図 5 RSA cipher suite
|
|
SSL 3.0 ではセッション鍵交換用として Diffie-Hellman 及び Fortezza
が、認証用として DSS/DSA がサポートされている。
|
 |
 |
|

|
 |

|
 |

|
 |