先日、Chromiumブログに「Continuing our journey to bring instant experiences to the whole web」という記事が投稿されています。
この記事は、ブラウザのプリフェッチ機能とプライバシーの問題について説明をしています。またGoogleやブラウザでの取り組みについても多く書かれています。詳しくは原文をお読みください。
その中で、private prefetch proxyというものが出てくる。個人的にはとても興味深いところなので、雑にメモしておく。
prefetch機能とプライバシーの問題
Webページの表示の高速化のために、プリフェッチ機能が使用されています。prefetchはユーザが次に読み込むであろうページのリソースを事前に取得することで、ページの表示を高速化します。
特にcross-siteのプリフェッチにおる際に問題になります。プリフェッチを受けるサーバ側では、実際にユーザがアクセスしたかは別として、そのサイトをリンクしているページを開いている事がわかります。
ユーザを識別できないように、prefetch時にはCookieなどは送られないようですが、IPアドレスは分かってしまいます。
このユーザのIPアドレスを隠蔽するのに登場するのが、Private prefetch proxyです。
Private prefetch proxy
Private prefetch proxyはプリフェッチの際に使用するプロキシです。
Chromeはプリフェッチする際に、Googleが運用するPrivate prefetch proxyにHTTP/2 CONNECTメソッドで接続します。このときChromeとプリフェッチ先のサーバはend-to-endで暗号化されるため、プロキシはその中身は見ることは出来ません。プリフェッチ先のサーバはプロキシのIPアドレスしか見えないので、ユーザのIPアドレスを知ることは出来ません。
ようは通常のプロキシとそうかわらなさそうです(ただし、ユーザの手を煩わせて設定するということはありません)。また、Chromeからのみ使えるといったような制限もあるもようです。
この説明だけでは様々な疑問が出て来るかと思いますが、下記リポジトリでFAQに答えています。例えば、コンテンツブロックやISPへの影響などについて書かれています。
github.com
また、Proxyの悪事が懸念されるわけですが、"trusted private prefetch proxy" というものが登場します。
このtrustに関わる部分については、コミュニティと議論しつつ要件などを整理していくというところのようです。
おまけ
trustedなproxyと聞くと、2014年頃にHTTP/2の議論とともに「Explicit Trusted Proxy」というものがあったのを思い出す。
日本語でも言及している記事があるので参考までにどうぞ
blog.nunnun.jp