|
||||||||||||||||||
| 前のページ 1 2 3 | ||||||||||||||||||
| SSLで暗号化通信をする際の動作内容 | ||||||||||||||||||
|
これまで説明したメカニズムによってSSLはインターネット上で安全にデータを送受信できる仕組みを提供しています。それでは、クライアントがSSLのURLにアクセス後、クライアントとWebサーバでどのようなやり取りがされているのか簡単に見ていきましょう。 |
||||||||||||||||||
| STEP1:使用するアルゴリズムを決める | ||||||||||||||||||
|
SSLの仕様では、利用できる暗号化アルゴリズムやハッシュ関数アルゴリズムが複数あります。そのため、どのアルゴリズムを使用するかを最初に取り決めます。 |
||||||||||||||||||
| STEP1-1:Hello Request | ||||||||||||||||||
|
最初にサーバがクライアントに送付するメッセージで、クライアントに「Client Hello」の送信を要求します。 |
||||||||||||||||||
| STEP1-2:Client Hello | ||||||||||||||||||
|
Hello Requestを受け取ったクライアントは、Client Helloメッセージを送信します。Client Helloメッセージで送信する代表的な内容は「利用可能なSSLのバージョン番号」「現在時刻」「利用可能な暗号化アルゴリズムとハッシュ関数の組み合わせリスト」「セッションID(新規に通信時は空)」となります。 |
||||||||||||||||||
| STEP1-3:Server Hello | ||||||||||||||||||
|
Client Helloを受け取ったサーバは、Server Helloメッセージで応答します。Server Helloメッセージで送信する代表的な内容は「利用可能なSSLバージョン番号」「現在時刻」「利用することにした暗号化アルゴリズムとハッシュ関数の組み合わせ」となります。 |
||||||||||||||||||
| STEP2:通信相手が本物かどうか確認する | ||||||||||||||||||
|
続いて、通信相手のWebサーバが本物かどうか確認します。ここでは、先ほど解説した「デジタル証明書」が登場します。 |
||||||||||||||||||
| STEP2-1:Server Certificate | ||||||||||||||||||
|
クライアントにデジタル証明書を送信します。 |
||||||||||||||||||
| STEP2-2:Server Hello Done | ||||||||||||||||||
|
Webサーバから必要なメッセージがすべて送信されたことを通知するメッセージです。これを受けて、クライアントはデジタル証明書の内容を検証します。ここで、問題なければ、正しい通信相手であると判断します。 しかし、検証した結果問題があった場合、クライアント(Webブラウザ)は警告を表示します。警告を表示する条件は「Webブラウザが信頼しているCAが証明している証明書でない場合」「有効期限が切れている証明書の場合」「証明書内で設定されたURLと実際に運用されているURLが異なる証明書の場合」などがあります。 |
||||||||||||||||||
| STEP3:暗号化に使用する鍵を準備する | ||||||||||||||||||
|
続いて暗号化に使用する共通鍵をクライアント側で生成し、Webサーバに渡します。 |
||||||||||||||||||
| STEP3-1:Client Key Exchange | ||||||||||||||||||
|
Webサーバの認証を終えたクライアント側では、共通鍵(注1)を生成してWebサーバの公開鍵で暗号化し、Webサーバに送信します。Webサーバは暗号化された共通鍵を自分の秘密鍵で復号化します。
※注1:
厳密には共通鍵ではなく、プレマスターシークレットと呼ばれる384バイトの値を生成します。この値を基にクライアント・Webサーバそれぞれでハッシュ関数から共通鍵を生成します。
|
||||||||||||||||||
| STEP4:暗号化通信を開始・終了する | ||||||||||||||||||
|
使用する暗号化アルゴリズムを確認し、暗号化通信を開始します。 |
||||||||||||||||||
| STEP4-1:Change Cipher Spec | ||||||||||||||||||
|
Client HelloメッセージとServer Helloメッセージをやり取りした際に取り決めた暗号化アルゴリズムを使って、暗号化通信を開始する旨をクライアントがWebサーバに対して宣言します。 |
||||||||||||||||||
| STEP4-2:Finished | ||||||||||||||||||
|
クライアントが、セッション確立のために必要なデータがそろったことをWebサーバに知らせるためのメッセージです。 |
||||||||||||||||||
| STEP4-3:Change Cipher Spec | ||||||||||||||||||
|
クライアントからのChage Cipher Specメッセージに応答し、暗号化通信を開始する旨をクライアントに対して応答するメッセージです。 |
||||||||||||||||||
| STEP4-4:Finished | ||||||||||||||||||
|
Webサーバからクライアントに暗号化通信の準備が完了したことを知らせるためのメッセージです。SSLでは以上のメッセージをクライアントとWebサーバでやり取りし、暗号化通信をしています。また、パケットキャプチャツールを利用すれば、実際の通信内容を見ることも可能です。パケットキャプチャツールとしてはWireSharkが利用できます。
WireShark
http://www.wireshark.org/ |
||||||||||||||||||
| まとめ | ||||||||||||||||||
|
今回は「SSLとは何か」「どのようなメカニズムなのか」また「クライアントとWebサーバ間でどのようなやり取りがされているのか」を解説しました。次回はこのSSLを皆さんの環境でも利用する方法を解説します。 |
||||||||||||||||||
|
前のページ 1 2 3 |
||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||


