[13] Opportunistic Security for HTTP/2 は、
http:
URL によって表され、本来なら素のHTTPで行われるべき
HTTP アクセスを、 HTTPS (HTTP/2 over TLS) 転送路を使って行うものです。
[29] 本機能は HTTP の代替サービスを使っています。
[19] 起源サーバーは、
プロトコルの識別子を代替サービスとして広告します。
ここで、プロトコルは、 TLS を使うもの (例えば h2
) とします。
プロトコルは、資源の scheme を明示的に示すものでなければなりません。 >>12
h2c
のようにそうでないものもあり、ここでの条件に合致しないことになります。
ftp
のように URL を指定できないプロトコルも、
scheme を明示するとの条件に合致しません。[21] クライアントは、そのような代替サービスの広告を受信したら、 以後その起源への要求を指定された代替サービス経由で送信して構いません。 >>12
[23] クライアントは、代替サービスの接続の準備が完了するまで、 要求の送信を遅延させることができます。その場合、接続に失敗したら、 通常の平文の接続で送信することになります。 >>12
[22] クライアントは、まず OPTIONS
要求のような繊細な情報が少ない要求を送信して、
代替サービスが無いか確認することもできます。 >>12
[24] クライアントは、既知の代替サービスの満期が近い時、
OPTIONS
要求のようなものを予め送信しておき、
代替サービス情報を更新することもできます。 >>12
[51] 代替サービスの広告は素のHTTPで送受信されますから、改竄の可能性があります。
例えば Alt-Svc:
ヘッダーを削除することで、 downgrade attack
が可能です >>12。
[25] クライアント証明書は、意味を持ちません。 クライアントは、 クライアント証明書を指定してはなりません。 >>12
[26] サーバーは、同じポートで https:
も提供する場合に、
証明書要求することができます。
しかし、クライアントが証明書を提供しない場合にも、
ハンドシェイクを中断してはなりません。 >>12
[30] 代替サービスにおける「十分な保証」は、HTTPSサーバー認証を使うことによります。 クライアントは、 HTTPSサーバー認証によりサーバー証明書が要求の起源について妥当である場合を除き、 当該接続で要求を送信してはなりません。 >>12
[31] クライアントは、
まず要求の起源に関して妥当な「http-opportunistic
」応答を得なければなりません。
>>12
[35] 起源について妥当な「http-opportunistic
」応答を持つとは、
次の条件を満たすことをいいます。 >>12
[44] (配列に?) 含まれる値が文字列でない時、非妥当として構いません。 >>12
[46] 新鮮であるとの条件が暗示する通り、HTTPキャッシュの利用が認められています。
したがって、すべての代替サービスが
http://.../.well-known/http-opportunistic
に応答できる必要があります >>12。
クライアントは、当該代替サービスから
http://.../.well-known/http-opportunistic
を取得せずとも (キャッシュを使って)
すぐに利用できます >>12。
[47] クライアントは、認証されていない接続を使って得た
http://.../.well-known/http-opportunistic
のキャッシュを使ってはなりません >>12。
[49] クライアントは、認証されていない接続を使って得た
http://.../.well-known/http-opportunistic
がキャッシュにあっても、消去しなければなりません。
認証されていない接続の応答を認証された接続で再検証したところで、
応答の一貫性は保てません。 >>12
[53]
http://.../.well-known/http-opportunistic
の検査が必要なのは、
従来 HTTPS でアクセスされた時 https:
のアクセスとみなして応答を返す運用がなされてきたため、
真に Opportunistic HTTP/2 Security を意図したサーバーかどうかを確認するためです
>>12。
[16] 中途半端なセキュリティーしか提供できない本技術は HTTPS への移行を遅らせるものだとして、 好ましくないと考える人もいます。
[50] http:
URL の応答を TLS 経由で受け取っても、
https:
のようなセキュリティーの表示を行ってはなりません。 >>12
[1] draft-ietf-httpbis-http2-encryption-01 - Opportunistic Security for HTTP ( 版) <https://tools.ietf.org/html/draft-ietf-httpbis-http2-encryption-01>
[3] draft-ietf-httpbis-http2-encryption-04 - Opportunistic Security for HTTP ( 版) <https://tools.ietf.org/html/draft-ietf-httpbis-http2-encryption-04>
[4] draft-ietf-httpbis-http2-encryption-07 - Opportunistic Security for HTTP () <https://tools.ietf.org/html/draft-ietf-httpbis-http2-encryption-07>
[5] RFC 8164 - Opportunistic Security for HTTP/2 () <https://tools.ietf.org/html/rfc8164>
[6] 1301117 - Update Opportunistic Security for HTTP () <https://bugzilla.mozilla.org/show_bug.cgi?id=1301117>
[7] 1003448 - http/2 alt-svc support () <https://bugzilla.mozilla.org/show_bug.cgi?id=1003448>
[8] 1172615 - opportunistic encryption potentially perturbing certificate verification telemetry () <https://bugzilla.mozilla.org/show_bug.cgi?id=1172615>
[9] 1148885 - Opportunistic Encryption does not work with HTTP/2 proxy () <https://bugzilla.mozilla.org/show_bug.cgi?id=1148885>
[10] 742610 - Remove opportunistic caching support from nsHttpChannel () <https://bugzilla.mozilla.org/show_bug.cgi?id=742610>
[11] 1148328 - (CVE-2015-0799) Server certificate verification bypass with Alt-Svc () <https://bugzilla.mozilla.org/show_bug.cgi?id=1148328>
https:
URL によって表される HTTPS アクセスとは、異なるものです。本手法を使っても、 (https:
URL によって表される HTTPS アクセスで防げる) すべての攻撃を防げるわけではありません。