如果 MITM 拥有您的公钥并且您正在通过 MITM 进行 SSH-ing,那么它可以进行的最大攻击是多少?

信息安全 网络 公钥基础设施 中间人
2021-09-10 04:59:44

首先,让我先说我并没有试图破解任何人或任何东西(如果我知道的话,我不会知道如何或从哪里开始)。

为了便于说明,我们称主密钥所有者A为“好”公钥持有者GOOD,而称“邪恶”为 MITM 公钥持有者BAD

此外,假设此 MITM 在您的 ISP 中,并且您尝试通过主机名与 IP 进行连接(即,MITM 可以告诉您您的意思是连接到其 IP)。

在我看来,A连接到GOODA连接到之间的差异为零BAD,假设它的BAD行为GOOD足以说服A他实际上连接到GOOD(例如,与 保持 SSH 连接A等)。这将给BAD传入的一半对话(根据上下文,这可能对 有很大的价值BAD)。

上面的假设是真的吗?

4个回答

使用 SSH,服务器密钥对实际上用于签名:服务器向客户端发送一条数据并对其进行签名通过验证签名,客户端可以确保该数据确实来自预期的服务器。该“数据”包含服务器刚刚生成的Diffie-Hellman 公钥,客户端使用它来进行加密密钥交换。

要成功进行中间人攻击,攻击者必须要么获得 DH 私钥(但运气不好;服务器保留它,并且从公共对应方重建它太昂贵而无法实际完成使用实际技术),或者向客户端提供攻击者知道其私有部分的假 DH 公钥。但是客户端不会接受来自攻击者的伪造 DH 公钥,因为该伪造不会使用与服务器公钥对应的签名(“永久”公钥,而不是 DH 公钥)进行签名。

简而言之,每个人都知道公钥;它是公开的。如果攻击者知道公钥,这不是问题。如果客户端知道服务器的公钥,则会出现问题,因为在这种情况下,客户端将无法验证来自服务器的签名。如果没有这个验证,客户端就可以被攻击者用伪造的DH包盗用,MitM攻击就成功了。

客户端通过记住它来“知道”服务器公钥这就是与服务器的第一次连接至关重要的原因:此时,客户端还不知道真正的服务器公钥。客户端应该通过(例如)打电话给服务器系统管理员来验证密钥指纹。


所有这一切都依赖于非对称密码学的魔力:

  • 您可以使用公钥验证签名,但生成新签名需要知道私钥,并且(实际上)不能从公钥中推导出私钥。

  • DH 密钥交换包括公开交换的消息,发送方和接收方最终就通过处理这些消息获得的“共享秘密”达成一致,但观察这些消息的人无法重新计算相同的秘密。

涉及数学。

如果他们只有您的公钥,那么如果使用加密,他们将无能为力,因为他们将无法像您一样进行通信。

这就是为什么它被称为公共的。. . 每个人都可以拥有您的公钥的副本。他们用你的公钥加密的任何东西都只能用你的私钥解密,反之亦然。

在非对称密码学中,每个人都有公钥,只有被公钥验证的实体才有私钥。公钥和私钥的关联方式是,拥有公钥不会透露任何关于私钥的信息,但私钥持有者可以通过让某人使用公钥验证质询来证明他们的身份。

基本上,用公钥加密的东西只能用私钥解密,用私钥加密的东西只能用公钥解密。

为了证明服务器是他们声称的身份,他们用他们的私钥(只有他们拥有)加密挑战,并且使用公钥来验证挑战可以被解密,因此对方拥有私钥。

为了安全地与服务器通信,公钥用于加密对称会话密钥。该会话密钥使用公钥加密并发送到服务器。只有有效的服务器(拥有私钥)才能解密会话密钥,因此只有客户端(创建会话密钥)和拥有私钥的服务器才能进行通信。

客户端信任公钥,因为它同样由浏览器中包含的根证书颁发机构签名。

更新:我将问题误读为 SSL,而不是 SSH。基本思路还是大致相同,但是服务器证书通常不会由 CA 签名,在这种情况下,需要在第一次手动验证证书之后,您的客户端应该跟踪您上次连接的人. 密钥交换在如何商定密钥方面也有所不同,但我不知道 SSH 握手以及我知道 SSL,所以请参阅 Thomas Pornin 的答案。

由于它是最新的,因此您必须考虑其他一些事情。没有端点控制的 MITM 是一回事,而且非常安全(减去某些国家恐怖分子的弱点),仍然不能解释最有效的 MITM,即如果他们可以访问您未加密的服务器,游戏结束。他们可以复制私钥,并执行 MAN-AT-THE-END 而不是 MITM 攻击,这是 100% 有效的,如检查 MATE。