web-dev-qa-db-ja.com

SSL / TLSエンティティの識別

SSL/TLSには、最初のハンドシェイクに何らかの形式のIDが含まれているため、攻撃者は、自分が他人であると主張して証明書を放棄することはできませんか?ウィキペディアはそうは言っていませんでしたが、サーバー証明書の公開鍵がこれに使われることがあるのではないかと思いました。または、攻撃者は秘密鍵なしではハンドシェイクを完了できないため(したがって、鍵交換を完了してHMACのような認証用の対称鍵を生成できないため)、これが想定されますか?

1
dylan7

証明書の目的はIDを確立することであるため、証明書が送信される前にIDを実行する方法はありません。では、証明書を受け取る前にサーバーのIDを確立できるとしたら、サーバーに対して証明書を検証する意味は何でしょうか。これは実際には別のポイントです。証明書はドメイン用であるため、クライアントは、証明書内のドメインが接続先のドメインと一致することを常に確認する必要があります。したがって、技術的には、HTTPS経由でevil.comに接続しようとして、google.comの証明書を受け取った場合、証明書を検証するべきではありません(実装ではこのチェックが省略されることが知られています!!)。そして、あなたが言ったように、あなたはあなた自身のものではない証明書を送ることができます、そしてクライアントがこの証明書を(間違って)検証するなら、クライアントはその証明書に含まれる公開鍵で暗号化された秘密を攻撃者に送ります。秘密鍵がないため、攻撃者はこのデータを復号化できません。この時点で、攻撃者はクライアントが送信したシークレットから対称鍵を取得できず(シークレットを復号化できないため)、その結果、クライアントから送信されたトラフィックを復号化できません。

2
puzzlepalace