この記事の要点
• HTTPSはHTTPにSSL/TLS暗号化を追加し、盗聴・改ざんを防ぐプロトコル
• 公開鍵暗号と共通鍵暗号を組み合わせたハイブリッド方式で効率的な暗号化を実現
• 証明書による認証で通信相手の身元を保証する
HTTPSとは
HTTPS(HyperText Transfer Protocol Secure)は、HTTPにSSL/TLS暗号化を追加したプロトコルです。ウェブブラウザとサーバー間の通信を暗号化し、第三者による盗聴や改ざんを防ぎます。
ポイント: HTTPSのURLは「https://」で始まり、ブラウザのアドレスバーに鍵アイコンが表示されます。
SSL/TLS暗号化の仕組み
HTTPSでは、SSL(Secure Sockets Layer)またはその後継であるTLS(Transport Layer Security)を使用して通信を暗号化します。
1. TCPハンドシェイク
まず、通常のTCP接続が確立されます。これは3ウェイハンドシェイク(SYN → SYN-ACK → ACK)で行われます。
2. TLSハンドシェイク
TCP接続確立後、TLSハンドシェイクが開始されます:
- Client Hello: クライアントがサポートする暗号スイートとTLSバージョンを送信
- Server Hello: サーバーが使用する暗号スイートを選択し、証明書を送信
- 鍵交換: 公開鍵暗号を使って共通鍵(セッション鍵)を安全に交換
- 暗号化通信開始: 以降の通信は共通鍵で暗号化
公開鍵暗号と共通鍵暗号
HTTPSでは2種類の暗号方式を組み合わせて使用します:
公開鍵暗号(非対称暗号)
- 公開鍵と秘密鍵のペアを使用
- 公開鍵で暗号化したデータは、対応する秘密鍵でのみ復号可能
- 鍵の交換に使用(計算コストが高いため、大量データには不向き)
共通鍵暗号(対称暗号)
- 同じ鍵で暗号化・復号を行う
- 高速で大量データの暗号化に適している
- 実際のデータ通信に使用
ポイント: 公開鍵暗号で安全に「共通鍵」を交換し、その後は高速な共通鍵暗号で通信する。これがハイブリッド暗号方式です。両方の長所を組み合わせることで、安全性と速度を両立しています。
証明書の役割
SSL/TLS証明書は、サーバーの身元を証明するデジタル証明書です:
- 認証: 通信相手が本物のサーバーであることを確認
- 公開鍵の配布: サーバーの公開鍵を安全に配布
- 信頼の連鎖: 認証局(CA)によって署名され、信頼性を担保
実践メモ: Let's Encryptを利用すれば、無料でSSL/TLS証明書を取得できます。自動更新の設定も簡単です。
まとめ
HTTPSは、公開鍵暗号と共通鍵暗号を組み合わせたハイブリッド方式で、安全かつ効率的な暗号化通信を実現しています。証明書による認証と合わせて、インターネット上での安全な通信を支えています。
注意: SSL 3.0やTLS 1.0/1.1には既知の脆弱性があります。現在はTLS 1.2以上、推奨はTLS 1.3を使用してください。
参考リソース
- RFC 8446 - The Transport Layer Security (TLS) Protocol Version 1.3
- RFC 2818 - HTTP Over TLS
- MDN - An overview of HTTPS
- Mozilla SSL Configuration Generator
- Let’s Encrypt - How It Works