要約

  • サイトは正常なHTTPS接続の応答にStrict-Transport-Securityを載せ、ブラウザーはその後の訪問に向けて規則を保存する。RFC 6797は、未知のサイトへの最初のHTTP要求を攻撃の入り口として明記した。
  • Chromiumチームは2011年、Gmailへの最初の移動もHTTPSで行うと発表した。2012年のRFCは、ブラウザー提供者が事前登録したHSTS一覧を初回の弱点への対策として説明した。

サーバーの命令は帰り道で届いた

Collin JacksonとAdam Barthは2008年のForceHTTPS論文で、サイトや利用者がブラウザーに厳格なHTTPS処理を求める仕組みを提案した。Firefox拡張の試作品はHTTPをHTTPSに振り替え、証明書の問題があれば接続を止め、安全でない埋め込みも遮断した。ブラウザーは設定の悪いサイトとの互換性を優先し、警告を押し切れるようにしていた。論文は、その妥協を望まないサイトの意思を機械に伝える方法だった。

2012年のRFC 6797では、サイトがStrict-Transport-Security応答ヘッダーで方針を示す。ブラウザーはエラーのないHTTPS接続で受け取ったときだけ、そのホストをmax-ageの間記憶する。HTTP経由の同じヘッダーは無視しなければならない。平文の通り道にいる攻撃者に、安全規則の作成や削除を任せるわけにはいかないからだ。

ところが最初の接続では、ブラウザーに記憶がない。利用者がドメイン名を入力したりhttpリンクを開いたりすれば、未知のホストへの初回要求は暗号化されないまま出る可能性がある。RFCはこれを起動時の中間者攻撃の弱点と呼ぶ。サイトの指示は応答に乗って届く。先に出た要求には間に合わない。

一覧はブラウザーと一緒に届く

2011年6月のChromium発表には二つの先回りがある。Chromium 12では上級利用者が特定のドメインにHTTPSを強制できた。Chromium 13については、gmail.comやmail.google.comを方式なしで入力した場合を含め、Gmailへのすべての接続をHTTPSにするとチームが説明した。対象の証明書警告もクリックして通過できないという。Gmailが応答する前に、ブラウザーが行き先の扱いを決めていた。

RFC 6797の12.3節は、サイト管理者がブラウザー提供者にHSTS方針の事前登録を求める一覧を説明する。ChromiumのHSTS文書は、新規インストールや保存状態の消去で残る初回の隙間と、一覧の役割を示す。サイトはHTTPSを運用する。どのドメインを初めから保護するかは、一覧を配る側が決める。

この変更で、最初の要求はサーバーの応答待ちからソフトウェアの配布判断へ移った。当時のChromium 13の一覧と初回通信の測定記録があれば、対象の広さまで確かめられる。残る原資料だけでも、規則の到着順と決定権の移動は読める。

出典