HTTPSについて(SSL/TLS通信について)
HTTPSの通信についてなんとなくで覚えていましたが他の人に説明しないといけなくなったため、自分なりにまとめてみました。
そもそもHTTP (HyperText Transfer Protocol)とは
HTTPはサーバーとブラウザ間でデータを通信するための通信プロトコルです。
クライアント側からリクエストと呼ばれるデータを送り、サーバーはそれに対してレスポンスを返答します。しかしこの通信プロトコルは平文(暗号化されていないテキスト)で送受信が行われるために第三者によって、データの盗聴や改ざんの危険性があります。
HTTPS (HyperText Transfer Protocol Secure)
HTTPSは通信自体はHTTPで通信を行っていますが、SSL/TLSプロトコルを利用して通信の暗号化を行っています。
SSL/TLSの役割
SSL/TLSプロトコルは大きく分けて3つの役割をもちます
通信相手のなりすまし防止
SSL証明書というデジタル証明を生成することで通信を行っているサーバーがなりすましかどうか確認することができます。
例:フィッシングサイトによる詐欺の防止
データ盗聴の防止
データを暗号化して通信を行うため、途中で第三者に盗み見られても解読できないような仕組みになっています。
例:個人情報の保護
改ざんの検出
データの暗号化を行う際にハッシュ値と呼ばれるデータを追加することで、途中で第三者にデータを改ざんされてもサーバー側で検知することができます。
例:購入商品の数量や届け先などの変更防止
SSL/TLS通信手順
簡潔に説明すると公開鍵暗号方式で共通鍵を作成し、データの送受信は共通鍵暗号方式を利用します。
事前準備
- 送信者(ブラウザ)から受信者(サーバー)に対してSSL通信のリクエストを送信
- 受信者(サーバー)は送信者(ブラウザ)に「公開鍵」と「SSLサーバー証明書」を送付
- 送信者(ブラウザ)は「公開鍵」を使って「共通鍵」を作成。またこの時に証明書が正しいかどうかの検証を行います
- 送信者(ブラウザ)は受信者(サーバー)に暗号化された「共通鍵」を送付
- 受信者(サーバー)は「共通鍵」を「秘密鍵」で復号
通信
事前準備した共通鍵を用いてデータの暗号化および復号化を行います
参考サイト
HTTPとは?HTTPSとの違いをサイト移行で実施するリダイレクト設定などをもとに解説
【図解】SSLとは?SSL/TLSの仕組みについてわかりやすく解説します
【図解】https(SSL/TLS)の仕組みとシーケンス,パケット構造 〜暗号化の範囲, Encrypted Alert, ヘッダやレイヤについて~
SSLって何?意味や仕組みをわかりやすく解説!
Discussion