SSL/TLSとは
SSL/TLSとは、ホームページを格納しているサーバーとブラウザ間の通信を暗号化するための仕組み、プロトコルのことです。
TLSはSSLで重大な脆弱性が見つかり、バージョンアップされた結果、登場したSSLの次世代規格です。
現在使われているのは、ほとんどTLSのようですが、「SSL」や「SSL/TLS」という表現がされることが多いようです。
以降、本記事では「SSL」で統一しています。
SSLで何ができるのか
SSLにより通信が暗号化されることで、悪意ある第三者からのデータの「なりすまし」「改ざん」「盗聴」を防ぐことができます。
次から、この3つのできることの仕組みをざっくり説明してみたいと思います。
「なりすまし」を防ぐ仕組み
-
クライアントからサーバーに対して、SSL接続のリクエストを送信します
-
サーバーは認証局に発行してもらったサーバー証明書と公開鍵※をクライアントに送信します
-
クライアントは送られてきた認証局の公開鍵を使用して、サーバー証明書を検証します
ここでなりすましに気づくことができます
※ サーバー証明書と公開鍵を分けて記載していますが、実際はサーバー証明書の中に公開鍵が埋め込まれています、上の図で言うと免許証の女の子の写真が公開鍵になる感じです。
「改ざん」を防ぐ仕組み
-
クライアントは送信データ(HTTPメッセージ)とMAC値(送信データとMAC鍵 [※1] を混ぜてハッシュ化した値)をサーバーに送信
- この時これら2つのデータは共通鍵で暗号化されています。
- また、この共通鍵はサーバーから送られてきた公開鍵を用いて暗号化した上で、クライアントに送信されています。
-
サーバーは受信した送信データとサーバーのMAC鍵を使用して、MAC値を計算します
-
クライアントから送られてきたMAC値とサーバーで計算したMAC値を比較する
ここで、MAC値が異なるのであれば改ざんに気づくことができます
※1 共通鍵を元に生成されたMAC値を生成及び検証するために使用される秘密の共有鍵
盗聴を防ぐ仕組み
上記のように盗聴を防ぐことができます。
「改ざんを防ぐ仕組み」のところで、HTTPメッセージとMAC値を共通鍵で暗号化しているところがありますが、その部分をより抽象化したのが上記の図となります。
まとめ
ざっくりまとめてみましたが、ざっくりでも理解できていない部分が多く見つかりました。
また、より細かい仕組みについても以降まとめていきたいと思います。
本記事の内容に誤りがある場合はご指摘いただけると大変助かります。
参考文献