HTTPS(HTTP over SSL/TLS)の仕組み

しっかりと理解できていないと感じたので、自身の整理のためにHTTPSの仕組みについてまとめました。

概要

  • HTTPSは、暗号化によるセキュリティ強化されたHTTP。
  • ホームページやWebアプリをホストするWebサーバー(以後、Webサーバー)にアクセスする際に、パソコン等の端末上のWebブラウザ(以後、Webブラウザ)とWebサーバー間の通信を暗号化し、第三者による通信内容の盗聴を防ぐ仕組み。
  • 公開鍵暗号方式(目的:共通鍵を安全に送付)と共通鍵暗号方式(目的:通信データの暗号化)を組みあわせて実現する。

HTTPSの仕組み(またはSSL/TSLの仕組みとも言える)

Step 1:WebサーバーからWebブラウザーにサーバー証明書を送付
WebブラウザからWebサーバーへのアクセスを受け、WebサーバーからWebブラウザーにサーバー証明書を送付する。

Step 2:サーバー証明書の信頼性確認
Webブラウザはそのサーバー証明書が信頼できるか確認する。

<証明書の信頼性確認方法>
サーバー証明書は、認証局と呼ばれる機関によりWebサーバー運営組織に発行される。
サーバー証明書には、証明書内データのハッシュ値を発行元認証局秘密鍵で暗号化した「署名」が付加されており、Webサーバーは発行元認証局の公開鍵を用いてその署名を複合し、データのハッシュ値と比較して一致していれば、そのサーバー証明書は確かにその認証局により発行したものであると確認できる。
その認証局がルート認証局でない場合は、ルート認証局にたどり着くまで同様に署名と公開鍵による発行元の検証を行い、サーバー証明書が確かに信頼できる認証局から発行されていることを確認する。

認証局
認証局は、外部機関による厳しい審査を受けたルート認証局を起点としてツリー構造で中間認証局が連なり、信頼のチェーンを構成している。

認証局(CA: Certificate Authorities)の構成
引用:https://hjvqwdq.blogspot.com/2021/03/blog-post_324.html

Webブラウザにはデフォルトで複数のルート認証局の証明書が登録されている。自身でルート認証局や中間認証局の証明書をブラウザーに登録することも可能。

Microsoft Edgeに登録されているルート認証局



Step 3:WebブラウザからWebサーバーに共通暗号鍵を送付
Webブラウザサーバー証明書に添付されているWebサーバー側の公開暗号鍵(以後、Webサーバー公開鍵)を取り出し、Webブラウザ側で生成した共通暗号鍵(以後、Webブラウザ共通鍵)をWebサーバー公開鍵で暗号し、Webサーバーに送付し、WebサーバーはWebサーバー秘密鍵Webブラウザ共通鍵を複合して取り出す。

Step 4:暗号化されたセキュアなHTTP通信を開始
Webブラウザ/Webサーバー間のHTTP通信をWebブラウザ共通鍵により暗号化し、第三者による盗聴を防ぐ。

<ポイント>
共通鍵暗号方式のほうが暗号・複合処理が軽いため、データ通信の暗号には公開鍵暗号方式ではなく共通鍵暗号方式を利用する。共通鍵をそのまま送付すると、共通鍵自体が漏洩するリスクがあるため、公開鍵暗号方式により共通鍵を送付する。

その他

HTTPからHTTPSへの移行トレンド(SSL化トレンド)

5年程前からHTTPからHTTPSへの移行)が進んでおり、例えば2018年にGoogle ChromeWebブラウザ)はHTTPのウェブサイトへのアクセス時に「保護されていません」と警告メッセージを出すようになった。 現在では、多くのウェブサイトがHTTPS対応(SSL化)している。

HTTPSでは悪いサイトを識別できるわけではない

HTTPSは通信の暗号化により盗聴を防いだりや改ざんを検知することができるが、アクセス先のサイトに悪意が無いことを保証することはできない。悪意のあるサイトが認証局からサーバー証明書を入手すればHTTPS対応できるため。 アクセス先が安全であることを確認するには、サーバー証明書の中身を確認し正規のドメインや組織であることを確認する必要がある。

Webブラウザサーバー証明書ドメイン名を確認