Was ist der Unterschied zwischen den von ssh verwendeten RSA-, DSA- und ECDSA-Schlüsseln?

13

In meinem /etc/ssh/Verzeichnis sehe ich drei, dass ich drei verschiedene Arten von SSH-Schlüsseln habe:

-rw------- 1 root root    607 Oct  4 22:43 ssh_host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_host_rsa_key.pub

Was sind die Unterschiede zwischen den RSA-, DSA- und ECDSA-Schlüsseln von ssh und benötige ich alle drei?

vier
quelle

Antworten:

9

Es handelt sich um Schlüssel, die mit verschiedenen Verschlüsselungsalgorithmen generiert wurden. Sie können bei der Verwendung von SSH zwischen verschiedenen Verschlüsselungsarten wählen, ähnlich wie bei der Auswahl verschiedener Verschlüsselungsmethoden für WiFi (WPA2, WPA, WEP usw.).

SSH verwendet die Verschlüsselung mit öffentlichem Schlüssel. Wenn Sie eine Verbindung zu einem SSH-Server herstellen, wird ein öffentlicher Schlüssel gesendet, mit dem Sie den weiteren Datenverkehr verschlüsseln können, der an diesen Server gesendet werden soll. Wenn der Server für die Verwendung von RSA konfiguriert ist, wird ein Schlüssel vom RSA-Algorithmus generiert.

Ihr Computer sendet seinen eigenen öffentlichen RSA-Schlüssel aus der Schlüsseldatei zurück, die Sie in Ihrer Frage aufgeführt haben. Der Server benötigt diesen Schlüssel, um eine Verbindung zu Ihnen herzustellen und zu antworten.

Alle drei Schlüssel sind auf Ihrem Computer vorhanden, da jeder SSH-Server, mit dem Sie eine Verbindung herstellen, möglicherweise für die Verwendung eines dieser Algorithmen konfiguriert ist. Ihr Computer sendet einen eindeutigen Schlüssel zurück, der dem vom Server verwendeten Typ entspricht, da Ihr Schlüssel auf Ihrem Computer nach demselben Algorithmus generiert wurde.

Hier sind einige weitere Ressourcen:

/security/5096/rsa-vs-dsa-for-ssh-authentication-keys

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/RSA_(algorithm)

http://en.wikipedia.org/wiki/Digital_Signature_Algorithm

http://en.wikipedia.org/wiki/Elliptic_Curve_DSA

Zoasterboy
quelle
2
Sie sprachen kurz darüber, warum alle drei vorhanden sind, wozu ein SSH-Schlüssel dient und was die Schlüssel gemeinsam haben: Die Schlüssel verwenden Verschlüsselungsalgorithmen. Worüber Sie nicht gesprochen haben, ist der Unterschied zwischen den RSA-, DSA- und ECDSA-Schlüsseln.
Enkouyami
6

Benötigen Sie alle?
Nein, Ihr SSH-Server benötigt nur einen und der Client muss nur diesen einen Schlüsseltyp für SSH-Verbindungen unterstützen.


RSA, DSA, ECDSA, EdDSA und Ed25519 werden alle zum digitalen Signieren verwendet, aber nur RSA kann auch zum Verschlüsseln verwendet werden.

RSA ( Rivest-Shamir-Adleman ) ist eines der ersten Kryptosysteme mit öffentlichem Schlüssel und wird häufig für die sichere Datenübertragung verwendet. Die Sicherheit basiert auf der Faktorisierung ganzer Zahlen , sodass ein sicherer RNG (Random Number Generator) niemals benötigt wird. Im Vergleich zu DSA ist RSA für die Signaturvalidierung schneller, für die Generierung jedoch langsamer.

DSA ( Digital Signature Algorithm ) ist ein Federal Information Processing Standard für digitale Signaturen. Die Sicherheit beruht auf einem diskreten logarithmischen Problem. Im Vergleich zu RSA ist DSA für die Signaturerstellung schneller, für die Validierung jedoch langsamer. Die Sicherheit kann beeinträchtigt werden, wenn Generatoren für falsche Zahlen verwendet werden .

ECDSA ( Elliptical Curve Digital Signature Algorithm ) ist eine Elliptic Curve-Implementierung von DSA (Digital Signature Algorithm). Die Kryptographie mit elliptischen Kurven kann mit einem kleineren Schlüssel das gleiche Sicherheitsniveau wie RSA bieten. Es teilt auch den Nachteil von DSA, empfindlich gegenüber schlechten RNGs zu sein.

EdDSA ( Edwards-curve Digital Signature Algorithm ) ist ein digitales Signaturschema, das eine Variante der Schnorr-Signatur verwendet, die auf Twisted-Edwards-Kurven basiert . Die Signaturerstellung ist in EdDSA deterministisch und ihre Sicherheit basiert auf der Unlösbarkeit bestimmter diskreter Logarithmusprobleme. Daher ist sie sicherer als DSA und ECDSA, da für jede Signatur eine hohe Zufallsqualität erforderlich ist.

Ed25519 ist das EdDSA Signaturschema, aber unter Verwendung von SHA-512/256 und Curve25519 ; Es handelt sich um eine sichere elliptische Kurve , die eine höhere Sicherheit als DSA, ECDSA und EdDSA bietet und außerdem eine bessere Leistung aufweist (die vom Menschen nicht wahrgenommen werden kann).


Andere Hinweise
RSA-Schlüssel werden am häufigsten verwendet und scheinen daher am besten unterstützt zu werden.

ECDSA (eingeführt in OpenSSH v5.7 ) ist rechnerisch leichter als DSA, aber der Unterschied ist nur bemerkbar, wenn Sie einen Computer mit sehr geringer Rechenleistung haben.

Ab OpenSSH 7.0 unterstützt SSH standardmäßig keine DSA-Schlüssel (ssh-dss) mehr. Ein DSA-Schlüssel, der gemäß dem SSH-Standard (RFC 4251 und höher) überall funktioniert.

Ed25519 wurde in openSSH 6.5 eingeführt .

Enkouyami
quelle
1
Ist das EdDSA oder ECDSA ?
Muru
@muru Es ist ECDSA. Ich werde die Antwort jedoch mit Informationen zu beiden aktualisieren und den Link korrigieren.
Enkouyami
Was ich nicht finden konnte, war, als EdDSA in OpenSSH eingeführt wurde.
Enkouyami
Kann ein Quantencomputer sie alle zerstören?
Kjeld Flarup
@ KjeldFlarup, Ja; Basierend auf den Antworten und Kommentaren auf security.stackexchange.com/questions/211587/… könnte ein Quantencomputer sie alle kaputt machen.
Enkouyami