In OpenSSH wurde die Unterstützung für universelle Zwei-Faktor-Authentifizierung hinzugefügt.

In den Codebasen von OpenSSH hinzugefügt experimentelle Unterstützung für die Zwei-Faktor-Authentifizierung mit Geräten, die das Protokoll unterstützen U2F, entwickelt von der Allianz FIDO. U2F ermöglicht die Erstellung kostengünstiger Hardware-Tokens zur Bestätigung der physischen Präsenz des Benutzers, die über USB, Bluetooth oder NFC interagieren. Solche Geräte werden als Mittel zur Zwei-Faktor-Authentifizierung auf Webseiten gefördert, werden bereits von den gängigsten Browsern unterstützt und von verschiedenen Herstellern wie Yubico, Feitian, Thetis und Kensington angeboten.

Um mit den Geräten zu interagieren, die die Anwesenheit des Benutzers bestätigen, wurde in OpenSSH ein neuer Schlüsseltyp "sk-ecdsa-sha2-nistp256@openssh.com" ("ecdsa-sk") hinzugefügt, der den digitalen Signaturalgorithmus ECDSA (Elliptic Curve Digital Signature Algorithm) mit der elliptischen Kurve NIST P-256 und dem Hash-Algorithmus SHA-256 verwendet. Die Interaktionsprozeduren mit den Tokens wurden in eine Zwischenschichtbibliothek ausgelagert, die ähnlich wie die Bibliothek zur Unterstützung von PKCS#11 geladen wird und eine Wrapper-Bibliothek darstellt. libfido2, die Mittel zur Kommunikation mit Tokens über USB bereitstellt (unterstützt die Protokolle FIDO U2F/CTAP 1 und FIDO 2.0/CTAP 2). Die von den Entwicklern von OpenSSH vorbereitete Zwischenbibliothek libsk-libfido2 eingeschlossen ist Teil von libfido2, ebenso wie HID-Treiber für OpenBSD.

Um U2F zu aktivieren, kann die neueste Codebasis von des Repositories OpenSSH und der HEAD-Zweig der Bibliothek libfido2, in die bereits die für OpenSSH benötigte Schicht integriert ist, verwendet werden.
Libfido2 unterstützt den Betrieb unter OpenBSD, Linux, macOS und Windows.

Für die Authentifizierung und die Schlüsselerzeugung muss die Umgebungsvariable SSH_SK_PROVIDER gesetzt werden, indem der Pfad zu libsk-libfido2.so angegeben wird (export SSH_SK_PROVIDER=\/path\/to\/libsk-libfido2.so), oder die Bibliothek über die Einstellung SecurityKeyProvider definiert wird, wonach "ssh-keygen -t ecdsa-sk" ausgeführt werden kann oder, falls die Schlüssel bereits erstellt und konfiguriert sind, eine Verbindung zum Server mit "ssh" hergestellt wird. Bei der Ausführung von ssh-keygen wird das erzeugte Schlüsselpaar in "~\/.ssh\/id_ecdsa_sk" gespeichert und kann ähnlich wie andere Schlüssel verwendet werden.

Der öffentliche Schlüssel (id_ecdsa_sk.pub) sollte auf den Server in die Datei authorized_keys kopiert werden. Auf der Serverseite wird nur die digitale Signatur überprüft, während die Interaktion mit den Tokens auf der Clientseite erfolgt (es ist nicht erforderlich, libsk-libfido2 auf dem Server zu installieren, aber der Server muss den Schlüsseltype "ecdsa-sk" unterstützen). Der generierte private Schlüssel (id_ecdsa_sk) ist im Wesentlichen ein Descriptor des Schlüssels, der nur in Kombination mit der geheimen Sequenz, die auf dem U2F-Token gespeichert ist, einen echten Schlüssel bildet.

Falls der Schlüssel id_ecdsa_sk in die Hände eines Angreifers gelangt, benötigt dieser zur Authentifizierung auch Zugriff auf das Hardware-Token, ohne das der in der Datei id_ecdsa_sk gespeicherte private Schlüssel nutzlos ist. Darüber hinaus ist standardmäßig bei der Durchführung von Operationen mit Schlüsseln (sowohl bei der Generierung als auch bei der Authentifizierung) eine lokale Bestätigung der physischen Anwesenheit des Benutzers erforderlich, zum Beispiel wird vorgeschlagen, den Sensor auf dem Token zu berühren, was es erschwert, entfernte Angriffe auf Systeme mit angeschlossenem Token durchzuführen. Als weiteren Schutz kann beim Start von ssh-keygen ein Passwort für den Zugriff auf die Schlüsseldatei festgelegt werden.

Der U2F-Schlüssel kann über „ssh-add ~/.ssh/id_ecdsa_sk“ zum ssh-agent hinzugefügt werden, jedoch muss der ssh-agent mit Unterstützung für „ecdsa-sk“-Schlüssel kompiliert werden, eine Libsk-libfido2-Schicht muss vorhanden sein und der Agent muss auf dem System ausgeführt werden, an das das Token angeschlossen wird.
Ein neuer Schlüsseltyp „ecdsa-sk“ wurde hinzugefügt, da das Format der OpenSSH ecdsa-Schlüssel sich von dem Format der U2F-Zertifikate für digitale Signaturen ECDSA durch zusätzliche Felder unterscheidet.

Quelle: opennet.ru

60GB SSD 8Gb DDR4