この問題に関連するドキュメントをたくさん読みましたが、まだすべてをまとめることはできないので、いくつか質問したいと思います。
最初に、私が理解している認証手順を簡単に説明しますが、その点で誤解される可能性があります。クライアントが接続を開始し、サーバーが公開鍵、メタデータ、デジタル署名の組み合わせで応答します。信頼できる機関。次に、クライアントはサーバーを信頼するかどうかを判断し、ランダムなセッション キーを公開キーで暗号化して送り返します。このセッション キーは、サーバーに保存されている秘密キーでのみ復号化できます。サーバーがこれを実行すると、HTTPS セッションが開始されます。
したがって、上記が正しければ、問題は、そのようなシナリオで中間者攻撃がどのように発生するかです。つまり、誰かが公開鍵でサーバー (例: www.server.com) の応答を傍受し、自分が www.server.com であると私に思わせる何らかの手段を持っていたとしても、彼は私のセッション鍵を解読することはできません。秘密鍵なし。
相互認証について言えば、クライアント ID に関するサーバーの信頼がすべてなのでしょうか? つまり、クライアントは適切なサーバーと通信していることをすでに確信できますが、サーバーはクライアントが誰であるかを知りたがっていますよね?
そして最後の質問は、相互認証の代替案についてです。上記の状況でクライアントとして動作する場合、SSL セッションが確立された後に HTTP ヘッダーでログイン/パスワードを送信するとどうなりますか? 私が見たところ、この情報は傍受できません。接続は既に保護されており、サーバーはそれを信頼して識別できるからです。私が間違っている?相互認証と比較して、このようなアプローチの欠点は何ですか (実装の複雑さではなく、セキュリティの問題のみが重要です)。