SSL/TLS とは

SSL/TLSの機能

暗号化

認証

改ざん検知

対応するアプリケーション層のプロトコル

プロトコル(平文)ポート番号(平文)プロトコル(SSL/TLS)ポート番号(SSL/TLS)
HTTP over SSL/TLSHTTP80HTTPS443
SMTP over SSL/TLSSMTP25SMTPS465
FTP(data) over SSL/TLSFTP(データ転送用)20,1024以上FTPS988
FTP(control) over SSL/TLSFTP(制御用)21FTPS990
Telnet over SSL/TLSTelnet23TELNETS992
POP over SSL/TLSPOP3110POP3S995
IMAP over SSL/TLSIMAP4143IMAPS993
LDAP over SSL/TLSLDAP389LDAPS636

HTTP over SSL/TLS

SSL通信のフロー

  1. Webブラウザが行うサーバ証明書の正当性の検証
    • 証明書の検証
    • 証明パスの検証
    • 有効期限の検証
    • 失効リストの検証
    • ドメインの検証
    • サーバ証明書が信頼できる認証機関から発行されていることの確認
  2. 鍵の交換
  3. 暗号化通信の開始

SSL通信の仕組み

SSL/TLS の構造

TLSレコード

データ送信時

データ受信時

TLSレコードの構造

TLSハンドシェイク

  1. 【クライアント】 => サーバ
    1. Client Hello
      • 利用可能な暗号化・圧縮アルゴリズムを送信して通信の開始をサーバに通知する
  2. クライアント <= 【サーバ】
    1. Server Hello
      • クライアントから受領した暗号化・圧縮アルゴリズムから使用するものを決めてクライアントに通知する
    2. Certificate
      • サーバのデジタル証明書とルートCAまでの証明書のリストをクライアントに送信する
    3. Server Key Exchange
      • (Certificateでデジタル証明書を送信しない場合)一時的なRSA鍵かDH鍵を生成してクライアントに送信する
    4. Certificate Request
    5. Server Hello Done
      • Server Helloから始まったクライアントに対する一連のメッセージの完了をクライアントに通知する
  3. 【クライアント】 => サーバ
    1. Certificate
    2. Client Key Exchange
      • 暗号化通信に使うプリマスターシークレットを生成する
      • Certificateでサーバから受領したデジタル証明書に含まれる公開鍵でプリマスターシークレットを暗号化してサーバに送信する
    3. Certificate Verify
      • (クライアント認証を行う場合)Client Helloから始まる通信内容のダイジェスト(ハッシュ値)を生成する
      • ダイジェストに秘密鍵でデジタル署名を作成してサーバに送信する
      • サーバは、Certificateでクライアントから受領したデジタル証明書に含まれる公開鍵で、クライアントから受領したデジタル署名を検証する
    4. Change Cipher Spec
      • Client Key Exchangeで生成したプリマスターシークレットと、サーバとクライアントが生成した乱数からマスターシークレットを生成する
      • Recordプロトコルは、Handshakeプロトコルからマスターシークレットを受け取り、マスターシークレットを元にMAC鍵、暗号鍵、ブロック暗号のCBCモードで使う初期ベクトル(IV)を生成する
      • Change Cipher Specプロトコルは、使用する暗号アルゴリズムの準備が整ったことをサーバに通知する
    5. Finished
      • 鍵交換と認証処理が成功したことをサーバに通知する
      • Change Cipher Specで生成した鍵を使い、メッセージを暗号化してサーバに送信する
  4. クライアント <= 【サーバ】
    1. Change Cipher Spec
      • Client Key Exchangeでクライアントから受領したプリマスターシークレットを秘密鍵で復号する
      • 復号したプリマスターシークレットと、サーバとクライアントが生成した乱数からマスターシークレットを生成する
      • Recordプロトコルは、Handshakeプロトコルからマスターシークレットを受け取り、マスターシークレットを元にMAC鍵、暗号鍵、ブロック暗号のCBCモードで使う初期ベクトル(IV)を生成する
      • Change Cipher Specプロトコルは、使用する暗号アルゴリズムの準備が整ったことをクライアントに通知する
    2. Finished
      • 鍵交換と認証処理が成功したことをクライアントに通知する
      • Change Cipher Specで生成した鍵を使い、メッセージを暗号化してクライアントに送信する
      • SSL/TLSのセッションとコネクションが確立した。以降、アプリケーションによる暗号化通信が行われる

暗号スイートの選択

セッションとコネクション

セッション

コネクション

SSL通信の高速化

SSL/TLSの拡張仕様

常時SSL

セキュリティ上の攻撃

SSL/TLSに関係する脆弱性

FREAK

HeartBleed

POODLE

ガイドライン

関連サイト

関連用語


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS