OpenSSH bietet Unterstützung für die universelle Zwei-Faktor-Authentifizierung

Zur OpenSSH-Codebasis hinzugefügt experimentelle Unterstützung der 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-Token, um die physische Anwesenheit des Benutzers zu überprüfen und mit ihm über USB, Bluetooth oder NFC zu interagieren. Solche Geräte werden als Mittel zur Zwei-Faktor-Authentifizierung auf Websites beworben, werden bereits von gängigen Browsern unterstützt und werden von verschiedenen Herstellern hergestellt, darunter Yubico, Feitian, Thetis und Kensington.

Um mit Geräten zu interagieren, die die Anwesenheit des Benutzers bestätigen, wurde OpenSSH ein neuer Schlüsseltyp hinzugefügt.[E-Mail geschützt] ” („ecdsa-sk“), das den digitalen Signaturalgorithmus ECDSA (Elliptic Curve Digital Signature Algorithm) mit der elliptischen Kurve NIST P-256 und dem Hash SHA-256 verwendet. Prozeduren für die Interaktion mit Token werden in einer Zwischenbibliothek abgelegt, die auf ähnliche Weise wie die Bibliothek für PKCS#11-Unterstützung geladen wird und einen Wrapper über der Bibliothek darstellt libfido2, das Tools für die Kommunikation mit Token über USB bereitstellt (die Protokolle FIDO U2F/CTAP 1 und FIDO 2.0/CTAP 2 werden unterstützt). Von OpenSSH-Entwicklern erstellte Zwischenbibliothek libsk-libfido2 enthalten in den Kern libfido2, sowie HID-Treiber für OpenBSD.

Um U2F zu aktivieren, können Sie ein neues Stück der Codebasis von verwenden Repository OpenSSH und der HEAD-Zweig der Bibliothek libfido2, das bereits den für OpenSSH notwendigen Layer enthält.
Libfido2 unterstützt OpenBSD, Linux, macOS und Windows.

Um einen Schlüssel zu authentifizieren und zu generieren, müssen Sie die Umgebungsvariable SSH_SK_PROVIDER festlegen und darin den Pfad zu libsk-libfido2.so angeben (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so) oder die Bibliothek über den SecurityKeyProvider definieren Einstellung und führen Sie dann „ssh-keygen -t ecdsa-sk“ aus oder stellen Sie, wenn die Schlüssel bereits erstellt und konfiguriert wurden, mit „ssh“ eine Verbindung zum Server her. Wenn Sie ssh-keygen ausführen, wird das generierte 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 in der Datei „authorized_keys“ auf den Server kopiert werden. Auf der Serverseite wird nur die digitale Signatur überprüft und auf der Clientseite erfolgt die Interaktion mit Token (Sie müssen libsk-libfido2 nicht auf dem Server installieren, aber der Server muss den Schlüsseltyp „ecdsa-sk“ unterstützen) . Der generierte private Schlüssel (id_ecdsa_sk) ist im Wesentlichen ein Schlüsselhandle und bildet nur in Kombination mit der auf der U2F-Token-Seite gespeicherten geheimen Sequenz einen echten Schlüssel.

Wenn der id_ecdsa_sk-Schlüssel in die Hände eines Angreifers gelangt, muss er zum Bestehen der Authentifizierung auch Zugriff auf das Hardware-Token erhalten, ohne das der in der id_ecdsa_sk-Datei gespeicherte private Schlüssel nutzlos ist. Darüber hinaus ist bei der Durchführung von Vorgängen mit Schlüsseln (sowohl bei der Generierung als auch bei der Authentifizierung) standardmäßig eine lokale Bestätigung der physischen Anwesenheit des Benutzers erforderlich. Beispielsweise wird vorgeschlagen, den Sensor auf dem Token zu berühren, was dies erschwert Remote-Angriffe auf Systeme mit angeschlossenem Token durchführen. Als weitere Verteidigungslinie kann während der Startphase von ssh-keygen auch ein Passwort festgelegt werden, um auf die Schlüsseldatei zuzugreifen.

Der U2F-Schlüssel kann über „ssh-add ~/.ssh/id_ecdsa_sk“ zum SSH-Agenten hinzugefügt werden, aber der SSH-Agent muss mit Unterstützung für „ecdsa-sk“-Schlüssel erstellt werden, die libsk-libfido2-Schicht muss vorhanden sein und die Der Agent muss auf dem System ausgeführt werden, mit dem das Token verbunden ist.
Ein neuer Schlüsseltyp „ecdsa-sk“ wurde hinzugefügt, da sich das Format der OpenSSH-ecdsa-Schlüssel durch das Vorhandensein zusätzlicher Felder vom U2F-Format für digitale ECDSA-Signaturen unterscheidet.

Source: opennet.ru

Kommentar hinzufügen