次の宛先にHTTPリクエストを送信した場合:
https://hello.domain.com
接続はドメインアドレスも暗号化しますか(hello.domain.com
)?そのため、トラフィックをスニッフィングしても、要求されたDNSアドレスが何であるかを推測することは不可能です。
注:解決されたIPアドレスではなく、DNSアドレスについて話しています。
番号。
Webブラウザがexample.com
などのホストのIPアドレスを判別するには、DNSでそれを検索する必要があり、個別の接続は暗号化されません。
したがって、SSL/TLSは悪意のあるISPから完全に保護するわけではありません。このような攻撃者は、実際のデータを読み取ることができなくても、Webブラウザーがアクセスしたいサイトを特定できます。
さらに、現在のTLS実装は、 Server Name Indication をサポートするために、サーバーの完全修飾ドメイン名を常にクリアテキストで送信します。したがって、悪意のあるISPはDNSクエリを調べる必要さえありません。
いいえ、IPアドレスは暗号化されません。
郵便局/封筒バージョンを使用して簡単な例を書くつもりでしたが、DNS/HTTPSの場合だけこれがより混乱することに気づきました。
http://www.tcpipguide.com/free/t_IPDatagramEncapsulation.htm を参照して、カプセル化について理解することができます。
以下の画像では、例を使用すると、上位層のメッセージのみが暗号化されます。他のすべての層は暗号化されていません。
SSL/TLSは、ハンドシェイク中に暗号化されていないホスト名(URLではなく)を送信します。 URL( https://domainname.com/bla bla bla ...)は暗号化されています。
ただし、スニファは常にIPおよびポート情報を取得できます。これがないと、パケットを配信できません。
完全な暗号化が必要な場合は、適切なDNS設定でVPNトンネルを使用することを検討する必要があります。これにより、少なくともローカルネットワークのスニファから保護されます。
Httpリクエストは次のようになります。
GET /index.html HTTP/1.1
Host: www.domain.com
リクエストを送信するには、ブラウザは最初にドメイン名を解決する必要があります(この場合はwww.domain.comのIPアドレスを取得する必要があります)。IPアドレスに接続してリクエストを送信します。 httpsを使用している場合、リクエストのコンテンツは暗号化され、盗聴することはできません。ただし、DNSサーバーへのクエリは暗号化されないため、閲覧しているサイトを検出できます。 HTTPプロキシまたはVPNを使用してhttpサイトを閲覧している場合、ブラウザはDNSクエリを送信しないため、閲覧しているサイトを特定したり、トラフィックを盗聴したりすることはできません。