日頃から何気なく使っているhttps通信。ネットサーフィンをしていると、httpなのかhttpsなのかどうかも意識しないことが多い。
実際には、以下のようにとても複雑な処理が行われている。
ただ、これらの処理は自動で行われているので、私たちが意識することはない。
大雑把に言うと、
①サーバ証明書で、サーバの正当性を確認する
②証明書の公開鍵を使ってサーバとクライアントの共通鍵を作り、その鍵で暗号化通信をする。
H19春 初級システムアドミニストレータ試験 午後 問4
〔SSL通信の流れ〕
(1)SSL通信の初期設定
処理の流れ(1)を契機に,SSLによる通信が始まる。最初に,利用者のブラウザとWebサーバの間で暗号化やメッセージダイジェストの方式を決める。
SSLによる暗号化では,公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式が用いられる。
① 利用者のブラウザは,“https://"で始まるURLが指し示すページにアクセスし, WebサーバにSSL通信の開始を知らせる。
② SSL通信の開始を知らされたWebサーバは,利用者のブラウザに,今回使用する暗号方式と[ a ]証明書を送信する。
③利用者のブラウザは,あらかじめ登録されている[ b ]証明書を用いて,送信された[ a ]証明書が有効であることを確認する。
④ 利用者のブラウザは, [ a ]を用いて乱数情報を暗号化してWebサーバに送信するとともに,その乱数情報を用いて[ c ]を生成する。
⑤Webサーバは,④で送信され,暗号化された乱数情報を[ d ]を用いて復号し, [ c ]を生成する。
(2)利用者メッセージの送受信
SSL通信の初期設定が完了すると,利用者のブラウザとWebサーバの間では, [ c ]を用いて通信内容の暗号化が行われる。さらに,メッセージダイジエストを用いて,受信した通信内容が途中で改ざんされていないことを確認する。
(3)SSL通信の終了
処理の流れ(7)を契機に,利用者のブラウザが“http://"で始まるURLが指し示すページにアクセスを開始すると,WebサーバはSSL通信を終了する。
これはなかなか難しい問題である。
でも、答えは基本的なキーワードだ。

正解は以下。
a  Webサーバの公開鍵
b ルート認証局の公開鍵
c  Webサーバと利用者の共通鍵
d  Webサーバの秘密鍵

図にすると、こんな感じ
SSL通信のシーケンス_情報セキュリティスペシャリスト試験

違う過去問でみてみましょう!
SSLの通信シーケンスはSSLハンドシェイクプロトコルとSSLレコードプロトコルに分けられる。SSLハンドシェイクプロトコルでは,サーバの正当性確認と通信を行うための鍵交換を行う。【下の手順(1)】
一方,SSLレコードプロトコルでは,実際に暗号化した通信を行う。【下の手順(2)(3)】
このシーケンスに関して,以下の過去問(H18NW午後Ⅰ問3)に詳しく解説されている。
図2に、SSL通信のシーケンスを示す。


          図2 SSL通信のシーケンス(概略)
 図2中の(ii)で,SSL-VPN装置は,自ら認証してもらうために,サーバ証明書を送信する。[ ウ ]は,サーバ証明書を発行したCA局の証明書を保持しているので,この③証明書に含まれる鍵を使って,サーバ証明書の正当性を検証する。(iii)はオプション処理で,クライアント証明書による認証が要求されていたときに実施される。(iv)によって,モバイルPCとSSL-VPN装置の双方で,共通鍵が生成される。

設問1 本文中の[ ウ ]に入れる適切な字句を答えよ。
設問3 SSLの動作について、(1),(2)に答えよ。
  (1)本文中の③「証明書に含まれる鍵」の種類を答えよ。
  (2)共通鍵が利用される場所を、図2の(ⅰ)~(ⅴ)で答えよ。また、共通鍵を利用することによる利点を、15字以内で述べよ。
(H18NW午後1問3)
若干修正はしているが、ほぼ原文の問題。
SSL-VPNを学習する良い問題ですので、時間があるときに全ての問題を解いてほしい。
ちなみに、[ ウ ]には、図中の言葉が入る。

【解答例】
設問1 モバイルPC
設問3 (1) 公開鍵
  (2) ⅴ
    ・暗号と復号が高速にできる。
    ・演算処理が高速にできる。

別の過去問(H25年NW午後Ⅰ問1)には、以下の穴埋め出題がある。
SSLには,  PCとSSL-VPN装置間において,  SSLセッションを確立させるためのハンドシェイクプロトコルが規定されている。ハンドシェイクプロトコルでは,[  ア ]メッセージによって暗号化アルゴリズムを決定し,公開鍵による電子証明書の確認後,共通鍵での暗号化と,メッセージ認証コードのチェックを行い,  SSLセッションを確立する。
SSLハンドシェイクのうち,暗号化アルゴリズムを決定するためのメッセージが問われています。正解は「HELLO」。
SSLのハンドシェイク時には,クライアントからサーバにClientHelloメッセージを送ります。この中には,クライアントが利用可能な暗号化アルゴリズムの一覧を含みます。ClientHelloを受け取ったサーバは,自身が利用可能な暗号化アルゴリズムのリストと照合し,どの暗号化アルゴリズムを利用するかを決定します。決定した暗号化アルゴリズムは,ServerHelloメッセージによって,サーバからクライアントに通知します。

日経ITproの以下が分かりやすい(さすが日経BP)
http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284445/zu1.jpg