歌词
通常,人们说,在多台服务器上使用单个公钥与在每台服务器上使用唯一的公钥一样安全。(如果我们不讨论私钥被泄露的可能性)
但是......我不明白,在以下情况下是否有可能“欺骗你的身份验证”:
先决条件
假设你是一个幸福的拥有者PC-1. 还有一个服务器-1和服务器-2,并且他们共享同一个公钥。服务器-1意识到存在服务器-2,但你不想服务器-1管理员能够窃取你的数据服务器-2。
那么,这里出了什么问题:
- PC-1尝试连接到服务器-1...
- 服务器-1提供PC-1和服务器-1的指纹(已知且值得信赖)
- 服务器-1“隧道”身份验证请求来自PC-1到服务器-2
- 服务器-2回复服务器-1(发送“挑战”)
- 服务器-1隧道挑战PC-1
- PC-1认为“挑战”是由服务器-1
- PC-1使用私钥解决挑战并将签名发送给服务器-1
- 服务器-1使用获得的签名来验证自己的身份服务器-2
附言:
答案1
来自OpenSSH 手册,我们在第 15.10.3 节中有这样的内容:
SSH 使用密钥指纹系统在客户端连接时验证服务器的真实性。仅在首次连接时提示用户输入“是”。以后的登录尝试均根据保存的指纹密钥进行验证。如果保存的指纹与将来登录尝试时收到的指纹不同,SSH 客户端将提醒您。
因此,如果您以前登录过 Server-2,那么 Server-1 上的攻击者就会被发现,因为客户端中存储的 Server-2 的指纹与 Server-1 所呈现的指纹不匹配。
如果您以前没有登录过服务器 2,那么服务器 1 就有可能实施中间人攻击。如果您运行 ssh 客户端并使用一些选项告诉它不要检查服务器指纹,也可能会发生这种情况,但您必须特意这样做。
答案2
我已经回答了自己的问题在 security.stackexchange.com 上。
主要思想是 - 在 ssh v2 中,对称加密的共享秘密也在身份验证期间进行验证,尽管这并不那么明显。