什么是 ssh 中的服务器指纹?

信息安全 SSH
2021-09-11 18:41:24

是否与 RSA 中的公钥相同,只是它们使其更适合自签名主机?当我们的 ssh 客户端呈现给我们时,幕后会发生什么?

1个回答

“指纹”是服务器公钥的散列。它不是公钥本身;然而,散列函数使得实际计算具有相同指纹的两个公钥是不可行的。因此,如果您想知道您是否正在与正确的服务器(而不是某个冒充者)交谈,那么您“只”需要计算服务器的密钥指纹(从服务器刚刚发送给您的公钥)并进行比较带有“参考指纹”。

使用指纹是因为它们足够小,可以由人类管理:检查指纹需要验证 40 个十六进制字符;这不是你想每天做十次的事情,但它是可行的。当 SSH 客户端出示指纹时,它从服务器收到了公钥,并注意到这是一个新的服务器,该客户端从未遇到过,因此无法将服务器的公钥与已知值和预期值进行比较. 客户端由此计算出指纹,并显示给用户,从而用户完成验证业务。

您仍然需要一个“参考指纹”来比较客户端计算和打印的指纹。例如,您可以给预期的服务器的系统管理员打电话,让他​​通过电话拼出指纹。这样,您仍然可以在前往两个大陆以外的会议期间连接到您的主要实验室机器,并使用另一位友好研究人员的笔记本电脑(因为您自己的笔记本电脑在您下飞机时摔坏了) .