読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

httpbis interim@チューリッヒ報告 #http2study

HTTP

SPDY - Wikipedia

Googleが提唱し、現在標準化作業が進められている通信プロトコルの一つ。HTTP/2.0のベースとなった。2013年12月現在の最新バージョンはSPDY Protocol - Draft 3.1[2]。

中間会議たち

2013/1 東京 2013/6 サンフランシスコ 2013/8 ハンブルグ 2013/10 シアトル 2014/1 チューリヒ ←「今年中にやったろう!」

何年もかかることを1年でやってのけるものすごいスピード。

httpbis interim@チューリヒ 2014 1/22-24

バカ高い物価 @jovi0608 と W3Cの中島さん

  • セキュリティエリアのワーキング部分について決着をつけよう
  • セキュリティまわりの重鎮が集っていた

http-draft-09/2.0 interop?

  • 会場にいってみたらinteropもう終わってた
  • HTTP2.0まわりでChromeの実装をやってた人がもうやめてた
  • Firefoxくらいしかなかった
  • 事前に試験とか実装とかはあらかた終わってて、ブラッシュアップと議論のフェーズになっていた
  • (次のinteropでもう終わるかも?終わらないかも?)

4月のワーキングループのラストコーリングが今!!

チューリヒ interim 概要

GitHubで仕様を管理してる。

  • Issueの議論と方針決め(基本はメーリスを出して、解決すべきであるならIssueにあげる)
  • Priority Leveling 優先度のレベルづけ 仕様の議論
  • Security Discussion (NSAの盗聴と改竄に対応するために、HTTP2.0を堅牢なものにするが、ほとんどのものはスコープ外)

Issue議論の結果 draft10の変更点

  • Editor(人の名前)が転職(MS Open Tech→Mozilla Windowsからマカーへ) マイナーバージョンの廃止(HTTP2.0とか2.1とかなし。2の次は3) そもそも2.0と2.1の互換通信とか、ないよね。10年以上続いたメジャーバージョンから決別してすぐにバージョンアップする
  • GOAWAY(「バイバイ」って言ったあとに通信を切る)→GTFO
"My name is John Francis Pastorius III, and I'm the greatest bass player in the world."
"Get the fuck out of here!"

これ。

  • FrameTypeやエラーコードのリナンバー
  • SETTINGフレームは5バイト

深イ話(テクニカルだから眠いかも)

  • FrowControl停止設定の廃止(どっちみちDOS対策とかでFrowControl必要じゃんね?って理由)
  • DATAフレームにEND_MESSAGEフラグを新設(今まではフラグだけだった) 「paddingの技術を入れるため」「WebSocketを動かすため」(PR待ち) ** 次のロンドンで検討しようぜ
  • 負荷分散について記述追加(切って貼って…) 内容を検討して妥当であるなら入れる

深イ話 その2(テクニカルだから眠いかも)

  • 拡張を認めない (DoSの温床。別のALPN名でやれ 名前を変えて拡張する) Googleは拡張試験をガシガシやってる 仕様に書いてないものは全てエラーにする(それまでは多数決であった) ** TwitterやGoogleはh2上で色々試験をやってる
  • TLSの利用条件をきびしく 圧縮不可、DHE ECDHEを制限 安全なTLSを使うようにする 圧縮する際に脆弱性が認められた

HPACK-06の変更

  • Huffman Tableの共通化
  • クッキー用のHuffman Tableの新設
  • エンコーダーがわからのTableSize指定(エンコーダー側とデコーダー側で合意が得られたサイズのもののみ通信を行う)
  • draftはHTTP/2と別々に進めて、お互いを参照せず、独立して別々に進める

最後の大物 Priority Dependency

「どのファイルを優先的にロードするの?!」

ユースケースの例

ダウンロード順に決められているもの

DOM Parseに影響するもの

DOMが崩れてしまうものをブロックして早く取得

ユーザ行動

タブの切り替え ViewPort変更などのアクションにより優先順位を上げ下げする

サーバープッシュのヒント

ユーザ視点の高速化に大きく利点だが、複雑すぎてGoogleですらも取り組めない

だけど完成したときのメリットが大きすぎるのでGoogleが着手

  • Dependency Listをサーバとクライアントで同期さす
  • でも同期するのが難しすぎる

Weighted Dependency Group

  • Priority用のGroupを新設する(グループは木構造にしない)
  • グループはあとでGCとかやる必要はあるけど同期をする必要がなくなる

次のロンドンへむけての試金石

セキュリティ

  • HTTP2をTLSに限定
  • Explicit Proxyはスコープ外にして3や4に入れ込む
  • http:// を平文ではなく暗号文にする(これも先送り)
  • コネクション集約 Client証明書 (これも先送り)

結論 HTTP2はTLSに限定しない

  • 仕様として http/https両方使える
  • 対応はマーケットに任せる
  • IEはhttp/https ChromeやFirefoxはhttpsのみ

http:// の日和見暗号

  • 必要?不要?という議論をしないといけない
  • サーバ認証はするの?しないの? コンテンツを変えずに暗号化通信をやる方法は
  • 対ダウングレードアタック

今後の予定

  • 2/7 - 2/14までにdraft10をリリースする(ほとんどしゅうせいずみ)
  • 3/8に非公式iterimを開催
  • 6月にアメリカ東海岸で6th interimを開催

質疑応答

最初のほうにやってしまって「納得いかない!!」っていうのが結構ある

ネットワーク屋としてはChromeやFirefoxが勝手な通信を始めてしまうのはどうにも納得いかない

日和見暗号=オレオレ認証

資料