HTTPS と SSL/TLSの違い、言えますか?

最近は「https://〜」で始まるサイトが主流ですよね。
「http://〜」から始まるサイトだと、「古いのかな?」「セキュリティ的に危なそう」という印象があります。
一方で、「SSL」や「SSL/TLS」という言葉も、よく耳にします。
IPAの基本情報技術者試験や情報セキュリティマネジメント試験でも、よく出題されます。
似ているけど何か違うらしい。そして何度ググっても覚えられない。
そんなもやもやを解消すべく、今回は四コマ漫画でこの2つの違いをイメージ解説していきます。
「ハリーポッターのタイトルなら全部言えるのに、ITの仕組みは何度聞いても頭に入らないんだよなぁ」という方は、ぜひお読みください。
HTTPS(HTTP over TLS)とは
HTTPSを例えるなら、「秘密を守る宅配サービス」です。

HTTPSを説明する前に、まずはSが付かない「HTTP」について簡単におさらいしましょう。
HTTPは、Webサイトにアクセスする際に、ブラウザとサーバー間のデータの受け渡しをするためのルールです。「ちゃんとダンボールにいれようね」「宅配便でケーキは運べないよ」みたいなやつです。
以前は「http://〜」から始まるサイトが主流でした。
しかし、HTTPだと悪意のある第三者が中身を盗み見ようとした場合、簡単に盗み見ることができる状態でした。これは、宅配便のダンボール箱の中身が開いているようなものでした。
そこで、HTTPSの登場です。
HTTPの通信経路を「SSL/TLS」で保護する形で設計されています。
例えるなら、宅配便のダンボールをしっかり閉じて、暗号文にした上で配送するようなものです。
HTTPにSがくっついて、セキュリティがあがった!
というイメージをすると、覚えやすくなります。
SSL/TLSとは
SSL/TLSを例えるなら「宅配サービスの秘密を守る仕組み」のようなものです。

HTTPを補完する形で、SSL/TLSの技術が使われます。
以下は、SSL/TLSで通信を行う際のプロセスを、簡素化して説明します。
(TLS1.3をベースにしています)
- ブラウザ:サーバーに接続要求(リクエスト)を送る。合わせて自分の公開鍵情報、共通鍵生成用の乱数などを送る
- サーバー:応答し、サーバー証明書や共通鍵生成用の乱数、サーバーの公開鍵情報などを送る
- 双方:乱数をもとに「共通鍵」を作成する
- サーバー:「暗号化済み」と送信する
- クライアント:「暗号化済み」と送信する
- 共通鍵を使って暗号化通信を始める
普通にサイトにアクセスしていましたが、なんだか色々やってくれているんですね。
「SSL/TLS」と表現されることが多いですが、現在使われているの「TLS1.2」や「TLS1.3」です。
以前は「SSL」が使われていましたが、脆弱性が発見されたので現在は非推奨になっています。TLSはSSLを元に作られた、後続の仕組みです。
ただ「SSL」の名称が有名になりすぎたので、今でも「SSL/TLS」と表現されることがあるようです。
共通鍵って何だっけ?と思った方は、以下の記事も参考にしてください。
証明書って何だっけ?と思った方は、以下の記事も参考にしてください。
ここまで見てきましたが、「HTTP over TLS」のことを「HTTPS」と呼んだり、「SSL/TLS」と表現するのに、現在ではTLSしか使われていなかったりと、色々とややこしいですね・・・
まとめ
名称 | 例えると | 特徴 |
---|---|---|
HTTPS | 秘密を守る宅配サービス | ・HTTP+TLSのこと ・HTTPに暗号化通信の要素が加わった |
SSL/TLS | 宅配サービスの秘密を守る仕組み | ・ブラウザとサーバー間の暗号化通信を行う ・身元確認や共通の鍵を生成してから暗号化通信を行う ・今はTLS1.2やTLS1.3が主流で、SSLは使われていない |
もっと詳しく知りたい場合は、他の記事や書籍も参考にしてください。