SSLを使用してDNSスプーフィングをどのように保護しますか? DNSは下位レベルにあり、ユーザーがHTTPサイトとHTTPSサイトのどちらを訪問しても、常に同じように機能するためです。
自分が制御するIPを使用して、securesite.comのDNSキャッシュをポイズニングできたとします。これで、クライアントが https://securesite.com にアクセスすると、IPアドレスに解決されます。 SSLハンドシェイクプロセスの一環として、サーバーは、公開鍵を含むsecuresite.comの有効な証明書を送信する必要があります。
この時点で、2つのオプションがあります。
1)正当な証明書を送信します。証明書は信頼できるCAによって署名されているため、これがチェックアウトされます。次に、クライアントは公開鍵を使用してマスターシークレットを暗号化します。秘密鍵がないとマスターシークレットを復号化できず、接続設定を完了できないため、この時点で機能しなくなります。
2)自己署名証明書を送信します。ただし、信頼できるCAによって署名されていないため、クライアントのブラウザに警告が表示されます。クライアントがとにかく続行することを選択した場合、攻撃は正常に実行されました。
DNSスプーフィングは、クライアントが警告サインを無視することを選択した場合、またはサイトの秘密鍵を取得できた場合を除いて、HTTPS Webサイトでは通常機能しません。
サイトをDNSスプーフィングし、管理しているサーバーにユーザーをリダイレクトするとします。それは可能ですが、ユーザーがサイトのhttpsバージョンにアクセスする場合、なりすましのサイトの秘密sslキーがないため、被害者が偽のサイトとのssl接続を確立できないため、おそらく役に立たないでしょう。
同様の方法の代替方法は、sslstripとdns2proxyを使用することですが、それは別のトピックです。