web-dev-qa-db-ja.com

SSLはDNSアドレスも暗号化しますか?

次の宛先にHTTPリクエストを送信した場合:

https://hello.domain.com

接続はドメインアドレスも暗号化しますか(hello.domain.com)?そのため、トラフィックをスニッフィングしても、要求されたDNSアドレスが何であるかを推測することは不可能です。

注:解決されたIPアドレスではなく、DNSアドレスについて話しています。

6
Mark

番号。

Webブラウザがexample.comなどのホストのIPアドレスを判別するには、DNSでそれを検索する必要があり、個別の接続は暗号化されません。

したがって、SSL/TLSは悪意のあるISPから完全に保護するわけではありません。このような攻撃者は、実際のデータを読み取ることができなくても、Webブラウザーがアクセスしたいサイトを特定できます。

さらに、現在のTLS実装は、 Server Name Indication をサポートするために、サーバーの完全修飾ドメイン名を常にクリアテキストで送信します。したがって、悪意のあるISPはDNSクエリを調べる必要さえありません。

11
Michael Hampton

いいえ、IPアドレスは暗号化されません。

郵便局/封筒バージョンを使用して簡単な例を書くつもりでしたが、DNS/HTTPSの場合だけこれがより混乱することに気づきました。

http://www.tcpipguide.com/free/t_IPDatagramEncapsulation.htm を参照して、カプセル化について理解することができます。

以下の画像では、例を使用すると、上位層のメッセージのみが暗号化されます。他のすべての層は暗号化されていません。

Datagram Image

4
Wayne

SSL/TLSは、ハンドシェイク中に暗号化されていないホスト名(URLではなく)を送信します。 URL( https://domainname.com/bla bla bla ...)は暗号化されています。

ただし、スニファは常にIPおよびポート情報を取得できます。これがないと、パケットを配信できません。

完全な暗号化が必要な場合は、適切なDNS設定でVPNトンネルを使用することを検討する必要があります。これにより、少なくともローカルネットワークのスニファから保護されます。

1
John Siu

Httpリクエストは次のようになります。

GET /index.html HTTP/1.1
Host: www.domain.com

リクエストを送信するには、ブラウザは最初にドメイン名を解決する必要があります(この場合はwww.domain.comのIPアドレスを取得する必要があります)。IPアドレスに接続してリクエストを送信します。 httpsを使用している場合、リクエストのコンテンツは暗号化され、盗聴することはできません。ただし、DNSサーバーへのクエリは暗号化されないため、閲覧しているサイトを検出できます。 HTTPプロキシまたはVPNを使用してhttpサイトを閲覧している場合、ブラウザはDNSクエリを送信しないため、閲覧しているサイトを特定したり、トラフィックを盗聴したりすることはできません。

1
FINESEC