HTTPSは何故安全なのか

HTTPS が安全な理由とは?

HTTPS は公開鍵暗号方式を応用している通信だから安全なのだ、という表面的な知識ならあります。公開鍵暗号方式ではデータ送信者とデータ受信者がいるとして、受信者が復元用の秘密鍵と暗号用の公開鍵を作成する。受信者は公開鍵を送信者に配り、送信者はそれでデータを暗号化して受信者に送信する。受信者は秘密鍵で復元する。

通信のやり取りを傍受されたとしても、傍受者は秘密鍵を持っていなければデータを復元することが出来ません。そしてやり取りの中で秘密鍵が漏洩する事は理論上ないので、公開鍵暗号方式は安全だと言われています。これを利用して公開鍵暗号方式で共通鍵を受け渡し、共通鍵で暗号化したデータをやり取りしているのがHTTPSという程度の理解ならあります。

しかし実際にはそもそも通信相手のSVが本物かどうかなどの細かい問題が存在するので、今回はその辺りをまとめたいと思います。

一連の流れ

  1. クライアントがサイトにSSL通信要求をする。この際クライアントは暗号化仕様(暗号方式、鍵長、圧縮方式)を伝える。するとSVが仕様に合わせて応答してくれる。
  2. SVは自分の身分を証明するSV証明書をクライアントに送信する。
    クライアントはこれを、あらかじめ登録している信頼できる認証局(Let’s Encryptやオレオレ)の証明書を使って署名検証する。
    またクライアントはSV証明書を参照しSVの公開鍵を取得する。
  3. ルート証明書まで辿り署名検証が完了すると、クライアントはSVの公開鍵で乱数データを暗号化しSVに送信する。
    SVはこれを秘密鍵で復号しそれを元に共通鍵を作成する。
    クライアントでも暗号化する前の乱数データを元に同じ共通鍵を作成する。以降はこの共通鍵を利用して通信する。
  4. SV証明書は信頼のある認証局に発行してもらう。SV証明書には、組織名・発行した認証局名・SVの公開鍵・証明書の有効期間が明記されている。そして認証局による署名が付いている。
    この署名とはSV証明書のハッシュ値を認証局の秘密鍵で暗号化したもの。クライアントはSV証明書を受け取ると、登録されている認証局証明書(ルート証明書)で署名を復号し、その値とSV証明書のハッシュ値が一致すれば、SV証明書が改竄されたものでないことが分かる。

ここまで読むと分かると思いますが、ルート証明書の存在は極めて重要です。Let’s Encryptや有償な認証局を利用するにしても、オレオレ認証局を実装するにしてもHTTPS通信を行う上では不可欠なものです。

終わりに

HTTPS通信は安全と言いつつも、公開鍵暗号方式でさえ数日かければスーパーコンピュータじゃなくても復号出来てしまうそうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA