Firefox Nightlyに実装された暗号化されたSNI標準

Firefoxは、 TLSサーバー名表示(SNI)暗号化を実装した最初のブラウザーです。 ESNIサポートは、Firefox Nightlyの最新バージョンで導入されました。FirefoxNightlyでは、すべての革新がメインブランチに追加される前にロールインされます。



この標準の重要性は 1か月前にCloudflare CDNプロバイダーによって議論されました 。 要するに、ESNIはリクエストを送信しているドメインに関する情報を暗号化します。 標準HTTPSでは、ドメイン名のヘッダーは暗号化されず、プロバイダーまたは別の「中間者」が表示できます。 これで、IPアドレスのみが表示されます。 現代のインターネットでは同じIPアドレスに何百ものドメインを配置できるため、ESNIはユーザーがログインするドメインに関する情報を事実上隠します。



したがって、名前によるブロックは機能しなくなり、インターネット検閲は非常に複雑になります。 検閲者はIPアドレスをブロックする必要がありますが、これは疑わしい習慣です。 このようなブロックは無関係なサイトに影響を与える可能性があり、ブロックされたサービスは簡単に(自動的に)別のIPアドレスに切り替えることができます。



通常のTLS SNIでホスト名が輝くのはなぜですか? 実際、暗号化を開始する前に、サーバーは、必要な証明書を提示するために、クライアントがアクセスしているドメインを知る必要があります。 このため、ホスト名はクリアテキストで送信されます( Cloudflareブログの図の下)。







暗号化されたSNI(ESNI)では、この問題は次のように解決されます。クライアントはDNSからサーバーの公開キーを取得し、TLSセッションが確立されるまですべてのデータを暗号化します。





Firefox Nightlyのブラウザーサポートは、ESNIがそれをサポートするすべてのサイト/プロバイダーで動作することを意味します。



Mozilla開発者は、閲覧履歴を漏らす主な4つの方法があると説明しています。



  1. TLS証明書メッセージ
  2. DNS名前解決
  3. サーバーのIPアドレス
  4. TLSサーバー名の表示。


これまでのところ、彼らは最初の2つの漏洩チャネルを閉じることで大きな進歩を遂げました:新しいTLS 1.3標準はデフォルトのサーバー証明書(チャネル1)を暗号化し、過去数か月間、MozillaはDNSトラフィック(チャネル2)を保護するためのDNS over HTTPSの使用を研究してきました 。 テスト結果は悪くなく、今後数か月ですべてのFirefoxユーザー向けに機能が展開されます。 IPアドレスは問題のままですが、多くの場合、複数のサイトが同じIPアドレスを共有しているため、主な漏洩チャネルはSNIです。



かつて、複数のホストが同じIPアドレスに配置されていたため、サーバー名表示(SNI)テクノロジーが使用されるようになりました。 この場合、SNIフィールドは、接続しようとしているホストをサーバーに通知し、正しい証明書を選択できるようにします。 つまり、SNIは大規模なTLSホスティングの動作を保証するのに役立ちます。 つまり、この機能はセキュリティのために導入されたものであり、今度はデータ漏洩チャネルとして扱う必要があります。



SNIの問題は長い間知られており、Mozilla開発者は書いており、このフィールドを暗号化する必要があることは明らかでした。 しかし、彼らが試みたすべてのデザインには、パフォーマンスの妥協が含まれていました。 もう1つの重要な欠点がありました。特定のサイトがESNIに切り替わっているという事実は、「非表示にするものがあった」という信号でした。 最終的に、ESNIなしでTLS 1.3標準をリリースすることが決定されました。



2018年の初めにのみ、開発者は非常に良いオプションがあることに気付きました。大規模なコンテンツ配信ネットワーク(CDN)が同じ物理サーバー上で多くのサイトをホストしています。 すべてのクライアントを一度にESNIに転送することに同意した場合、ESNIは突然、攻撃者にとって有用なシグナルではなくなります。 したがって、既存のサーバーセットの多くのサイトを大量にカスタマイズすることにより、TLS 1.3でESNIを実装することが可能になりました。



ESNIは完全に新しいテクノロジーであり、Firefoxはそれを実装した最初のブラウザーです。 Firefox Nightlyで有効にするには、次の手順を完了する必要があります。



  1. DNS over HTTPS (DoH)が有効になっていることを確認します。

    • about:config



    • network.trr.mode



      を2に設定します



    • network.trr.uri



      をDoHサーバーに設定します(たとえば、 https://mozilla.cloudflare-dns.com/dns-query



      )。



    • about:config



    • network.security.esni.enabled



      true



      設定しtrue









これにより、ESNIをサポートするすべてのサイトでESNIが自動的に有効になります。 現時点では、大規模なホスティング事業者とCDNのうち、これはCloudflareのみですが、Firefox開発者は他のプロバイダーがすぐに接続することを望んでいます。 このリンクで暗号化を確認してください







Mozillaは今後数か月で、ESNIがさまざまな種類のファイアウォールやその他のネットワークデバイスとどのように相互作用するかをテストします。 暗号化をオンにして何かが壊れた場合は、バグトラッカーを通じて開発者に通知してください。









All Articles