HTTPのTLS / 2

画像



「http2の説明」のレビューを書き、HTTP / 2に関するスピーチを行いました。 TLSとHTTP / 2の間の接続について多くの質問を受け取った後、この記事でそれらのいくつかに答えたいと思います。



TLSはオプションです



承認されたHTTP / 2仕様では、まもなく公式のRFCになりますが、TLSの必須使用については何もありません。 それどころか、プレーンテキストTCPでデータを送信する方法と、TLSを使用する方法について説明します。



実際、TLSは常に使用されます



前の段落にもかかわらず、FirefoxおよびChrome開発者の代表者は、TLSを介してHTTP / 2サポートのみを実装すると発表しました。 したがって、HTTP / 2はHTTPSなどのURLでのみサポートされます://。 IE開発者は、TCPを介したサポートを実装すると述べましたが、Windows 10の技術プレビューでは、ブラウザーはTLS経由のHTTP / 2のみをサポートしていました。 ほとんどの既存のサーバーはTLSを介してHTTP / 2をサポートします



仕様で許可されているものと、ブラウザで実際にサポートされているものとの違いを理解する必要があります。



HTTP / 2用のサーバーを開発している場合、一般に、HTTPS用にサーバーを実装して、何らかの種類のユーザーがいるようにする必要があります。 そして、暗号化なしの実装は特にハードテストされません...



もちろん、ブラウザがエージェントになることができるだけでなく、ブラウザのシェアは他のすべてを上回ります。



より厳密なTLS実装



TLSを介してHTTP / 2を記述する場合、仕様は、HTTP 1.1を介してTLSに対して行われた要件よりも厳しい要件を作成します。 たとえば、TLSは少なくともバージョン1.2でなければなりません。 この仕様では、圧縮と再生成が禁止されています。 可能な最小のキーサイズを決定します。 簡単に言えば、HTTP / 2はTLSのより安全なバージョンを使用します。



特に、ALPNサポートは仕様で必須です。新しいTLS拡張機能であるRFC 7301に関しては、時間の損失や不要なパケットの送信なしにHTTPの新しいバージョンを決定するのに役立ちます。



TLSバインディングはHTTPSを促進します



ブラウザはTLSを介してHTTP / 2のみを使用するため、サイトはHTTPS経由でユーザーを受け入れる必要があります。 これは、サイト所有者がHTTPSの提供を開始するための少しのプレッシャーです。 安全な接続に切り替える人が増えています。



これは良いことであり、正しいことだと思います。ユーザーとそのプライバシー権、および大規模な監視を回避する権利を気にするすべての人もそうです。



TLSを必須にしないのはなぜですか?



仕様を作成する際、このプロトコルの主題について合意に達しませんでした。 多くの人が反対しました。 これ以前は、TLSは必須ではありませんでした。



人々は異議をさまざまな方法で説明しました。



1.交通追跡の必要性


トラフィックを追跡する必要がある場合があると言う人もいます。 刑務所、学校、ウイルス対策プログラム、著作権保護、法的要件など さらに、キャッシングが必要な場合があります-飛行機や衛星などでちゃんと機能するインターネットを作ることはできません。 キャッシュなし、つまりトラフィックの傍受なし。



もちろん、SSLトラフィックに埋め込まれたMITMプロキシはまだ見つかっているため、HTTP / 2はそのようなメカニズムを制限するためにほとんど何もできません。



2.子供たちを覚えている


「ミニチュアデバイスは、暗号化の追加の負担に対処できません。」 CPUの負荷のため、または定期的に古くなる証明書の束を処理する必要があるためです。



3.証明書は高価です


証明書のコストは、HTTP / 2に関係なく、TLSに対する議論として常に引用されてきました。 現在、無料または安価な証明書を提供するCAがあり、将来的にletsencrypt.comのようなイニシアチブはさらに簡単になります。



4. CAシステムが機能していない


今日、TLSは、証明書に署名する組織がある公開鍵インフラストラクチャを必要とします。 その結果、ブラウザは数百の組織を信頼しています。 誰もがそれを好むとは思いませんし、これが最高のセキュリティソリューションだと思います。 この問題はDANE(DNSSEC)で解決すべきだと考える人もいれば、証明書の透明性OCSPなどのパッチに取り組んでいる人もいます。



個人的には、TLSが完全ではないため拒否することは弱い議論だと思います。 サイトをセキュリティで保護する方法は、TLSとHTTPSよりも優れています。 私はこれらの方法を改善することに反対していませんが、TLSに代わる次世代の最適なプロトコルを思い付くまで、安全でないチャネルを介してすべてを行うことはしません。



「日和見的セキュリティ」はどうですか?



IETFは現在、この機能のプロトコルへの導入に取り組んでいます。 HTTP / 2ドラフトにも含まれていましたが、簡単にするためにそこから削除しました。 いずれにせよ、メイン仕様に含める必要はありません。 さらに、誰もがこれを良い考えとは限りません。



現時点では、可能であれば、HTTP / 2仕様以外のHTTPのセキュリティが開発されています。 これにより、クライアントは通常のTCP接続を「無許可TLS」にアップグレードできます。 はい。もちろん、そのような接続を安全なものとして指定する必要はありません。「ロックアイコン」やその他のセキュリティインジケータは表示されません。



Firefoxは、バージョン37以降、デフォルトでHTTPのこのような接続のサポートを有効にします。



All Articles