SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
httpbis interim@チューリッヒ
レポート
IIJ 大津 繁樹
2014年1月28日
HTTP2勉強会#3
HTTP/2 これまでの歩み
年月
2012年1月

トピック
IETF httpbis WGでHTTP/2.0の仕様検討開始することを決定

2012年11月 3つの候補案からSPDY仕様をベースにすることを決定
draft-00(SPDY/3仕様をそのまま)リリース
2013年1月

第1回中間会議(東京) draft-01リリース(HTTPからのUpgrade方法を追加)

2013年4月

draft-02リリース(フレームフォーマット・タイプの大幅な変更)

2013年6月

第2回中間会議(サンフランシスコ) 新ヘッダ圧縮仕様の採用を決定

2013年7月

draft-04リリース(最初の実装ドラフト)

2013年8月

第3回中間会議(ハンブルグ) 最初のHTTP/2.0相互接続試験を実施
draft-06リリース(実装ドラフト)

2013年10月 第4回中間会議(シアトル) 2回目の相互接続試験を実施
2013年12月 draft-09リリース(実装ドラフト)
2014年1月

第5回中間会議(チューリッヒ) 開催

今ココ
第5回 httpbis interim@チューリッヒ
2014 1/22~24
スイスは
物価高過ぎ!

名物チーズ
フォンデュ

私は、

•
•
•
•

Cisco Systems がホスト
ではありませんよ。
20数名が集まる (F5など新参組も)
最終日は TLS WG と Joint (WG chairも参加)
Application/Security AD達が集まる豪勢なinterim
HTTP-draft-09/2.0 interop?
僕らスイス来る前に
もう済んじゃったから
あらっ!

分科会で議論している
から勝手にやっていて

Firefoxのバグ1つ
見つけてやったぞ

教訓:宿題はすぐ済ませましょう。
現状を一言で表すと、
HTTP/2は第4コーナーに入りました!

でもまだコーナー抜けてません。
最終かどうかも???
チューリッヒ interim 概要
• issue の議論と方針決め
• Priority Leveling 仕様の議論 (最後の大物)
• Security Discussion (一応スコープ外で決着)
issue議論の結果
draft10の変更点(見た目編)
• Editorが転職 (MS Open Tech→Mozilla)
• マイナーバージョンの廃止 (HTTP/2, ALPNではh2)
– 2.0←→2.1といった互換通信をしない。
– 次は HTTP/3 にすぐ取り掛かる。(短期にバージョンアップ)

• GOAWAY→GTFO(General Termination of Future Operations)
– Google の Hasan と Editor の Martin によるシャレ → 1/29に revert

• FrameType、エラーコード、SETTINGSのリナンバー
– LastCall に向けた準備

• SETTINGSフレーム構造の変更. 5(1+4)バイト毎に
もうチョイ深いdraft10変更点(その1)
• FlowControl停止設定の廃止
– どっちみち DoS対策でフロー制御が必要だよね。
– 最大値(31bit)に設定すればいいじゃん。

• DATAフレームにEND_MESSAGEフラグの新設(*)
– この後にWebSocketを入れられるようにしようか。
– hybiとジョイント WGをしてWSの検討しよう。

• 負荷分散について記述追加(*)
– TCP張りっぱなしだから負荷分散がしにくい
– Alt-Svcヘッダ使って分散する方法の記述を検討
(*) 1/28時点まだ未修整
もうチョイ深いdraft10変更点(その2)
• 拡張(FrameType/SETTINGS)を認めない
– DoSの温床、TCP拡張の様にフィルターされるのは嫌だ
– やるなら別ALPN名でやる。
– Google は DNS/Cert. Pushなんかの拡張試験をやるよ。

• TLSの利用条件を厳しく
– TLS1.2必須、圧縮不可、 ephemeral cipher suites
(DHE,ECDHE) に制限、エラーコードの新設、BCP参照

• CRIME/BEAST BREACH対策(Padding付加)
– BODYはDATAフレームに2種類のPADDINGフラグ
(1or2byte)を追加してペイロードの先頭にpaddingを付加。
– HPACKは本当に必要かThreatModel検証が要必要 (*)
(*) 1/28時点まだ未修整
HPACK-06の変更点
• Request/Response の Huffman Tableの共通化(*)
– チョット最適化が悪くなるがそれほどでもない
– コンテキストで共通化,サーバプッシュにメリット

• cookie/set-cookie用の Huffman Tableの新設(*)
– base64エンコードにして最適化を進めよう

