好的,为了便于沟通,我将参考这张图片x1c 0d1x好的,服务器发送一个公钥,客户端用它来加密自己的证书信息,然后发送回服务器。我不明白的是,为什么攻击者不能从第4步截取数据包,然后用它发送到服务器来模拟客户端。他们不必知道里面的信息或解密它。如果攻击者得到了数据包,保存它,它们可以在服务器请求客户端证书时将这些字节发送到服务器。我不知道这种加密方法如何防止这种类型的攻击。再说一次,我在套接字级加密方面完全是个菜鸟,所以我可能错过了一些重要的东西。谢谢!
roejwanj1#
事情比这更复杂,这张图有一些缺陷,混合了本地存储的东西和交换的东西。请查看https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake,特别是“客户端身份验证TLS握手”案例。总而言之:
CertificateRequest
Certificate
CertificateVerify
因此,只要私钥保持私有,攻击者就不能通过窃取证书来冒充客户端(在另一种情况下,为了验证服务器,也存在同样的保护措施)。如果私钥被窃取,以上所有操作都将失败。在这一点上不需要理解密码签名的所有细节,只是系统以这样的方式设计,即由密钥之一加密的所有内容只能由另一个密钥解密:如果某人用其私钥加密数据,那么任何人都可以用其公钥(根据定义,公钥是公开的;一般来说,你只需要分发它,但这里没有,因为公钥包含在证书中,证书是在握手之前交换的);当然,这对于保密性是无用的(任何人都可以看到加密的内容),但是这是认证的基础,因为如果解密工作,则意味着发送者具有与用于解密该内容的公共密钥相关联的私有密钥。请注意,随着TLS 1.3作为一个新标准刚刚推出,TLS交换中消息的数量和性质略有变化,但上述加密保证(用私钥对某些内容进行签名,以便远程方可以使用关联的公钥进行双重检查)仍然有效。
wdebmtf22#
除了Patrick's应答之外,在mTLS过程中还比较时间戳。如果传入的时间戳超出了某个限制,则会放弃会话,因此您截获的数据包将变得无用。请https://en.wikipedia.org/wiki/Mutual_authentication#Defenses。
2条答案
按热度按时间roejwanj1#
事情比这更复杂,这张图有一些缺陷,混合了本地存储的东西和交换的东西。
请查看https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake,特别是“客户端身份验证TLS握手”案例。
总而言之:
CertificateRequest
)Certificate
消息进行回复CertificateVerify
消息,该消息是在握手中先前交换的TLS消息上计算的签名,使用与客户端证书关联的私有密钥因此,只要私钥保持私有,攻击者就不能通过窃取证书来冒充客户端(在另一种情况下,为了验证服务器,也存在同样的保护措施)。如果私钥被窃取,以上所有操作都将失败。
在这一点上不需要理解密码签名的所有细节,只是系统以这样的方式设计,即由密钥之一加密的所有内容只能由另一个密钥解密:如果某人用其私钥加密数据,那么任何人都可以用其公钥(根据定义,公钥是公开的;一般来说,你只需要分发它,但这里没有,因为公钥包含在证书中,证书是在握手之前交换的);当然,这对于保密性是无用的(任何人都可以看到加密的内容),但是这是认证的基础,因为如果解密工作,则意味着发送者具有与用于解密该内容的公共密钥相关联的私有密钥。
请注意,随着TLS 1.3作为一个新标准刚刚推出,TLS交换中消息的数量和性质略有变化,但上述加密保证(用私钥对某些内容进行签名,以便远程方可以使用关联的公钥进行双重检查)仍然有效。
wdebmtf22#
除了Patrick's应答之外,在mTLS过程中还比较时间戳。如果传入的时间戳超出了某个限制,则会放弃会话,因此您截获的数据包将变得无用。
请https://en.wikipedia.org/wiki/Mutual_authentication#Defenses。