我了解如何通过数字签名实现不可否认性和完整性,但这是我尚未掌握的身份验证。
我正在用 C# 开发一个客户端-服务器应用程序,它应该能够使用数字证书和数字签名进行身份验证。我知道如何检查签名的有效性和完整性(使用 SignedCms.CheckSignature()),但这如何验证所涉及的任何部分?
例如:
- 客户端向服务器请求数字签名,
- 客户端收到签名并验证它,
- 如果验证成功,请继续。
客户端可能是中间人攻击的受害者,并在步骤 2 中接收到有效签名。验证会成功,但客户端不会与正确的服务器通信。
我错过了什么?