Warum ist der RSA-Fingerabdruck für meinen privaten Schlüssel derselbe wie für meinen öffentlichen Schlüssel?

Warum ist der RSA-Fingerabdruck für meinen privaten Schlüssel derselbe wie für meinen öffentlichen Schlüssel?

Diese beiden sind identisch. Warum? Ich dachte, der RSA-Fingerabdruck ist die Ausgabe einer Hash-Funktion, was bedeutet, dass zwei unterschiedliche Eingaben (der private und der öffentliche Schlüssel) zu zwei unterschiedlichen Ausgaben führen sollten.

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

Antwort1

Ein Fingerabdruck wird als Hash berechnet, aber nicht durch blindes Hashen der Eingabedatei – das Protokoll gibt normalerweise genau anwelcheTeile eines Schlüssels zum Hashen und in welcher Reihenfolge. (Und das kann zwischen den Protokollen unterschiedlich sein: Ein SSHv2-Pubkey hat einen anderen Fingerabdruck als ein PEM-Pubkey, selbst wenn sie absolut identische RSA-Parameter enthalten.)

Überall gilt die Regel, dass der Fingerabdruckstetsbasiert auf dem Hashen nur des öffentlichen Teils; das ist nützlicher. Da der öffentliche Schlüssel immer aus der privaten Schlüsseldatei abgeleitet werden kann (die in Wirklichkeit alle öffentlichen und privaten Parameter enthält), bedeutet dies, dass Sie immer den richtigen Fingerabdrucktyp berechnen.

Wenn der erste Befehl beispielsweise einen anderen Fingerabdrucktyp anzeigt (einen, den nur Sie berechnen können), wäre dieser völlig nutzlos, wenn Sie ihn beispielsweise an einen Systemadministrator weitergeben, der Ihren Schlüssel auf einem Server installiert. Dasselbe gilt für Fingerabdrücke in X.509 und PGP – ihr HauptzweckIstes soll eine kurze Zeichenfolge sein, die gemeinsam genutzt werden kann.

verwandte Informationen