gpt4 book ai didi

客户端通过身份验证时的安全性和 TLS 握手

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:24 28 4
gpt4 key购买 nike

在配置了客户端身份验证的 TLS 握手中,有一个步骤,服务器接收客户端的证书并选择是否信任它(例如,在 Java 中,它是通过 TrustManager 完成的)。

我想知道来自服务器的最终“信任失败”消息是在服务器确保客户端确实拥有该公钥之前还是之后发送的(例如,通过首先从握手中接收一些编码为客户端的私钥)。

我的问题的目的是看看第三方是否可以通过伪装成这个客户端并使用他的公钥来检查服务器是否信任客户端。

注意:当在具有特定安全要求的上下文中使用 TLS 时,风险是真实存在的。例如,假设一个 P2P 应用程序在对等点之间使用 TLS,并使用 TrustManager 作为从他的联系人列表中验证对等点的方法。此联系人列表应该是私有(private)的。 ISP 可以列出与节点通信的 IP,然后通过与它启动 TLS 握手来获取他的公共(public)证书,然后他可以尝试连接 IP 列表中的每个其他节点。最终,ISP 可以获得本应保密的联系人列表的很大一部分。

最佳答案

OpenSSL 也会在收到客户端证书消息后立即验证客户端证书。

但正如 Eugene 所说,如果服务器发送有意义的警报,那么您是立即发送 bad_certificate 还是仅在验证 Certificate Verify 消息中的签名后才发送都没有关系。这只会阻止某人在他们另外发送格式错误的签名(例如使用错误的 key )时发现证书是否可信。但是,如果服务器是以这种方式实现的,那么您所要做的就是使用您刚刚生成的私钥签署您的证书验证消息。然后签名将有效,然后服务器将尽职地验证您发送的证书,显示与以前相同的信息。

要缓解这种情况,您实际上必须使用一个定制的服务器,它根本不发送相应的警报,而是发送一些不那么暴露的东西。

关于客户端通过身份验证时的安全性和 TLS 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6888858/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com