サーバ証明書の検証について

しょうゆさん  
(No.1)
サーバ証明書の検証では、
証明書に書かれたドメイン名とブラウザに入力されたURLのドメイン名が一致する場合に、接続先のサーバを信頼すると見たのですが、こちらに関して質問があります。

例えば、example.comにアクセスするとします。
このとき、DNSキャッシュポイズニングにより、example.comではなく攻撃者のサーバに誘導されてしまった、かつ、
攻撃者がexample.comのサーバ証明書を送ってきた※1 とすると、サーバ証明書の検証では接続先サーバが正しいかはわからないと考えているのですが正しいですか?

※1 TLSハンドシェイクの時にexample.comのサーバ証明書が送られてくるので、誰でも入手することができるのではないかと考えた上での仮定です。

なにか認識が間違っていることなどがあればご指摘お願いいたします。
2024.08.20 16:41
pixさん 
SC ダイヤモンドマイスター
(No.2)
>※1 TLSハンドシェイクの時にexample.comのサーバ証明書が送られてくるので、
>誰でも入手することができるのではないかと考えた上での仮定です。
理屈の上ではその認識であっているはずです。
しかし、その後の鍵交換の段階で、サーバからクライアントに対して
デジタル署名を送ります。その際に、本物の秘密鍵がないため、
正規のデジタル署名を作成することができず、TLSセッションの接続に
失敗するはずです。

このあたりの処理は複雑で、ネットでも深い解説がなく、また、TLSのバージョンや
鍵交換プロトコルでも挙動が変わります。
しかし、一貫していえることは、本物のサーバ証明書だけあっても、本物の
秘密鍵がないため、TLS通信は正常に行えないということです。

ここから導き出せる証明書技術の要点ですが、
・秘密鍵が確実に秘匿されていることにより、証明書の安全性は担保されている
・そのため秘密鍵が外部に流出した途端、証明書の安全性は無効になる
この点を押さえておくことが重要です。
2024.08.20 17:56
しょうゆさん  
(No.3)
早速のご回答ありがとうございます!
調べても中々納得のいく記述が見つからなかったのですが、pixさんの解説を見てやっと理解が進みました。

ここらへんはかなり複雑なのですね、、、試験が終わったらゆっくり理解してみることにします。
本当にありがとうございました。
2024.08.20 18:08

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop