Standardmäßig 6.9p1
erstellt OpenSSH Server in meiner aktuellen Version () vier Arten von Hostschlüsseln:
$ ls /etc/ssh/ssh_host_*_key.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub
Durch Tests habe ich festgestellt, dass zumindest bei Verwendung der gleichen Version des OpenSSH-Clients ( 6.9p1
) der ECDSA-Schlüssel vom Host verwendet wird, unabhängig vom Schlüsseltyp des Clients.
Wo entscheidet OpenSSH, welche Priorität die unterstützten Algorithmen haben? Ist diese Information editierbar oder im Quellcode der aktuellen Version fest einprogrammiert?
Und was noch wichtiger ist: Warum hat OpenSSH beschlossen, dem ECDSA-Algorithmus die höchste Priorität einzuräumen?
Antwort1
Die Reihenfolge wird vom Client über die HostKeyAlgorithms
Konfigurationsoption ausgewählt. Der Standard auf meinem System (gemäß der Manpage) ist:
- [email geschützt]
- [email geschützt]
- [email geschützt]
- [email geschützt]
- [email geschützt]
- [email geschützt]
- [email geschützt]
- [email geschützt]
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
- ssh-ed25519
- ssh-rsa
- ssh-dss
Um dies außer Kraft zu setzen, gehen Sie wie folgt vor:
ssh -oHostKeyAlgorithms=ssh-ed25519 [email protected]
Antwort2
Und was noch wichtiger ist: Warum hat OpenSSH beschlossen, dem ECDSA-Algorithmus die höchste Priorität einzuräumen?
ECDSA wurde mit Version 5.7 in OpenSSH eingeführt. Sie finden möglicherweise dieVersionshinweise hierIm Einzelnen heißt es:
Implementieren Sie Elliptic Curve Cryptography-Modi für Schlüsselaustausch (ECDH) und Host-/Benutzerschlüssel (ECDSA) gemäß RFC5656. ECDH und ECDSA bieten eine bessere Leistung als einfaches DH und DSA bei gleicher äquivalenter symmetrischer Schlüssellänge sowie viel kürzere Schlüssel.
.......
Zertifikat-Host- und Benutzerschlüssel mit den neuen ECDSA-Schlüsseltypen werden unterstützt – ein ECDSA-Schlüssel kann zertifiziert werden und ein ECDSA-Schlüssel kann als Zertifizierungsstelle zum Signieren von Zertifikaten fungieren.
ECDH in einem 256-Bit-Kurvenfeld ist der bevorzugte Schlüsselvereinbarungsalgorithmus, wenn sowohl der Client als auch der Server ihn unterstützen. ECDSA-Hostschlüssel werden bevorzugt, wenn die Schlüssel eines Hosts zum ersten Mal gelernt werden, oder können mit ssh-keyscan(1) gelernt werden.
Auch,RFC 5656Zustände:
Viele Schätzungen gehen davon aus, dass 2^80-2^90 Operationen nicht machbar sind, was die Verwendung von elliptischen Kurven von mindestens 160-180 Bit nahelegt. Die ERFORDERLICHEN Kurven in diesem Dokument sind 256-, 384- und 521-Bit-Kurven; Implementierungen SOLLTEN KEINE Kurven kleiner als 160 Bit verwenden.