秘密鍵の RSA フィンガープリントが公開鍵と同じなのはなぜですか?

秘密鍵の RSA フィンガープリントが公開鍵と同じなのはなぜですか?

これら 2 つは同一です。なぜでしょうか? RSA フィンガープリントはハッシュ関数の出力であり、2 つの異なる入力 (秘密鍵と公開鍵) から 2 つの異なる出力が得られるはずだと考えていました。

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 公開キーは、完全に同一の RSA パラメータが含まれている場合でも、PEM 公開キーとは異なるフィンガープリントを持ちます。)

どこでも一般的なルールは、指紋はいつも公開部分のみのハッシュに基づいています。その方が便利です。公開キーは常に秘密キー ファイル (実際には公開と秘密のすべてのパラメータを保持) から派生できるため、常に正しいタイプのフィンガープリントを計算できます。

たとえば、最初のコマンドが別の種類の指紋(あなただけが計算できるもの)を示した場合、サーバーにキーをインストールしているシステム管理者などと共有することはまったく役に立たないでしょう。同じことがX.509とPGPの指紋にも当てはまります。これらの主な目的は、共有される短い文字列になります。

関連情報