Browser

Microsoft Edge(Project Spartan, Internet Explorer) 、ブラウザ周辺、Web フロントエンド開発、UI、など

Microsoft Edge まとめページ

TCP Fast Open、TLS False Start、TLS 1.3 による高速かつ、より安全な Web の構築

いつも通り Microsoft Edge Dev Blog の記事をざっくり訳。
ネットワークは詳しくないので訳が間違っていたらすみません。

blogs.windows.com

 

 

パフォーマンスとセキュリティはインターネットを使用する皆が抱える問題です。
ページ読み込みのパフォーマンスの向上することで、ユーザーエクスペリエンスが向上し、Web ページを閲覧する際の選択に影響を与え、
それと同時にユーザーは安全なブラウジング体験とプライベート性を期待しています。
TCP Fast Open、TLS False Start、TLS 1.3 使用することでパフォーマンスとセキュリティの両方を向上することができます。

これらの機能は Windows Insider Preview build 14361 の Microsoft Edge (EdgeHTML 14.14361) から使用できます。

 

TLS 1.3 への道のり

我々個人の最も重要な情報、お金のやり取りなどをインターネットで行い信頼しており、
これらの取引(トランザクション)の整合性とセキュリティを確保することは Web のコミュニティ全体にとって重要。

Web 接続の半分以上は、ネットワークトラフィックを保護するための TLS を使用して、この数が日々増えています。

TLS はセキュリティとプライバシーのためには素晴らしいですが、私たちは Web を減速せずに暗号化を展開したいと思います。

現代の暗号化自体は非常に高速でページリソースをフェッチする前に接続を確立するキーのネゴシエーションが必要で、
ネットワークを通る個々の特別な交換は、「ラウンドトリップ時間(往復時間、Round Trip Time)」(RTT) によって接続遅延が発生します。

現在の規格では、TCP 上で TLS を必要とする接続は、サーバーへのラウンドトリップを必要とする(3-RTT)交渉します。 1-TCP、2-TLS、そして最初の HTTP GET コマンドのように開始の前、情報を送ります。

サイトが複数のドメイン間でコンテンツを分割するときは、さらに問題を取得します。

実際には暗号化を追加すると、ページの読み込み時間に数百ミリ秒の範囲で遅延が増え、
研究では、ユーザーが別のウェブサイトへ遷移する際 250ms の遅延を考慮することで十分であるそうです。

http://www.nytimes.com/2012/03/01/technology/impatient-web-users-flee-slow-loading-sites.html

 

良いニュースはとして、新しい標準 TLS1.3 は、コンテンツを暗号化しながら、開発者がその遅延を取り除くことを可能になるということです。
継続的に改善された TCP スタックに加えて現代の暗号化を使って、Microsoft Edge はよりよい性能とセキュリティを提供することを意味しています。

現在 TLS 1.3 の標準化をしており、IETFは、この夏に公開することを予定しています。

しかし、TLS 1.3 なくとも、我々は、TCP Fast Open と TLS False Start オプションを結合し、3-RTT から遅延を 1-RTT に減らすことができます。

平均50ミリ秒であなたのページロード時間を減らすことでよりよいブラウジング経験に提供できるでしょう。

 

TCP と TLS によるフルハンドシェイク

現在の TCP と TLS の標準は、サーバーに3つの往復(3-RTT)を必要とします。

最初のランウドトリップは TCP コネクションパラメータをネゴシエーションする所で、
2番目のランウドトリップは、クライアントとサーバーは、接続のパラメータとキーについて同意するために Client Hello と Server Hello で始まる TLS メッセージを交換します。

最後のラウンドトリップは、クライアントとサーバーの Finished メッセージを介して、TLS ハンドシェイクの完全性の検証を含んでいます。

f:id:x67x6fx74x6f:20160616124238p:plain

 

TLS False Start、TCP Fast Open で 1-RTT を達成する

最初の改良は TLS False Start オプション。

クライアントが最初の TLS ラウンドトリップのすぐ後に暗号化されたデータを送り始めることを可能にし、TLS を 1-RTT に減らし、TCP コネクションをするならば 2-RTT に数を減らしています。

我々は一連の強力な暗号スイートを Microsoft Edge の TLS False Start で有効にしています。

f:id:x67x6fx74x6f:20160616124251p:plain

次の改良は、RFC7413 において定義された TCP Fast Open。

RFC で定義されている 「Fast Open Cookie」を含む新しい TCP オプションを定義します。

「Fast Open capable」クライアントが初めてサーバーに接続する時には、有効なクッキーを反応に送り返すために、サーバーを促して空のクッキーを初期の TCP SYN メッセージに挿入し、その後の接続では、クライアントは TCP SYN メッセージの cookie をコピーしデータをすぐに送信。

サーバーがデータを有効なものとして認識しているのであれば、データを受け入れて、それらをアプリケーションに渡します。

TCP Fast Open を有効にすると、データを送信できる接続の前に完了とし、応答がすぐに届き、
TCP Fast Open と TLS False Start を組み合わせると初期の TCP ハンドシェイクをキーのネゴシエーションが同時に実行されます。

HTTP トラフィックが開始前に 1-RTT になります。

f:id:x67x6fx74x6f:20160616124320p:plain

 

次は?: TLS 1.3 0-RTT

TCP Fast Open は Windows Insider Preview builds 14352 からの Microsoft Edge で使用可能です。

アドレスバーに about:flags を入力して、下の方にある Enable TCP Fast Open をチェックしましょう。

f:id:x67x6fx74x6f:20160616124344p:plain

(現在、デフォルトでは機能していません)

 

次のステップでは、TLS 1.3 を使用して 1-RTT から 0-RTT に移行することですが、0-RTT が安全に行うことが極めて難しいことが判明しました。

f:id:x67x6fx74x6f:20160616124506p:plain

すべての 0-RTT ソリューションはサーバーからフィードバックでも待たずして、クライアントからキー マテリアルおよび暗号化されたデータを送ることを必要としています。
機能が大きい世話によって使われる必要があるのを暗示している最小〈それが、相手が捕らえて、メッセージを再生できるのを意味している〉で。

最低でも、攻撃者(adversaries)がデータをキャプチャし、メッセージを再生できるため、これらの機能は細心の注意を払って使用する必要があることを意味します。

それに加え、クリアテキストの Hello メッセージを識別子で送ったり、
または初期暗号化でサーバーの公開キーに依存する場合、将来的な侵害を危険にさらすことによってプライバシーを損なうことなど、多くの潜在的な落とし穴があります。

現在 IETF ワーキンググループがこれらの問題の解決に働いているとのことです。

スポンサーリンク