• エンコーダー側からのTableSize指定
– index:0を使おう。reference set消去とかぶるよ(涙)
– FrameHeader Flagじゃあかん。bit flag を変更しようか(*)
– SETTINGS-ACKとは独立。問題があるならエラーに。

• draftはHTTP/2と別々に進めよう。先にセキュリティレ
ビューなどしてもらってもいいし。 (*) 1/28時点まだ未修整
最後の大物 Priority Dependency
ユースケースの例
• ダウンロード順が決められてるもの
– jQueryロードしてから、JS実行コード
– 分割ビデオやオーディオファイル(1章、2章…)

• DOM Parseに影響するもの
– document.write はDOM Parseをブロックするので早く取得

• ユーザ行動
– タブ切り替え、ViewPort変更(優先度変更)

• Server Pushのヒント
– 依存性で次にリクエストするファイルが分かるのでプッ
シュに有用(そもそもサーバ側が情報持っているジャン)
ユーザ視点の高速化に大きく利点、SPDY時代からの課題だが
複雑過ぎてGoogleがこれまで取り組めなかった。
Googleの提案
優先度 or ストリームの依存+順番を指定
END_STREAM

Dependency Listを同期
END_STREAM_ACK
index.html

状態の同期は
複雑すぎる!

a.js

優先度:X

a.js

b.js

b.js

a.jpg

index.html

優先度:X

b.jpg

dependency list(client)

a.jpg

b.jpg

dependency list(server)
Weighted Dependency Group
Priority Group
ID: 1234(24bit), Weight: 255(8bit)

X

0

A

F

B

C

D

E

G

木構造に
しないよ
ストリーム

Priority Group(24)

Weight(8)

Stream Dependency(31)

• Priority用のGroupを新設
• Group内で0を頂点としたスト
リーム依存性を定義
• グループ間はWeight比でリ
ソース割り当て
• default はID下24bit, 重み16,
stream_id:0に依存

これから議論、検証です。
Security Discussionの前に。
インターネットの脅威

•
•
•
•

PRISM: 情報収集・通信監視 (写真出典 wikipedia)
Quantum: バックボーンMITM
Fox Acid: 脆弱性攻撃
MUSCULAR: データセンター内通信傍受

IESG/IAB要請が出る見込み:
IETFの技術仕様は Pervasive Surveillance 対策の検討必須
Security Discussion
• HTTP/2 を TLS に限定する提案
– 従来通り HTTP でも利用できるようにする。

• Explicit Proxy(PolicyFilter、VirusScan , etc.用途 )
– HTTP/2のスコープ外にして、継続議論

• http:// の opportunistic(日和見)暗号化
– HTTP/2の進捗に影響ない範囲で検討継続

• コネクション集約
– Client証明書、 subjectAltName対応など問題あり
Security Discussion
結論:HTTP/2 はTLSに限定しない
• HTTP/2は仕様的に、http/https両方使える。
• どう対応するかはマーケットに任せる。
• Firefox/Chrome は httpsのみ、IEは http もサポー
トするといったちぐはぐが起こる。
ユーザ側のHTTP/2対応に混乱、問題は生じない
か?
個人情報を扱うサイトは、HSTS/Key pinning などで
フルHTTPS化推進へ
Security Discussion
HTTP/2の http:// に日和見暗号を!
• そもそも必要、不要? (このまま何もしないわけにはい
かない)

• サーバ認証は?
– する(httpsと実質同じ)
– しない(Active MITMには無力)
– 別の仕組み(DNSSECを使うDANE、TLS拡張を使うTACK
等々)

• 切り替え方法は? (対ダウングレードアタック)
– ALPNみたいなヒント交換、 DNSレコード、HTTP/2フ
レーム内で暗号化ハンドシェイク、既存の443ポート
を使ってSETTINGSで交換
今後の予定
• 2/7 (最悪2/14)までに draft10 をリリース
– みんな仕事速い!ほとんど修正済

• IETF London(3/2-7)翌日3/8にhttpbisの非公式
interimを開催(正式な interopはやらない)
• 6月上旬米国東海岸で第6回interimを開催

まだまだあきらめまへん
• 4月 HTTP/2 の WG Last Call
• 8月 IETF Last Call を目指す。

Contenu connexe

Tendances

HTTP/2でも初めてみます?
HTTP/2でも初めてみます?HTTP/2でも初めてみます?
HTTP/2でも初めてみます?Kento Kawakami
 
HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)Jun Fujisawa
 
