【サイバーセキュリティ】HSTS:中間者攻撃を防ぐ仕組み
こんにちは。情報処理安全確保支援士2023年秋試験の問題から気になるトピックを拾ってご紹介します。
今回は、HSTS(HTTP Strict Transport Security)です。HTTPとか、HTMLとかウェブ関係で似たような用語が多くて紛らわしいですねw。そして、このHSTSもウェブ関係の用語でございます。
あまりみかけないかもしれませんが、サイバー攻撃を防ぐ重要な技術です。ウェブ関連のセキュリティに興味のある方はぜひ続きをお読みください!
暗号化されずに送られるリクエスト
ウェブサイトにアクセスするときに使われるプロトコルとして、HTTPとHTTPSがあります。
HTTPは、暗号化されておらずデータが平文で送られます。他方、HTTPSは、SSL/TLSにより暗号化されます。
もしユーザが「http://」とスキームを入力したり、SSL化が済んでいるサイトなのに、古いブックマークを選択することで「http://」で始まるURLでリクエストしたりすると、ブラウザはHTTPでサーバへ平文でリクエストを送ることになります。
これは、ユーザが送信するデータが盗聴されてしまうリスクがあります。それは困ります。
リダイレクトは危険が伴う
HSTSの仕組みが導入されていなかったらどうなるか先に確認しましょう!
SSL対応済みのサイトは、実は、HSTSを導入していなくても、HTTPへのアクセス要求をHTTPSのページに遷移させる仕組みがあります。
流れは次のとおりです。
ブラウザが「HTTP」リクエスト
サーバが「HTTP」レスポンス
ブラウザが「HTTPS」リクエスト
サーバが「HTTPS」レスポンス
2の過程でサーバが「リダイレクト」を指示しています。
「なんだ、HSTSが無くてもちゃんとHTTPSに切り替わるではないか」と思うかもしれません。が、1と2のデータ送信は、「平文」です。しかも、アクセスするたびに、最初に「平文」でのやり取りが発生します。
ここに、中間者攻撃(Man In The Middle Attack: MITM)されるリスクがあります。
そこで、登場するのがHSTSというプロトコルです。
HTTPSでのアクセスを指示
HSTSが設定されているウェブサーバにHTTPでリクエストが届くと、ウェブサーバは、「次回からHTTPSでアクセスしてね」と通知するのです。もう少し具体的には、HTTPレスポンスのStrict-Transport-Securityヘッダを通じて通知します。
このようにHTTPSでのアクセスをブラウザにお願いすることで、送信データを盗聴する中間者攻撃を防ぐことができます。
すばらしい仕組みです。これで、毎回、1回目のリクエストを平文で送ってはリダイレクトされることがなくなります。
初回のアクセスにリスクが残る?
ただ、HSTSも完全ではありません。上記で「次回からHTTPSでアクセスしてね」とあるように、「初回はHTTPのままでアクセス」となる可能性があります。
となれば、初回は中間者攻撃のリスクがあることになります。初回を含めてHTTPS通信を行わせる手段はないものでしょうか?
実はあります!
ブラウザがアクセスする前にチェック
Googleは、「HSTS Preload」というサービスを提供しています。
サーバ側は、このデータベースに「HSTSを使っています」と事前に登録しておきます。
こうすることで、ブラウザは、ウェブサイトにアクセスする前に「HSTS Preload」を確認して、最初からHTTPS通信を行うことができます。
この機能は、すでにメジャーなブラウザでは対応済みです。きっと皆さんがお使いのブラウザも対応されてるでしょう。
はい、本日はここまで!今回は、中間者攻撃を防ぐHSTSの仕組みをご紹介しました!なんだか地味な機能ですが、常時SSL化が進んだ現在、セキュリティ向上のために大切な機能ですですね。
ではまた!