为什么我的私钥的 RSA 指纹与公钥相同?

为什么我的私钥的 RSA 指纹与公钥相同?

这两个是相同的。为什么?我以为 RSA 指纹是哈希函数的输出,这意味着两个不同的输入(私钥和公钥)应该导致两个不同的输出。

user$ ssh-keygen -lf ~/.ssh/id_rsa
2048 SHA256:zZ2qBu6JGxlTWnLUUDU4UFl8uzLPCoi8ze1BPII/Uhc etc etc

user$ ssh-keygen -lf ~/.ssh/id_rsa.pub 
2048 SHA256:zZ2qBu6JGxlTWnLUUDU4UFl8uzLPCoi8ze1BPII/Uhc etc etc

答案1

指纹是通过哈希值计算出来的,但它不是通过对输入文件进行盲目哈希计算得出的——协议通常会准确指定哪个密钥的哪些部分需要进行哈希处理以及按照什么顺序进行哈希处理。(这可能因协议而异:即使 SSHv2 公钥和 PEM 公钥包含完全相同的 RSA 参数,它们的指纹也会不同。)

普遍的规则是指纹是总是仅基于对公共部分进行哈希处理;这样更有用。由于公钥始终可以从私钥文件(实际上包含所有参数,包括公共和私有)中派生,这意味着您将始终计算出正确的指纹类型。

例如,如果第一个命令显示了不同类型的指纹(只有您可以计算的指纹),那么对于与在服务器上安装密钥的系统管理员共享来说,它将完全无用。这同样适用于 X.509 和 PGP 中的指纹 - 它们的主要用途是一个要共享的短字符串。

相关内容