IETF93 Prague報告Web関連+QUIC
IETF93 Prague報告Web関連+QUICIETF93 Prague報告Web関連+QUIC
IETF93 Prague報告Web関連+QUICKaoru Maeda
 
http2study 20160423 IETF95 Report
http2study 20160423 IETF95 Reporthttp2study 20160423 IETF95 Report
http2study 20160423 IETF95 ReportKaoru Maeda
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on LinuxTakayoshi Tanaka
 
最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策Kensaku Komatsu
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbindKaoru Maeda
 
Git 入門
Git 入門Git 入門
Git 入門y-uti
 
LibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみたLibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみたTomofumi Yagi
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2Jxck Jxck
 
HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会Jxck Jxck
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座Yusei Yamanaka
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)Masataka Kondo
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門Takashi Imagire
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATETomofumi Yagi
 
Git lev 1-おひとりさま用-
Git lev 1-おひとりさま用-Git lev 1-おひとりさま用-
Git lev 1-おひとりさま用-Kentarou Kurashige
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門Keisuke Oohata
 

Tendances (20)

HTTP/2でも初めてみます?
HTTP/2でも初めてみます?HTTP/2でも初めてみます?
HTTP/2でも初めてみます?
 
HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)
 
IETF93 Prague報告Web関連+QUIC
IETF93 Prague報告Web関連+QUICIETF93 Prague報告Web関連+QUIC
IETF93 Prague報告Web関連+QUIC
 
http2study 20160423 IETF95 Report
http2study 20160423 IETF95 Reporthttp2study 20160423 IETF95 Report
http2study 20160423 IETF95 Report
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
 
最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策
 
Git (実践入門編)
Git (実践入門編)Git (実践入門編)
Git (実践入門編)
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbind
 
Git 入門
Git 入門Git 入門
Git 入門
 
Ietf95 http2
Ietf95 http2Ietf95 http2
Ietf95 http2
 
LibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみたLibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみた
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
 
HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
 
HTTP2入門
HTTP2入門HTTP2入門
HTTP2入門
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
Git lev 1-おひとりさま用-
Git lev 1-おひとりさま用-Git lev 1-おひとりさま用-
Git lev 1-おひとりさま用-
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門
 

En vedette

HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_tHTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_tshigeki_ohtsu
 
Node.js で SPDYのベンチマーク体験サイトを作りました
Node.js で SPDYのベンチマーク体験サイトを作りましたNode.js で SPDYのベンチマーク体験サイトを作りました
Node.js で SPDYのベンチマーク体験サイトを作りましたshigeki_ohtsu
 
SPDYの中身を見てみよう
SPDYの中身を見てみようSPDYの中身を見てみよう
SPDYの中身を見てみようshigeki_ohtsu
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成shigeki_ohtsu
 
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法shigeki_ohtsu
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能についてshigeki_ohtsu
 
Node最新トピックス
Node最新トピックスNode最新トピックス
Node最新トピックスshigeki_ohtsu
 
ピッチをする前に知っておきたかったこと スタートアップの資金調達
ピッチをする前に知っておきたかったこと スタートアップの資金調達ピッチをする前に知っておきたかったこと スタートアップの資金調達
ピッチをする前に知っておきたかったこと スタートアップの資金調達Takaaki Umada
 
資金調達入門“以前” スタートアップが資金調達の前に考えること
資金調達入門“以前” スタートアップが資金調達の前に考えること資金調達入門“以前” スタートアップが資金調達の前に考えること
資金調達入門“以前” スタートアップが資金調達の前に考えることTakaaki Umada
 

En vedette (11)

HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_tHTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
 
Node.js で SPDYのベンチマーク体験サイトを作りました
Node.js で SPDYのベンチマーク体験サイトを作りましたNode.js で SPDYのベンチマーク体験サイトを作りました
Node.js で SPDYのベンチマーク体験サイトを作りました
 
SPDYの中身を見てみよう
SPDYの中身を見てみようSPDYの中身を見てみよう
SPDYの中身を見てみよう
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
 
Node最新トピックス
Node最新トピックスNode最新トピックス
Node最新トピックス
 
Stream2の基本
Stream2の基本Stream2の基本
Stream2の基本
 
ピッチをする前に知っておきたかったこと スタートアップの資金調達
ピッチをする前に知っておきたかったこと スタートアップの資金調達ピッチをする前に知っておきたかったこと スタートアップの資金調達
ピッチをする前に知っておきたかったこと スタートアップの資金調達
 
