是否可以广泛共享主机的 RSA 密钥指纹?

信息安全 哈希 公钥基础设施 SSH
2021-09-06 14:46:48

当您第一次 ssh 进入远程框时,或者如果远程主机的密钥指纹已更改(从您 known_hosts 文件中存储的内容),您会收到警告,并且会显示主机密钥的指纹。

如果您公开(即与潜在的攻击者)共享指纹,是否会危及您的安全?或者在这种情况下,每个人都可以知道服务器的指纹,因为 ssh 在幕后做了一些事情(从我作为一个简单用户的角度来看),这样指纹就不会被欺骗,即使它是已知的?

由于您可以通过尝试使用无意义的帐户 ssh 进入服务器来查看指纹,因此我认为这意味着指纹应该可以公开共享(但您知道当您假设时会发生什么......)。

2个回答

服务器密钥指纹是服务器公钥的散列,根据定义,它是公开的。任何人都可以通过简单地连接到服务器来获取服务器的公钥,因为服务器在协议的初始步骤中发送了它的公钥。事实上,这正是你对 SSH 客户端所做的事情:连接到服务器,服务器发送它的公钥,你的 SSH 客户端软件计算密钥哈希(指纹)并显示它。那时,您还没有验证自己,所以您所做的一切,任何人都可以做到。

因此,发布密钥指纹没有问题,因为任何可能的攻击者都已经拥有它。

当然,发布密钥指纹并将其用作服务器身份验证的基础需要稳健的发布:意图进行中间人攻击的勤奋攻击者会尝试更改您所看到的已发布指纹,从而诱导您接受真实的伪造服务器密钥。因此,如果您在网站上发布服务器的公钥,请将其设为 HTTPS网站。(换句话说,对于这个指纹,你不需要机密性,但你需要完整性。)

是的,指纹只是公钥的散列,用于对其进行身份验证。对手将需要私钥来解密您的消息。从可用信息中获取私钥需要:

  1. 一个不抗原像的散列函数(有些人可能不认为这是一个真正的散列函数)。
  2. RSA 坏了

维基百科在这里显示公钥指纹

这是一个公平的问题,但是,SSH 并没有说它是公钥的指纹。