Wie entscheidet OpenSSH, welchen Host-Schlüssel verwendet werden soll?
3837
IQAndreas
In meiner aktuellen Version ( 6.9p1) erstellt OpenSSH Server standardmäßig 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
Beim Testen habe ich festgestellt, dass zumindest derselbe OpenSSH-Client ( 6.9p1) verwendet wird, der ECDSA-Schlüssel wird vom Host verwendet, unabhängig vom Schlüsseltyp des Clients.
Wo entscheidet OpenSSH, welche Priorität die unterstützten Algorithmen haben? Ist diese Information bearbeitbar oder im Quellcode der aktuellen Version fest codiert?
Und was noch wichtiger ist, warum hat OpenSSH entschieden, dem ECDSA-Algorithmus die erste Priorität zu geben?
2 Antworten auf die Frage
5
Thomas
Die Reihenfolge wird vom Client mit der HostKeyAlgorithmsKonfigurationsoption ausgewählt. Die Standardeinstellung auf meinem System (laut Manpage) lautet:
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
ssh-ed25519-cert-v01@openssh.com
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ssh-rsa-cert-v00@openssh.com
ssh-dss-cert-v00@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-ed25519
ssh-rsa
ssh-dss
Um dies zu überschreiben, machen Sie etwas wie:
ssh -oHostKeyAlgorithms=ssh-ed25519 user@foo.com
3
MariusMatutiae
Und was noch wichtiger ist, warum hat OpenSSH entschieden, dem ECDSA-Algorithmus die erste Priorität zu geben?
ECDSA wurde mit der Version 5.7 in openssh eingeführt. Die Versionshinweise finden Sie hier . Insbesondere heißt es:
Implementieren Sie Elliptic Curve Cryptography-Modi für den Schlüsselaustausch (ECDH) und Host- / Benutzerschlüssel (ECDSA) gemäß RFC5656. ECDH und ECDSA bieten bei gleicher äquivalenter symmetrischer Schlüssellänge und wesentlich kürzeren Schlüsseln eine bessere Leistung als einfacher DH und DSA.
.......
Zertifikat-Host- und -Nutzerschlüssel, die die neuen ECDSA-Schlüsseltypen verwenden, werden unterstützt. Ein ECDSA-Schlüssel kann zertifiziert sein, und ein ECDSA-Schlüssel kann als Zertifizierungsstelle zum Signieren von Zertifikaten fungieren.
ECDH in einem 256-Bit-Kurvenfeld ist der bevorzugte Algorithmus für die Schlüsselübereinstimmung, wenn sowohl der Client als auch der Server dies unterstützen. ECDSA-Host-Schlüssel werden bevorzugt, wenn die Schlüssel eines Hosts zum ersten Mal erlernt werden, oder können mit ssh-keyscan (1) erlernt werden.
Viele Schätzungen gehen davon aus, dass 2 ^ 80-2 ^ 90-Operationen nicht machbar sind, so dass die Verwendung elliptischer Kurven von mindestens 160-180 Bits empfohlen wird. Die ERFORDERLICHEN Kurven in diesem Dokument sind 256-, 384- und 521-Bit-Kurven. Implementierungen sollten keine Kurven verwenden, die kleiner als 160 Bit sind