Learn

ネットワーク

HTTPとHTTPSの違い

HTTPとHTTPSの違い、HTTPSで守られる範囲、通信先やアクセスログが消えるわけではない点を整理します。

Webサイトを開くとき、ブラウザとサーバーはデータをやり取りしています。

このWebのやり取りに使われる基本的な仕組みがHTTPです。 そして、HTTPの通信を安全に行うための仕組みがHTTPSです。

HTTPSは、単に「通信内容を暗号化する仕組み」ではありません。 重要なのは、通信の途中にいる第三者による盗み見、改ざん、なりすましを防ぎやすくすることです。

そのためHTTPSでは、主に次の3つが重要になります。

  • 通信内容を途中で読まれにくくする
  • 通信内容を途中で改ざんされにくくする
  • 通信している相手が意図した相手であるかを確認しやすくする

つまりHTTPSは、中間者攻撃への対策として非常に重要な仕組みです。

ただし、HTTPSは匿名化技術ではありません。 HTTPSを使っていても、接続先のWebサイトにはアクセスが届きます。 また、アクセス元、ログイン状態、アクセスログなどは別の問題として残ります。

この記事では、HTTPとHTTPSの違い、HTTPSで守られるもの、HTTPSでも見える可能性があるものを整理して説明します。

HTTPとは何か

HTTPは、Webでデータをやり取りするための通信ルールです。

ブラウザでWebサイトを開くと、ブラウザはサーバーに対してリクエストを送ります。 たとえば、「このページのHTMLを送ってください」「この画像を取得したいです」といった要求です。

サーバーはそのリクエストに対して、HTML、画像、CSS、JavaScriptなどのデータを返します。

このような、ブラウザとサーバーのリクエスト・レスポンスのやり取りに使われる仕組みがHTTPです。

HTTPそのものは、Web通信の基本です。 しかし、HTTPだけでは通信内容を守る仕組みがありません。

HTTPでは、通信内容が暗号化されません。 そのため、通信経路上にいる第三者が、内容を読んだり、書き換えたり、偽の相手として振る舞ったりできる危険があります。

HTTPの弱点説明
盗み見に弱い通信内容が暗号化されないため、途中で読まれる危険がある
改ざんに弱い通信途中でページ内容や送信内容を書き換えられる危険がある
なりすましに弱い通信相手が本当に意図したサーバーか確認しにくい

たとえば、HTTPのログインフォームでパスワードを送信すると、そのパスワードが通信途中で見られる可能性があります。 また、HTTPで読み込んだページの内容が途中で書き換えられ、偽の入力フォームや不正なスクリプトを差し込まれる危険もあります。

HTTPはWeb通信の基礎ですが、そのままでは安全性に大きな問題があります。

HTTPSとは何か

HTTPSは、HTTPの通信を安全な通信路の中で行う仕組みです。

より正確に言えば、HTTPSはHTTPをTLSという安全な通信層の上で使います。 細かいTLSの仕組みまではここでは扱いませんが、HTTPSを理解するうえでは「HTTPの通信内容をTLSで保護している」と考えると分かりやすいです。

HTTPSで重要なのは、次の3つです。

要素役割説明
暗号化通信内容を読まれにくくする通信途中の第三者が、パスワードやフォーム内容をそのまま読めないようにする
改ざん検知通信内容の書き換えに気づけるようにする途中でデータが変更された場合、正しい通信として受け入れにくくする
通信相手の確認意図した相手と通信しているか確認する証明書などを使い、接続先サーバーが正当な相手か確認する

HTTPSの強さは、この3つが組み合わさっている点にあります。

暗号化だけでは不十分です。 たとえば、通信内容が暗号化されていても、攻撃者が偽のサーバーとして振る舞い、利用者をその偽サーバーに接続させられるなら、安全とは言えません。

そのためHTTPSでは、通信内容を守るだけでなく、通信している相手が意図したWebサイトであるかを確認する仕組みも使われます。

HTTPとHTTPSの違い

HTTPとHTTPSの違いは、URLが http[:]//https[:]// かという見た目だけではありません。

HTTPでは、ブラウザとサーバーの通信が保護されません。 HTTPSでは、ブラウザとサーバーの間に安全な通信路を作り、その中でHTTPのやり取りを行います。

項目HTTPHTTPS
URLの始まりhttp[:]//https[:]//
通信内容の暗号化されないされる
通信内容の盗み見対策弱い強い
通信内容の改ざん対策弱い改ざんを検知しやすい
通信相手の確認基本的に弱い証明書などを使って確認する
中間者攻撃への耐性低い高い
匿名化されないされない

HTTPSは、「HTTPに暗号化を足しただけ」と理解すると少し不十分です。 より正確には、HTTPの通信を安全な通信路で包み、盗み見、改ざん、なりすましを防ぎやすくする仕組みです。

