ベストプラクティス 01-08-2018

主要なブラウザにおけるHTTPSでのみ利用できる機能

Vincent Lynch

あまり知られていないかもしれませんが、ある種のブラウザの機能は、HTTPS を必要とします。ユーザーの位置情報の取得、マイクへのアクセス、デバイスへローカルにデータを保存するなどの機能は、すべてウェブサイトがHTTPSに対応している必要があります。

HTTPS に対応することで、ユーザーの体験やウェブサイトの評価が向上することはよく知られていますが、最新の機能を備えたウェブサイトを開発できることは、それ以上に説得力のある理由となるでしょう。

2018年現在、HTTP/2 や Brotli 圧縮(いずれもウェブ技術における画期的な改善)など、少なくとも 1 つの主要ブラウザで HTTPS を必要とする 10 の機能があり、将来的には既存の 3 つの機能を HTTPS に制限する予定です。

今回は、HTTPSでのみ利用できる機能の背景を簡単に説明した後、安全な接続を必要とする現在および将来の機能の一覧を紹介します。

「Secure Contexts(安全な状態)」の重要性

2014年、Googleは、特定の機能をHTTPSに制限することを提案しました。彼らは、ウェブカメラのサポートやローカルデータの保存といったブラウザの機能を使ったネイティブアプリと同等の体験を、ウェブサイトが提供し始めていることに気づいていました。これは、リッチなウェブアプリケーションにとっては朗報でしたが、中間者攻撃やその他のネットワークの干渉、なりすましなどによってそれらの機能が改ざんされる可能性があり、セキュリティ上のリスクが生じます。

あるユーザーがあなたのサイトに接続し、ネットワーク上の他の誰かがあなたのウェブカメラやマイクへのアクセスに便乗して盗聴できることを想像してみてください。さらに悪いことに、そのネットワーク攻撃者は、HTTPインジェクションによってウェブカメラにアクセスするリクエストを完全に捏造できてしまいます。

Googleの最初のコンセプト以来、彼らの提案は「Secure Contexts」へと発展しました。この提案は、これらの高度なブラウザ機能への安全なアクセスを定義するインターネット標準となることを目指したW3Cのドラフト(草案)です。

Secure Contexts がドラフトされているにもかかわらず、新しい機能や規格は、その当初から HTTPS を必要とするように設計されていました。最大のものはHTTP/2です。すべての主要ブラウザは、ウェブサイトがHTTP/2で、HTTPSを使用することを要求しています。つまり、暗号化されていないHTTPを提供している場合は、インターネットのコアプロトコルの最新バージョンには、まったくアクセスできません。

gzipよりも優れたパフォーマンスを発揮する圧縮アルゴリズムであるBrotliや、GoogleのAMPなど、他の主要な規格もHTTPS対応を中心に設計されています。

最近、HTTPS に関するウェブブラウザの取り組みについて、いくつかのニュースをお聞きになったことがあるでしょう。HTTPSを必要とする機能、標準、および APIの数が増加していることは、その採用を促進し将来のインターネットをHTTPSのみにするという、ブラウザ側の強い関心を示す、もう 1 つの指標です。

どの機能が HTTPS を必要とし、それが特定のブラウザにどのような影響を与えるかを把握するのは困難です。この一覧表では、HTTPSのみでのサポートになることが予定されている既存の機能を含め、すべての情報をまとめています。これらの機能を自分のウェブサイトで使用していない場合でも、Chrome や Firefox などの主要ブラウザが HTTPS に対してどれほど真剣に取り組んでいるかを知る上での参考になるはずです。

ある機能がブラウザでHTTPSのみになっている場合は、バージョン番号と変更のドキュメントへのリンクを記載しています。ある機能が全くサポートされていない場合や、HTTPで許可されていない場合は、その旨と、将来的にその機能を制限する可能性があることを明記しています。この一覧表は、ブラウザによって新しい発表がなされるたびに更新されます。

セキュアオリジンオンリーの機能と標準

機能/標準
HTTPSのみでの開始時期
注意事項
AMP
(Accelerated Mobile Pages)
AMPは、他のものとは異なります。AMPは、モバイルウェブ用のページを提供するGoogleのオープンソースの標準です。
iframe、動画の埋め込み、広告の配信など、AMPの多くの機能にはHTTPSが必要です。AMPコンポーネントの全リストはこちらでご覧いただけます。ここでは、HTTPSの必要性を確認することができます。
Bluetooth
(Web Bluetooth)
このAPIはChromeでのみサポートされています。
Brotli
最初から
gzipよりも優れたパフォーマンスを発揮する圧縮フォーマット。Chrome 50とFirefox 44でサポートされています。
getUserMedia
(ウェブカメラとマイク)
Chrome 47
Firefoxでは部分的にサポート
Firefoxでは、HTTP経由でのgetUserMediaを許可していますが、1回限りの許可となっています。このため、ユーザーは訪問のたびに許可を与える必要があります。
Chromeでは、前提条件として、マイクへのアクセスを必要とするSpeech Recognition APIもHTTPSを必要としています。
ジオロケーション
(位置情報技術)
 
HTTP/2
HTTP/2規格では明示的に要求されていませんが、すべての主要ブラウザ(Chrome、Firefox、Safari、Edge)は、HTTP/2ではHTTPSを必要とします。
EME
(暗号化メディア拡張機能)
Firefoxで計画されているが、リリース時期は発表されていません。
Notifications
(通知)
Notifications APIは、FirefoxではHTTPで許可されています。
Payment Request API
(Web支払い)
GoogleDeveloperによるWebPaymentsの紹介。
このAPIはFirefoxではまだサポートされていません。
サービスワーカー
 
Web暗号
Firefoxで計画されており、リリース日は発表されていません。

今後の変更点

これらの機能と規格は、今のところHTTP経由で引き続き利用できます。ブラウザまたは標準化団体(W3CやIETFなど)は、将来これらにHTTPSを要求することに関心を示しています。

機能/標準
HTTPSの必要性
注意事項
AppCache
(アプリケーションキャッシュ)
必要なし
Chromeは、バージョン52以降、AppCache API overHTTPを非推奨にしました。しかし、このAPI全体もブラウザから見放され、Cache APIに取って代わられていることに注意してください。
デバイスの動き/向き
必要なし
Chromiumのセキュリティページで発表されました。
Fullscreen
全画面表示
必要なし
ドラフトでは、HTTPS のみのアクセスに適した候補として fullscreen を挙げています。
UP NEXT
WAF記事ブログ

ミドルウェアの不具合に起因するサービス妨害攻撃の説明

5 Min

特集記事

クラウド上で量子コンピュータをいかに保護するか

NIST PQC アルゴリズムに関する詳細な説明

従来の PKI がもたらす割高な機会損失