Was ist der Unterschied zwischen id_rsa.pub und id_dsa.pub?

Antworten:

64

id_rsa.pubund id_dsa.pubsind die öffentlichen Schlüssel für id_rsaund id_dsa.

Wenn Sie in Bezug auf fragen SSH, id_rsaist ein RSA- Schlüssel und kann mit dem SSH-Protokoll 1 oder 2 verwendet werden, während id_dsaes sich um einen DSA- Schlüssel handelt und nur mit dem SSH-Protokoll 2 verwendet werden kann. Beide sind sehr sicher, aber DSA scheint es zu sein der Standard in diesen Tagen (vorausgesetzt, alle Ihre Clients / Server unterstützen SSH 2).

Update: Seitdem dies geschrieben wurde, hat sich DSA als unsicher erwiesen. Weitere Informationen finden Sie in der Antwort unten.

Mike Pelley
quelle
Ich muss damit nicht einverstanden sein. Heute (und in geringerem Maße auch 2010, als dies veröffentlicht wurde) werden 1024 Bit (die größte für DSA verfügbare Schlüsselgröße) als zu schwach angesehen. Daher ist RSA die bessere Option. Zu SSH v1: Ich habe dies vor zehn Jahren nicht für sicher gehalten.
Adam Katz
3
@AdamKatz DSA unterstützt seit 2009 die Unterstützung von 2048-Bit- und 3072-Bit-Schlüsseln (gemäß FIPS 186-3 ). Die meisten SSH-Clients / -Server unterstützen größere DSA-Schlüssel, einschließlich OpenSSH und PuTTY. Die meisten Schlüsselgeneratoren unterstützen auch größere DSA-Schlüssel, ssh-keygen von OpenSSH jedoch immer noch nicht (obwohl sowohl ssh als auch sshd dies tun). Unter Linux können Sie mit OpenSSL größere DSA-Schlüssel generieren, wie in diesem Blogbeitrag beschrieben .
Mike Pelley
1
Interessant! Ich hatte das nicht gewusst, und das hilft sicherlich dabei, das Feld zwischen den beiden auszugleichen (obwohl der Mangel an OpenSSH-Unterstützung ziemlich verdammt ist). Trotzdem würde ich nicht sagen, dass DSA der Standard ist (entweder jetzt oder 2010), während RSA absolut ist (und wir auf elliptische Kurvensysteme wie Ed25519 umsteigen).
Adam Katz
45

SSH verwendet öffentliche / private Schlüsselpaare , ebenso id_rsawie Ihr privater RSA- Schlüssel (basierend auf Primzahlen), der sicherer ist als Ihr privater id_dsa DSA- Schlüssel (basierend auf Exponenten). Bewahren Sie Ihre privaten Schlüssel sicher auf und teilen Sie Ihre id_rsa.pubund id_dsa.puböffentliche Schlüssel allgemein.

DSA ist unsicher

DSA hat einen erratenen Parameter, wenn der Zufallszahlengenerator Ihres Computers unterdurchschnittlich ist, wodurch Ihr geheimer Schlüssel enthüllt wird. ECDSA (DSAs Upgrade der elliptischen Kurve) ist ähnlich anfällig . Selbst bei guten Zufallszahlen hat DSA andere Bedenken hinsichtlich der StärkePDF (diese sind auch in Diffie-Hellman zu finden ).

OpenSSH erstellt unsichere 1024-Bit-Schlüssel ( Problemumgehung ) und deaktiviert jetzt standardmäßig DSA .

Verwenden Sie nach Möglichkeit Ed25519

Die Kryptographie mit elliptischen Kurven bietet eine erhöhte Komplexität bei kleineren Schlüsselgrößen. Ed25519 (basierend auf der Komplexität ebenenmodellierter elliptischer Kurven ) ist die bevorzugte Implementierung, da angenommen wird, dass keine Einmischung erfolgt (durchgesickerte Dokumente zeigen, dass die US-amerikanische NSA Kryptostandards schwächt ).

Leider ist Ed25519 noch ziemlich neu und erfordert OpenSSH 6.5 oder GnuPG 2.1 (siehe die vollständige Liste ).

Verwenden Sie RSA mit 4096 Bit, wenn Ed25519 nicht verfügbar ist

RSA-Schlüsselgrößen von 4096 Bit sollten eine vergleichbare Komplexität wie Ed25519 aufweisen.