中間者攻撃とは何か

中間者攻撃とは、ブラウザとサーバーの間に第三者が入り込み、通信を盗み見たり、書き換えたり、偽の相手として振る舞ったりする攻撃です。

利用者は本物のWebサイトにアクセスしているつもりでも、通信の途中にいる攻撃者が内容を見ているかもしれません。 また、攻撃者が通信内容を書き換え、偽のログインフォームや不正なコードを差し込む可能性もあります。

HTTPでは、このような攻撃に弱くなります。

HTTPSでは、通信内容が暗号化され、改ざんも検知され、通信相手の確認も行われます。 そのため、中間者攻撃を成立させることが難しくなります。

攻撃者がやりたいことHTTPの場合HTTPSの場合
通信内容を読む読まれる危険がある平文として読むことは難しい
パスワードを盗み見る危険が高い通信途中では盗み見しにくい
ページ内容を書き換える書き換えられる危険がある改ざんが検知されやすい
偽のサーバーに接続させる利用者が気づきにくい証明書の検証により防ぎやすい
通信相手になりすます比較的しやすい正当な証明書がないと難しい

HTTPSの本質はここにあります。

「通信内容が暗号化される」だけでなく、 「途中で内容が書き換えられていないか」 「通信している相手が意図した相手であるか」 を確認できることが重要です。

HTTPSで守られるもの

HTTPSで守られる主なものは、ブラウザとサーバーの間を流れるHTTPの通信内容です。

たとえば、次のような情報はHTTPSによって通信途中で読まれにくくなります。

守られるもの説明
パスワードログインフォームに入力したパスワードが、通信途中で読まれにくくなる
フォーム入力内容名前、メールアドレス、問い合わせ内容などが、通信途中で読まれにくくなる
ページ内容表示されるページの内容が、通信途中で読まれたり改ざんされたりしにくくなる
リクエスト内容ブラウザからサーバーへ送る内容が保護されやすくなる
レスポンス内容サーバーからブラウザへ返される内容が保護されやすくなる
Cookie通信中に送受信されるCookieが、途中で盗み見されにくくなる

特に重要なのは、パスワードやCookieです。

Cookieは、ログイン状態の維持や利用者の識別に使われることがあります。 もしCookieが通信途中で盗まれると、場合によっては本人になりすましてアクセスされる危険があります。

HTTPSでは、Cookieも暗号化された通信路の中で送られるため、通信途中で盗み見されにくくなります。

ただし、HTTPSを使っていればCookieに関する問題がすべて解決するわけではありません。 Cookieの保存方法、サイト側の設定、ブラウザ環境、端末の安全性などは別の問題として残ります。

HTTPSでも接続先サーバーには内容が届く

HTTPSは、通信途中の第三者から内容を守る仕組みです。 接続先のWebサイトに対して内容を隠す仕組みではありません。

たとえば、HTTPSのログインフォームにパスワードを入力した場合、通信途中ではパスワードが読まれにくくなります。 しかし、ログイン処理を行うWebサイトのサーバーには、その情報が届きます。

これは当然です。 サーバーがログイン処理をするには、送られてきた情報を受け取る必要があるからです。

HTTPSで守られる範囲は、主に通信経路上です。

対象HTTPSの役割説明
通信途中の第三者強く防ぐ対象盗み見、改ざん、なりすましを防ぎやすくする
接続先サーバー通信の相手リクエスト内容はサーバーに届く
利用者のIPアドレス直接は隠さないHTTPSだけではアクセス元IPアドレスは隠れない
ログイン中のアカウント直接は隠さないログイン中の行動はアカウントと結びつく

つまりHTTPSは、「途中の盗み見や改ざんを防ぐための仕組み」です。 「接続先に対して自分の情報を隠す仕組み」ではありません。

HTTPSでも見える可能性があるもの

HTTPSを使っていても、すべての情報が隠れるわけではありません。

通信内容は保護されます。 しかし、アクセス元に関する情報、接続先に関する情報、Webサイト側が受け取る情報は別の問題です。

情報見える可能性がある相手説明
アクセス元IPアドレス接続先サーバーなどWebサイト側は、どのIPアドレスからアクセスされたかを把握できる
アクセス時刻接続先サーバーなどいつアクセスしたかはログとして記録される可能性がある
リクエスト内容接続先サーバーHTTPSでも、送信先のサーバーには内容が届く
Cookie接続先Webサイト同じ利用者やブラウザを識別するために使われる場合がある
ログイン状態接続先Webサイトログイン中であれば、行動はアカウントと結びつく
アクセスログ接続先Webサイトどのページを見たか、どの操作をしたかが記録される可能性がある
ブラウザ情報接続先WebサイトUser-Agentなどの情報が送られる場合がある
接続先に関する情報通信環境によって異なる通信内容は暗号化されても、どのサイトへ接続しているかが推測される場合がある

