HTTPとHTTPSは、WebブラウザとWebサーバーがデータをやり取りするための通信の取り決めです。URLが「http://〜」か「https://〜」かの違いは、通信が暗号化されているかどうかを示しています。この記事では、HTTPが何をするのか・HTTPSがどのようにセキュリティを実現しているのかをわかりやすく解説します。
はじめに
ポート番号の記事で、HTTP(80番)とHTTPS(443番)という言葉が登場しました。また TCPとUDPの記事では、Webの閲覧にはデータが確実に届くTCPが使われることを学びました。
今回は、そのTCPの上で動くWeb通信のプロトコル「HTTP」と、それに暗号化を加えた「HTTPS」について解説します。
HTTPとは何か
HTTP(HyperText Transfer Protocol) は、WebブラウザとWebサーバーがデータをやり取りするための通信の取り決めです。わたしたちがWebサイトを閲覧できるのは、この仕組みがあるからです。
| 用語/英単語 | 意味 | イメージ・補足 |
|---|---|---|
| HTTP / HyperText Transfer Protocol | Webページのデータを送受信するための通信の取り決め | hypertext=クリックで別のページへ移動できるリンクを持つ文書(Webページ同士がリンクでつながっているイメージ)/ transfer=転送 / protocol=取り決め |
リクエストとレスポンス
HTTPの通信は、 リクエスト(要求) と レスポンス(応答) の2ステップで成り立ちます。
図:HTTPのリクエストとレスポンスの流れ
- リクエスト :ブラウザが「このページのデータをください」とサーバーへ要求を送る
- レスポンス :サーバーが「はいどうぞ」とHTMLなどのデータを返す
ブラウザはこの2ステップでHTMLデータを受け取り、画面にページを表示します。レストランで「〇〇をください」と注文し(リクエスト)、店員が料理を持ってくる(レスポンス)のと同じ構造です。
| 用語/英単語 | 意味 | イメージ・補足 |
|---|---|---|
| リクエスト / Request | ブラウザがサーバーへ送る「データをください」という要求 | レストランでの注文 |
| レスポンス / Response | サーバーがブラウザへ返す応答とデータ | 注文した料理が届くこと |
HTTPだけでは何が問題なのか
HTTPには大きな弱点があります。データが 平文(暗号化されていない状態) で送受信されることです。
たとえば、オンラインショッピングでクレジットカード番号を入力したとします。HTTPの場合、その番号はそのままの状態でネットワーク上を流れます。TCPとUDPの記事で学んだように、データはパケットに分割されて複数のルーターを経由して届きます。その経路上で盗聴ツールを使えば、パケットの内容をそのまま読み取ることができてしまいます。
図:HTTPとHTTPSの通信における盗聴リスクの違い
パスワードや個人情報など秘密にすべきデータを扱うためには、通信を暗号化する仕組みが必要です。
| 用語/英単語 | 意味 | イメージ・補足 |
|---|---|---|
| 平文 / Plaintext | 暗号化されていない、そのままの状態のデータ | 封筒に入れず、誰でも読めるはがきで手紙を送るようなもの |
HTTPSとは何か
HTTPS(HyperText Transfer Protocol Secure) は、HTTPに暗号化の仕組みを加えたプロトコルです。送受信するデータをすべて暗号化するため、途中で盗聴されても内容を読み取ることができません。
| 用語/英単語 | 意味 | イメージ・補足 |
|---|---|---|
| HTTPS / HyperText Transfer Protocol Secure | HTTPにデータの暗号化を加えた通信の取り決め | secure=安全な。はがきを封筒に入れ、さらに南京錠をかけて送るようなもの |
暗号化を担っているのは TLS(Transport Layer Security) という技術です。以前は SSL(Secure Sockets Layer) と呼ばれていましたが、現在はより安全なTLSが使われています。「SSL」という呼び名が今も広く残っているため、「SSL/TLS」と併記されることもあります。
| 用語/英単語 | 意味 | イメージ・補足 |
|---|---|---|
| TLS / Transport Layer Security | HTTPSで使われる暗号化技術 | transport=伝送 / layer=層 / security=安全性。通信内容を暗号化して盗聴や改ざんを防ぐ |
| SSL / Secure Sockets Layer | TLSの前身となった暗号化技術。現在はTLSに置き換えられているが、慣習的に「SSL」と呼ばれることも多い | secure=安全な / socket=接続口 |
HTTPSが防ぐ3つのリスク
HTTPSは、通信における主要な3つのリスクを防ぎます。それぞれどのようなリスクで、HTTPSがどう対処するのかを見ていきましょう。
① 盗聴(データの読み取り)
暗号化されていないHTTPでは、通信経路上の第三者がパケットを傍受して内容を読み取れます。HTTPSは通信をTLSで暗号化するため、パケットを傍受されても内容を解読できません。
② 改ざん(データの書き換え)
HTTPでは、通信経路の途中でデータの内容を書き換えられてしまう可能性があります。Webページの内容が悪意のある第三者に差し替えられても、受け取った側は気づけません。HTTPSはデータの改ざんを検知する仕組みを持っているため、書き換えが行われた場合に検出できます。
③ なりすまし(偽サーバーへの誘導)
「本物のWebサイトのふりをした偽サイト」へ誘導される可能性があります。これは一般的に フィッシング詐欺 と呼ばれる手口です。
たとえば、「あなたのアカウントに不審なアクセスがありました」というメールが届き、記載されたリンクをタップしたとします。表示されたページは本物の銀行サイトとそっくりですが、実は第三者が作った偽サイトです。ここでIDやパスワードを入力してしまうと、情報が盗まれてしまいます。
HTTPSでは デジタル証明書 という仕組みで、接続先のサーバーが本物であることを確認できます。偽サイトは正規の証明書を取得できないため、ブラウザが「このサイトは信頼できません」と警告を表示します。
| 用語/英単語 | 意味 | イメージ・補足 |
|---|---|---|
| デジタル証明書 / Digital Certificate | Webサーバーの身元を証明する電子的な証明書 | パスポートのようなもの。信頼できる機関が発行し、接続先が本物であることを保証する |
デジタル証明書は 認証局(CA:Certificate Authority) と呼ばれる第三者機関が発行します。ブラウザはこの証明書を確認することで、「本物のサーバーに接続している」と判断します。
ブラウザで確認できるHTTPSのサイン
HTTPSで通信しているかどうかは、ブラウザのアドレスバーで確認できます。
図:ブラウザのアドレスバーにおけるHTTPSとHTTPの表示の違い
- URLが https:// から始まっている
- アドレスバーに 🔒 の鍵アイコンが表示されている
逆にURLが「http://〜」のサイトでは、通信が暗号化されていません。パスワードや個人情報を入力する場面では、必ずHTTPSになっているかを確認する習慣をつけましょう。
現在では、ほとんどのWebサイトがHTTPSに対応しています。ブラウザによっては、HTTPのサイトへアクセスした際に「保護されていない通信」と警告を表示するものもあります。
まとめ
- HTTP は、ブラウザとWebサーバーがデータをやり取りするための通信の取り決め
- HTTPは リクエスト(要求) と レスポンス(応答) の2ステップで成り立つ
- HTTPはデータを 平文 で送るため、盗聴・改ざん・なりすましのリスクがある
- HTTPS はHTTPに TLS による暗号化を加えたもので、これらの3つのリスクを防ぐ
- デジタル証明書 によって接続先のサーバーが本物であることを確認できる
- ブラウザのアドレスバーで https:// と 🔒 アイコンが表示されていればHTTPS通信
用語表
| 用語 | 意味 |
|---|---|
| HTTP(HyperText Transfer Protocol) | WebブラウザとWebサーバーがデータをやり取りするための通信の取り決め |
| HTTPS(HyperText Transfer Protocol Secure) | HTTPにTLSによる暗号化を加えたプロトコル。盗聴・改ざん・なりすましを防ぐ |
| TLS(Transport Layer Security) | HTTPSで使われる暗号化技術。以前はSSLと呼ばれていた |
| SSL(Secure Sockets Layer) | TLSの前身となった暗号化技術。現在はTLSに置き換えられているが慣習的に使われることも多い |
| デジタル証明書 | Webサーバーの身元を証明する電子的な証明書。認証局が発行する |
| 認証局(CA) | デジタル証明書を発行する第三者機関。ブラウザはここが発行した証明書を信頼する |