Ed25519 wird RSA immer noch vorgezogen, da befürchtet wird, dass RSA für die gleichen Stärken wie DSA anfällig sein könnte, obwohl die Anwendung dieses Exploits auf RSA voraussichtlich erheblich schwieriger sein wird.

Adam Katz
quelle
2
Nur eine Korrektur: DSA unterstützt seit 2009 2048-Bit- und 3072-Bit-Schlüssel (gemäß FIPS 186-3 ). Weitere Informationen in meinem Kommentar oben.
Mike Pelley
2
Infosec SE hat eine nette Antwort auf diese Frage , die tiefer geht. Es wird ein Black Hat 2013-Vortrag zitiert , der darauf hinweist, dass DSA selbst bei größeren Schlüsselgrößen nicht mehr sicher ist.
Adam Katz
2
Ich habe diese Antwort aktualisiert, um umfassendere Informationen zu den Problemen mit DSA zu erhalten. Es ist jetzt detaillierter als die (gleichermaßen gültige) Infosec SE-Antwort. Es gibt noch mehr Details, wenn Sie mit der Maus über einige der Links fahren.
Adam Katz
1
Dieser Beitrag hat mich so viel gelehrt, braucht so viel mehr Upvotes.
Liljoshu
0

rsa gilt als sicherer.

Nicht mehr (Mai 2020, zehn Jahre später) mit OpenSSH 8.2 , wie von Julio berichtet

Zukünftige Abschreibungsmitteilung

Es ist nun möglich 1 gewählt-Präfix Angriffe gegen den SHA-1 - Hash - Algorithmus auszuführen , für weniger als USD $ 50K.
Aus diesem Grund werden wir in naher Zukunft den Signaturalgorithmus für den öffentlichen Schlüssel "ssh-rsa" deaktivieren, der standardmäßig von SHA-1 abhängt .

(Siehe " SHA-1 ist ein Durcheinander: Erste Kollision mit ausgewählten Präfixen bei SHA-1 und Anwendung auf das PGP-Vertrauensnetz " Leurent, G und Peyrin, T (2020))

Dieser Algorithmus wird leider immer noch häufig verwendet, obwohl es bessere Alternativen gibt. Er ist der einzige verbleibende Signaturalgorithmus für öffentliche Schlüssel, der in den ursprünglichen SSH-RFCs angegeben ist.

Die besseren Alternativen sind:

  • Die RFC8332 RSA SHA-2-Signaturalgorithmen rsa-sha2-256 / 512.
    Diese Algorithmen haben den Vorteil, dass sie denselben Schlüsseltyp wie " ssh-rsa" verwenden, jedoch die sicheren SHA-2-Hash-Algorithmen verwenden.
    Diese werden seit OpenSSH 7.2 unterstützt und werden bereits standardmäßig verwendet, wenn Client und Server sie unterstützen.

  • Der Signaturalgorithmus ssh-ed25519.
    Es wird in OpenSSH seit Release 6.5 unterstützt.

  • Die ECDSA-Algorithmen von RFC5656: ecdsa-sha2-nistp256 / 384/521.
    Diese werden seit Release 5.7 von OpenSSH unterstützt.

Um zu überprüfen, ob ein Server den schwachen Algorithmus für den öffentlichen Schlüssel ssh-rsa für die Hostauthentifizierung verwendet, versuchen Sie, eine Verbindung zu diesem Server herzustellen, nachdem Sie den ssh-rsaAlgorithmus aus der zulässigen Liste von ssh (1) entfernt haben:

ssh -oHostKeyAlgorithms=-ssh-rsa user@host

Wenn die Überprüfung des Hostschlüssels fehlschlägt und keine anderen unterstützten Hostschlüsseltypen verfügbar sind, sollte die Serversoftware auf diesem Host aktualisiert werden.

In einer zukünftigen Version von OpenSSH kann UpdateHostKeysder Client standardmäßig automatisch auf bessere Algorithmen migrieren.
Benutzer können diese Option manuell aktivieren .

VonC
quelle
-8

Man benutzt DSA und man benutzt RSA .

Yann Ramin
quelle
Angenommen, Sie verwenden nur die Standardnamen (die logischerweise so aussehen), hat Theatrus sie direkt auf den Kopf getroffen.
David Larrabee
Sie haben den eigentlichen Teil der Frage nicht beantwortet: Was ist sicherer? Downvoting, da dies die oberste Antwort war. Muss nicht sein.
Akauppi