ここで重要なのは、「通信内容」と「通信の事実」を分けることです。

HTTPSは通信内容を守ります。 しかし、どのIPアドレスからアクセスが来たか、いつアクセスしたか、どのアカウントでログインしているか、といった情報までは自動的に隠しません。

また、HTTPSではURL全体が常に第三者から丸見えになるわけではありません。 ページのパスやフォーム内容などは通信内容として保護されます。 一方で、接続先のドメイン名に関係する情報は、通信環境によって見える場合があります。

このため、HTTPSを使っているからといって、アクセスの痕跡や識別情報まで消えるわけではありません。

HTTPSは匿名化技術ではない

HTTPSは、匿名化技術ではありません。

HTTPSの目的は、主に次の3つです。

  • 通信内容を途中で読まれにくくする
  • 通信内容を途中で改ざんされにくくする
  • 通信相手が意図した相手であるかを確認しやすくする

これは匿名化とは別の話です。

匿名性を考えるときは、「通信内容が守られているか」と「誰がアクセスしたかが隠れているか」を分ける必要があります。

HTTPSは前者に強く関係します。 しかし、後者を直接解決するものではありません。

観点HTTPSで解決できるか説明
通信内容の盗み見対策できる通信途中で内容を読まれにくくする
通信内容の改ざん対策できる途中で内容を書き換えられにくくする
通信相手の確認できる証明書などを使って接続先を確認する
IPアドレスの秘匿できないHTTPSだけではアクセス元IPアドレスは隠れない
Cookieによる識別できないWebサイト側の識別は別の問題として残る
ログイン状態の秘匿できないログイン中の行動はアカウントと結びつく
アクセスログの削除できないWebサイト側のログ保存はHTTPSとは別の問題

「HTTPSなら匿名」という理解は誤りです。

HTTPSは、通信を安全にするための技術です。 匿名性を作るための技術ではありません。

HTTPSを正しく理解するための視点

HTTPSを正しく理解するには、「誰から何を守るのか」を分けて考える必要があります。

HTTPSが主に守る対象は、通信経路上の第三者です。

たとえば、同じWi-Fiにいる第三者、通信経路上の機器、悪意ある中継者などが、通信内容を盗み見たり、改ざんしたり、偽の相手として振る舞ったりすることを防ぎやすくします。

一方で、接続先のWebサイトは通信の最終的な相手です。 そのため、送信した内容はWebサイト側に届きます。

相手HTTPSで防ぎやすいことHTTPSで防げないこと
通信途中の第三者盗み見、改ざん、なりすまし端末そのものの侵害
接続先Webサイト通信途中での漏えいサイト側によるログ記録やアカウント識別
同じWi-Fiの利用者通信内容の盗み見アクセス先の推測が完全に消えるわけではない
偽サーバー正当な証明書がなければ検出されやすい利用者が警告を無視した場合の危険

HTTPSは非常に強力な仕組みですが、万能ではありません。

たとえば、ブラウザが証明書に関する警告を表示しているのに、それを無視して進んだ場合、HTTPSによる安全性は大きく下がります。 また、端末自体がマルウェアに感染している場合、HTTPSで通信していても、入力内容を端末側で盗まれる可能性があります。

HTTPSは、ネットワーク上の盗み見、改ざん、なりすましに対して強い防御になります。 しかし、端末の安全性、Webサイト側の管理、アカウントの扱い、Cookie、ログなどは別に考える必要があります。

まとめ

HTTPは、Webでデータをやり取りするための基本的な仕組みです。 しかし、HTTPだけでは通信内容が暗号化されず、通信途中で盗み見や改ざんを受ける危険があります。

HTTPSは、HTTPの通信を安全な通信路の中で行う仕組みです。

HTTPSの重要な役割は、次の3つです。

  • 通信内容を途中で読まれにくくする
  • 通信内容を途中で改ざんされにくくする
  • 通信している相手が意図した相手であるかを確認しやすくする

このためHTTPSは、中間者攻撃への対策として非常に重要です。

ただし、HTTPSは匿名化技術ではありません。 HTTPSを使っていても、接続先のWebサイトにはリクエストが届きます。 また、アクセス元IPアドレス、Cookie、ログイン状態、アクセスログなどは別の問題として残ります。

HTTPSは、通信を安全にするための技術です。 特に、通信経路上の盗み見、改ざん、なりすましを防ぐために重要です。

しかし、誰がアクセスしたかを隠す技術ではありません。

匿名性を考える場合は、HTTPSで守られる範囲と、HTTPSでは守れない範囲を分けて考える必要があります。 HTTPSは重要な前提ですが、HTTPSだけで匿名性が成立するわけではありません。

関連記事