HTTP2におけるProxyに関する議論

Pocket

この記事はHTTP2 Advent Calendarの17日目の記事です。

はじめまして。nunnunと申します。HTTP2 newbieなので戦々恐々としておりますが、よろしくお願いします。

注意: HTTP/2.0はHTTP2もしくはh2と表記が変更になりました。

先日HTTP2のExplicit Proxyとそのプライバシー上の懸念について記事を書かせていただきましたが、その後のプロキシに関する議論を書きたいと思います。

IETF 91 HonoluluではProxyに関する議論がいくつか行われました。

  • draft-nottingham-web-proxy-desc-01
  • draft-loreto-wpd-usage-00
  • draft-chow-httpbis-proxy-discovery-00

背景

Explicit Proxyの議論が生まれた背景はGoogle ChromeのSPDY Mobile Proxyをキャリアが運用したいというモチベーションでした。SPDY Mobile Proxyをオペレータが運用することでTransparent Cacheなどのトラフィックエンジニアリングによるトラフィック削減が望めるため、HTTP2においてそうした仕組みを実現したいという目的で提案がなされた模様です。

draft-nottingham-web-proxy-desc-01

httpbisの議長であるMark NottinghamによるProxy Discoveryに関するドラフトです。従来HTTPにおけるProxyの設定はPAC(Proxy Auto Configuration)と言われるJavaScriptを用いてProxyを設定するという方式が用いられていました。JavaScriptを用いるため柔軟な設定が可能である反面、その設定URLを知らなければ設定できない問題が指摘されており、その問題点を解決するためWPAD (Web Proxy Auto Discovery)と呼ばれるDHCPもしくはDNSを用いてそのURLをnotifyする仕組みが提案され、Internet ExplorerやFirefoxなどで実装され、利用されてきました。

本提案ではまずHTTP/2 over TLSの利用を必須としています。従来のPACではクリアテキストでの設定も許容されていましたが、MiTM攻撃なども想定できることから証明書の検証が必須となっています。

またどのホストにどのプロキシを利用するといった設定がJSONによる形式に変更となりました。設定では、Proxyの名称、目的を記載するだけでなく、プロキシが企業などで利用されることが多いことから、プロキシを適用するネットワーク(IPアドレスがレンジにいる場合のみに適用するなど)を追加することができるようになりました。

更にはブラウザにおいてIncognitoモードに代表されるプライバシーモードが広く使われていることから、プライバシーモードの利用を強制するオプションの設定が可能となっています。

従来のWPADによるDiscoveryは禁止されたものの、well-known URIを用いたdiscoveryを行うことが規定されています。

draft-loreto-wpd-usage-00

MarkのWPDドラフトを拡張したドラフトがdraft-loreto-wpd-usage-00です。

特徴としては携帯電話ネットワークなどの高遅延、高ジッター環境で利用することを想定し、いくつかのトラフィックタイプ(Class of Serviceに近い)をlabelというタグを用いて分類し、それらトラフィックタイプ毎にプロキシを設定することを可能にしています。そのため、クライアントはコンテンツに応じてプロキシを使い分けることが可能となり、より最適化された通信が可能となるそうです。

draft-chow-httpbis-proxy-discovery-00

draft-chow-httpbis-proxy-discovery-00はWiFiのキャプティブポータルなどと組み合わせることで、明示的に同意を取ることでhttpsスキームな通信もProxyする(ただし”it MUST NOT alter the end-to-end encryption for “https” requests”と規定)ことも可能としています。
(きちんとドラフト読み込めていないので間違っていたらすみません)

ただしこれはMiTMであり、エンドツーエンドでのセキュアな通信を犯す可能性があるため、個人的にはhealthyではない提案であると感じています。

IETFでの議論

IETFではさまざまな議論が行われましたが、結局WGとしての結論は出ず何かをWG itemとして標準化するという結論には至りませんでした。

まとめ

WPADやPACといった仕組みはold-fashionな技術であるため、新しい仕組みが必要であると個人的に感じ、Internet Confidentialityに関するIABのステートメントや、現在W3C TAG(Technical Advisory Group)によるHTTPSへの移行に関する指摘事項ドラフトなどの流れを踏まえると安全にプロキシをDiscoverする仕組みの策定は重要であると感じています。

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Leave a Reply