🔑

SSL/TLSとは?

2024/06/14に公開

SSL/TLSとは

SSL (Secure Sockets Layer) / TLS (Transport Layer Security)

インターネット上でウェブブラウザとウェブサーバー間のデータの通信を暗号化し、安全に通信させるための暗号化プロトコル。主に個人情報やクレジットカード情報などの重要なデータを暗号化して通信を行う

SSL暗号化通信が行われているとアドレスバーに鍵マークがついたりURLの先頭がhttpsに変わる

2つの違いは?

TLSはSSLの新しいバージョンで、SSLにあった脆弱性が改善されており、現在もSSLと呼ばれているのはすでに浸透してしまっているため。TLSと呼ばれることもあるが、SSL/TLSと総称されることが多い

1999年にSSL 3.0の教訓を踏まえたTLS 1.0が誕生し、現在はTLS 1.3が最新となっている

SSL化するには?

SSL証明書をウェブサーバーにインストールする必要があり、証明書にはサーバーにデータを暗号化および復号させる公開鍵と秘密鍵が含まれている

SSL証明書

SSL証明書は認証局で発行する必要があり、ドメインの使用権の確認と運営者が存在しているかなどを審査される

SSL証明書の種類

ドメイン認証 (DV認証) 企業実在認証 (OV認証) EV認証 (拡張検証)
ドメインの使用権のみを確認 ドメインの使用権と運営者の法的実在確認 ドメインの使用権、運営者の法的及び物理的実在確認
簡単に取得でき、個人利用にも適している 一般的な企業や組織に必要な基本的な信頼性を提供 高い信頼性を提供し、フィッシング詐欺対策にも効果的
信頼性は最低限 安全性を示すための最低限のレベル 最高レベルの安全性と信頼性を示す
コストは最も低い 中程度のコスト 高コスト
URLバーに鍵アイコンが表示 URLバーに鍵アイコンが表示 URLバーに鍵アイコンとサイト運営者の名前が緑色で表示

通信の流れ(TLS 1.3)

1. クライアントがサーバにSSL/TLS通信をリクエスト

  • 以下が含まれている
    • クライアントが対応する暗号方式(Cipher Suites)
    • サポートするTLSバージョン
    • クライアントランダム値(ランダムなデータ)

2. サーバがクライアントのリクエストメッセージに応答し、サーバランダム値と選択した暗号方式を返答

  • 以下が含まれている
    • サーバ証明書
      • サーバの証明書を送信し、サーバの公開鍵を提供
    • サーバ鍵交換メッセージ(KeyShare)
      • 暗号化アルゴリズムに必要な公開鍵情報
    • サーバ完成メッセージ(Server Finished)

3. クライアント証明書の検証:

  • サーバから受け取った証明書を検証する
    • クライアントのブラウザにあらかじめインストールされている信頼のある認証局(CA)のルート証明書を使用して、サーバ証明書が本物かどうかを確認

4. 共有鍵(共通鍵)の計算

  • クライアントとサーバが、互いに交換した鍵交換メッセージ(KeyShare)を基に共有鍵を計算する
    • この共有鍵はセッション鍵として通信の暗号化に使われる

5. クライアントFinishedメッセージ:

  • クライアントは、自分のハンドシェイクが完了したことを示すFinishedメッセージをサーバに送信する
    • 計算された共有鍵で暗号化され、ハンドシェイクの一部として送信される

6. 共有鍵による暗号化通信開始:

  • ハンドシェイクが完了すると、クライアントとサーバは共有鍵を使用して通信内容を暗号化する
    • 安全で信頼性の高い通信が確立され、機密情報のやり取りが安全に行われる

図解

クライアント                                  サーバ
    |        -- クライアントHello -->          |
    |        <-- サーバHello + 鍵交換情報 --   |
    |                           <-- サーバ証明書 -- |
    |                           <-- サーバFinished |
    | ------クライアントFinished メッセージ-->  |
    |                                             |
(ハンドシェイク完了、暗号化通信開始)

常時SSL化

以前は暗号化するためにリソースが多く必要だったためログインページや支払いページなど一部のページに限定してSSL化することが多かった。現在は技術が進歩しセキュリティの重要性が向上することにより、常時SSL化が推奨されるようになっている

Discussion