資金調達入門“以前” スタートアップが資金調達の前に考えること
資金調達入門“以前” スタートアップが資金調達の前に考えること資金調達入門“以前” スタートアップが資金調達の前に考えること
資金調達入門“以前” スタートアップが資金調達の前に考えること
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
 

Plus de shigeki_ohtsu

SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向shigeki_ohtsu
 
Technical Overview of QUIC
Technical  Overview of QUICTechnical  Overview of QUIC
Technical Overview of QUICshigeki_ohtsu
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するshigeki_ohtsu
 

Plus de shigeki_ohtsu (6)

TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
 
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
 
Technical Overview of QUIC
Technical  Overview of QUICTechnical  Overview of QUIC
Technical Overview of QUIC
 
SPDYの話
SPDYの話SPDYの話
SPDYの話
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 

Dernier

プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Dernier (7)

プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

httpbis interim@チューリッヒ レポート

  • 1. httpbis interim@チューリッヒ レポート IIJ 大津 繁樹 2014年1月28日 HTTP2勉強会#3
  • 2. HTTP/2 これまでの歩み 年月 2012年1月 トピック IETF httpbis WGでHTTP/2.0の仕様検討開始することを決定 2012年11月 3つの候補案からSPDY仕様をベースにすることを決定 draft-00(SPDY/3仕様をそのまま)リリース 2013年1月 第1回中間会議(東京) draft-01リリース(HTTPからのUpgrade方法を追加) 2013年4月 draft-02リリース(フレームフォーマット・タイプの大幅な変更) 2013年6月 第2回中間会議(サンフランシスコ) 新ヘッダ圧縮仕様の採用を決定 2013年7月 draft-04リリース(最初の実装ドラフト) 2013年8月 第3回中間会議(ハンブルグ) 最初のHTTP/2.0相互接続試験を実施 draft-06リリース(実装ドラフト) 2013年10月 第4回中間会議(シアトル) 2回目の相互接続試験を実施 2013年12月 draft-09リリース(実装ドラフト) 2014年1月 第5回中間会議(チューリッヒ) 開催 今ココ
  • 3. 第5回 httpbis interim@チューリッヒ 2014 1/22~24 スイスは 物価高過ぎ! 名物チーズ フォンデュ 私は、 • • • • Cisco Systems がホスト ではありませんよ。 20数名が集まる (F5など新参組も) 最終日は TLS WG と Joint (WG chairも参加) Application/Security AD達が集まる豪勢なinterim
  • 6. チューリッヒ interim 概要 • issue の議論と方針決め • Priority Leveling 仕様の議論 (最後の大物) • Security Discussion (一応スコープ外で決着)
  • 7. issue議論の結果 draft10の変更点(見た目編) • Editorが転職 (MS Open Tech→Mozilla) • マイナーバージョンの廃止 (HTTP/2, ALPNではh2) – 2.0←→2.1といった互換通信をしない。 – 次は HTTP/3 にすぐ取り掛かる。(短期にバージョンアップ) • GOAWAY→GTFO(General Termination of Future Operations) – Google の Hasan と Editor の Martin によるシャレ → 1/29に revert • FrameType、エラーコード、SETTINGSのリナンバー – LastCall に向けた準備 • SETTINGSフレーム構造の変更. 5(1+4)バイト毎に
  • 8. もうチョイ深いdraft10変更点(その1) • FlowControl停止設定の廃止 – どっちみち DoS対策でフロー制御が必要だよね。 – 最大値(31bit)に設定すればいいじゃん。 • DATAフレームにEND_MESSAGEフラグの新設(*) – この後にWebSocketを入れられるようにしようか。 – hybiとジョイント WGをしてWSの検討しよう。 • 負荷分散について記述追加(*) – TCP張りっぱなしだから負荷分散がしにくい – Alt-Svcヘッダ使って分散する方法の記述を検討 (*) 1/28時点まだ未修整
  • 9. もうチョイ深いdraft10変更点(その2) • 拡張(FrameType/SETTINGS)を認めない – DoSの温床、TCP拡張の様にフィルターされるのは嫌だ – やるなら別ALPN名でやる。 – Google は DNS/Cert. Pushなんかの拡張試験をやるよ。 • TLSの利用条件を厳しく – TLS1.2必須、圧縮不可、 ephemeral cipher suites (DHE,ECDHE) に制限、エラーコードの新設、BCP参照 • CRIME/BEAST BREACH対策(Padding付加) – BODYはDATAフレームに2種類のPADDINGフラグ (1or2byte)を追加してペイロードの先頭にpaddingを付加。 – HPACKは本当に必要かThreatModel検証が要必要 (*) (*) 1/28時点まだ未修整
  • 10. HPACK-06の変更点 • Request/Response の Huffman Tableの共通化(*) – チョット最適化が悪くなるがそれほどでもない – コンテキストで共通化,サーバプッシュにメリット • cookie/set-cookie用の Huffman Tableの新設(*) – base64エンコードにして最適化を進めよう • エンコーダー側からのTableSize指定 – index:0を使おう。reference set消去とかぶるよ(涙) – FrameHeader Flagじゃあかん。bit flag を変更しようか(*) – SETTINGS-ACKとは独立。問題があるならエラーに。 • draftはHTTP/2と別々に進めよう。先にセキュリティレ ビューなどしてもらってもいいし。 (*) 1/28時点まだ未修整
  • 11. 最後の大物 Priority Dependency ユースケースの例 • ダウンロード順が決められてるもの – jQueryロードしてから、JS実行コード – 分割ビデオやオーディオファイル(1章、2章…) • DOM Parseに影響するもの – document.write はDOM Parseをブロックするので早く取得 • ユーザ行動 – タブ切り替え、ViewPort変更(優先度変更) • Server Pushのヒント – 依存性で次にリクエストするファイルが分かるのでプッ シュに有用(そもそもサーバ側が情報持っているジャン) ユーザ視点の高速化に大きく利点、SPDY時代からの課題だが 複雑過ぎてGoogleがこれまで取り組めなかった。
  • 12. Googleの提案 優先度 or ストリームの依存+順番を指定 END_STREAM Dependency Listを同期 END_STREAM_ACK index.html 状態の同期は 複雑すぎる! a.js 優先度:X a.js b.js b.js a.jpg index.html 優先度:X b.jpg dependency list(client) a.jpg b.jpg dependency list(server)
  • 13. Weighted Dependency Group Priority Group ID: 1234(24bit), Weight: 255(8bit) X 0 A F B C D E G 木構造に しないよ ストリーム Priority Group(24) Weight(8) Stream Dependency(31) • Priority用のGroupを新設 • Group内で0を頂点としたスト リーム依存性を定義 • グループ間はWeight比でリ ソース割り当て • default はID下24bit, 重み16, stream_id:0に依存 これから議論、検証です。
  • 14. Security Discussionの前に。 インターネットの脅威 • • • • PRISM: 情報収集・通信監視 (写真出典 wikipedia) Quantum: バックボーンMITM Fox Acid: 脆弱性攻撃 MUSCULAR: データセンター内通信傍受 IESG/IAB要請が出る見込み: IETFの技術仕様は Pervasive Surveillance 対策の検討必須
  • 15. Security Discussion • HTTP/2 を TLS に限定する提案 – 従来通り HTTP でも利用できるようにする。 • Explicit Proxy(PolicyFilter、VirusScan , etc.用途 ) – HTTP/2のスコープ外にして、継続議論 • http:// の opportunistic(日和見)暗号化 – HTTP/2の進捗に影響ない範囲で検討継続 • コネクション集約 – Client証明書、 subjectAltName対応など問題あり
  • 16. Security Discussion 結論:HTTP/2 はTLSに限定しない • HTTP/2は仕様的に、http/https両方使える。 • どう対応するかはマーケットに任せる。 • Firefox/Chrome は httpsのみ、IEは http もサポー トするといったちぐはぐが起こる。 ユーザ側のHTTP/2対応に混乱、問題は生じない か? 個人情報を扱うサイトは、HSTS/Key pinning などで フルHTTPS化推進へ
  • 17. Security Discussion HTTP/2の http:// に日和見暗号を! • そもそも必要、不要? (このまま何もしないわけにはい かない) • サーバ認証は? – する(httpsと実質同じ) – しない(Active MITMには無力) – 別の仕組み(DNSSECを使うDANE、TLS拡張を使うTACK 等々) • 切り替え方法は? (対ダウングレードアタック) – ALPNみたいなヒント交換、 DNSレコード、HTTP/2フ レーム内で暗号化ハンドシェイク、既存の443ポート を使ってSETTINGSで交換
  • 18. 今後の予定 • 2/7 (最悪2/14)までに draft10 をリリース – みんな仕事速い!ほとんど修正済 • IETF London(3/2-7)翌日3/8にhttpbisの非公式 interimを開催(正式な interopはやらない) • 6月上旬米国東海岸で第6回interimを開催 まだまだあきらめまへん • 4月 HTTP/2 の WG Last Call • 8月 IETF Last Call を目指す。