Der Vergleich
| Ed25519 | RSA 3072 | RSA 4096 | |
|---|---|---|---|
| Geschätzte Sicherheit | Etwa 128 Bit | 128 Bit | Zwischen 128 und 192 Bit |
| Datei des öffentlichen Schlüssels | 92 Byte | 564 Byte | 736 Byte |
| Datei des privaten Schlüssels, ohne Passphrase | 399 Byte | 2590 Byte | 3369 Byte |
| Wahl der Größe | Keine, immer 256 Bit | Mit -b festlegen | Mit -b festlegen |
| Voraussetzung auf der Gegenseite | OpenSSH 6.5 oder neuer | Fast jeder SSH-Server | Fast jeder SSH-Server |
Die Dateigrößen stammen von Schlüsseln, die wir mit dem Kommentar you@laptop erzeugt haben. Die Sicherheitsschätzungen stammen aus RFC 8032 für ed25519 und aus NIST SP 800-57 für RSA.
Worauf es wirklich ankommt
- Weniger Auswahl, weniger Fehler. Ein ed25519-Schlüssel hat eine einzige Größe, so kann niemand versehentlich einen schwachen erzeugen.
ssh-keygenignoriert-bbei diesem Typ: Wir haben 4096 verlangt und 256 bekommen. - Kurze öffentliche Schlüssel. Eine Zeile, die in eine Chatnachricht oder Konfigurationsdatei passt, ohne abgeschnitten zu werden.
- Schutz der Datei. Ein Schlüssel ohne Passphrase auf einem gestohlenen Laptop ist ungeschützt, egal welchen Typs. Das zählt weit mehr als der Unterschied zwischen den beiden Algorithmen.
Wie Sie jeden Schlüssel samt Passphrase an einem Ort aufbewahren, zeigt die SSH-Schlüsselverwaltung mit verschlüsseltem Tresor.
Jeden Typ erzeugen
ssh-keygen -t ed25519 -C "you@laptop"
ssh-keygen -t rsa -b 4096 -C "you@laptop"
Ohne -b haben RSA-Schlüssel 3072 Bit, der Standard seit OpenSSH 8.0. Seit OpenSSH 9.5 erzeugt ssh-keygen ohne -t einen ed25519-Schlüssel. Die vollständigen Schritte stehen in ed25519-Schlüssel erzeugen.
RSA-Schlüsselgrößen
- Unter 1024 Bit:
ssh-keygenlehnt ab mitInvalid RSA key length: minimum is 1024 bits. - 1024 Bit: nicht verwenden. Er lässt sich noch erzeugen, aber ein Server mit höherem
RequiredRSASizelehnt ihn ab. Diese Einstellung gibt es seit OpenSSH 9.1, ihr Standardwert ist 1024. - 2048 Bit: NIST bewertet das mit 112 Bit Sicherheit. Es funktioniert, ist aber das alte Minimum, ersetzen Sie ihn also bei der nächsten Schlüsselrotation.
- 3072 oder 4096 Bit: Nehmen Sie eine dieser Größen, wenn Sie RSA brauchen.
Wann RSA noch die richtige Wahl ist
- Ein Server läuft mit einem OpenSSH älter als 6.5.
- Ein altes Netzwerkgerät, Appliance oder Embedded-System nennt in der Dokumentation nur RSA-Schlüssel.
- Eine Compliance-Vorgabe oder ein System im FIPS-Modus schränkt die erlaubten Schlüsseltypen ein. Prüfen Sie die Liste Ihres Herstellers.
Sie können je einen Schlüssel beider Typen behalten und RSA nur für die Hosts verwenden, die es brauchen:
Host old-server
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
Verbindung zu alten Systemen
Ein RSA-Schlüssel ist nicht dasselbe wie die damit erzeugte Signatur. Seit OpenSSH 8.8 verwendet der Client die alte ssh-rsa-Signatur, die auf SHA-1 beruht, nicht mehr, außer Sie verlangen sie. Dieselbe Schlüsseldatei funktioniert weiterhin mit den neueren Signaturen rsa-sha2-256 und rsa-sha2-512, die OpenSSH seit 7.2 unterstützt.
Ein Server, der nur den alten Algorithmus kennt, liefert diesen Fehler:
Unable to negotiate with 203.0.113.10 port 22: no matching host key type found. Their offer: ssh-rsa
Schalten Sie den alten Algorithmus nur für diesen einen Host wieder ein, und nur wenn Sie ihn nicht aktualisieren können:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa user@old-server
Das schwächt die Verbindung, lassen Sie es also aus Host * heraus. Ein neuer RSA-Schlüssel hilft hier nicht, weil das Problem die Signatur ist und nicht der Schlüssel. Siehe auch no mutual signature supported und no matching key exchange.
DSA und ECDSA
DSA gibt es nicht mehr: OpenSSH 10.0 hat es entfernt, und ssh-keygen -t dsa antwortet jetzt mit unknown key type dsa. Ersetzen Sie jeden DSA-Schlüssel, den Sie noch haben. ECDSA funktioniert und wird breit unterstützt, bietet aber gegenüber ed25519 keinen Vorteil, es sei denn, ein System verlangt es.
Ihre vorhandenen Schlüssel prüfen
for f in ~/.ssh/*.pub; do ssh-keygen -lf "$f"; done
Die erste Zahl ist die Größe und das letzte Wort der Typ, zum Beispiel 3072 SHA256:... you@laptop (RSA).
Fragen
Ist RSA 4096 stärker als ed25519?
Auf dem Papier hat es eine etwas höhere Sicherheitsschätzung, aber beide liegen weit jenseits dessen, was heute angreifbar ist, es ist also kein Grund, es zu wählen. Das praktische Risiko ist der Diebstahl der privaten Schlüsseldatei, und dagegen hilft bei beiden Typen eine Passphrase.
Kann ich einen RSA-Schlüssel in ed25519 umwandeln?
Nein. Es sind verschiedene Schlüsselarten. Erzeugen Sie einen neuen ed25519-Schlüssel, tragen Sie seinen öffentlichen Schlüssel auf Ihren Servern ein, testen Sie die Anmeldung und entfernen Sie dann den alten öffentlichen Schlüssel.
Ändert ein Quantencomputer die Wahl?
Nein, nicht zwischen diesen beiden: Ein ausreichend großer Quantencomputer würde beide brechen. OpenSSH 10.6 aktiviert einen hybriden Post-Quanten-Schlüsseltyp, erzeugt mit ssh-keygen -t mldsa44-ed25519, aber beide Seiten brauchen 10.6 oder neuer. Zum Schlüsselaustausch siehe die Anleitung zur Post-Quanten-Warnung.
Quellen
- ssh-keygen(1), OpenBSD manual
- OpenSSH 8.8 release notes
- OpenSSH release notes
- RFC 8032, EdDSA
- NIST SP 800-57 Part 1 Rev. 5