為什麼我的私鑰的 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 中的指紋——它們的主要用途是要共享的短字串。

相關內容