Vers la base de code OpenSSH
Pour interagir avec les appareils qui confirment la présence de l'utilisateur, un nouveau type de clés a été ajouté à OpenSSH "[email protected]» (« ecdsa-sk »), qui utilise l'algorithme de signature numérique ECDSA (Elliptic Curve Digital Signature Algorithm) avec la courbe elliptique NIST P-256 et le hachage SHA-256. Les procédures d'interaction avec les jetons sont placées dans une bibliothèque intermédiaire, qui est chargée de la même manière que la bibliothèque pour la prise en charge de PKCS#11 et constitue un wrapper au-dessus de la bibliothèque.
Pour activer U2F, vous pouvez utiliser une nouvelle tranche de la base de code de
Libfido2 prend en charge OpenBSD, Linux, macOS et Windows.
Pour authentifier et générer une clé, vous devez définir la variable d'environnement SSH_SK_PROVIDER, en y indiquant le chemin vers libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ou définir la bibliothèque via SecurityKeyProvider puis exécutez « ssh-keygen-t ecdsa-sk » ou, si les clés ont déjà été créées et configurées, connectez-vous au serveur en utilisant « ssh ». Lorsque vous exécutez ssh-keygen, la paire de clés générée sera enregistrée dans « ~/.ssh/id_ecdsa_sk » et pourra être utilisée de la même manière que d'autres clés.
La clé publique (id_ecdsa_sk.pub) doit être copiée sur le serveur dans le fichierauthorized_keys. Côté serveur, seule la signature numérique est vérifiée et l'interaction avec les jetons est effectuée côté client (vous n'avez pas besoin d'installer libsk-libfido2 sur le serveur, mais le serveur doit prendre en charge le type de clé « ecdsa-sk ») . La clé privée générée (id_ecdsa_sk) est essentiellement un descripteur de clé, formant une véritable clé uniquement en combinaison avec la séquence secrète stockée du côté du jeton U2F.
Si la clé id_ecdsa_sk tombe entre les mains d'un attaquant, pour passer l'authentification, il devra également accéder au jeton matériel, sans lequel la clé privée stockée dans le fichier id_ecdsa_sk est inutile. De plus, par défaut, lors de toute opération avec des clés (aussi bien lors de la génération que lors de l'authentification), une confirmation locale de la présence physique de l'utilisateur est requise, par exemple, il est proposé de toucher le capteur du token, ce qui rend difficile la effectuer des attaques à distance sur des systèmes avec un token connecté. Comme autre ligne de défense, un mot de passe peut également être spécifié lors de la phase de démarrage de ssh-keygen pour accéder au fichier de clé.
La clé U2F peut être ajoutée à ssh-agent via "ssh-add ~/.ssh/id_ecdsa_sk", mais ssh-agent doit être construit avec le support des clés "ecdsa-sk", la couche libsk-libfido2 doit être présente et le L'agent doit être exécuté sur le système auquel le jeton est connecté.
Un nouveau type de clé « ecdsa-sk » a été ajouté puisque le format des clés ecdsa OpenSSH diffère du format U2F pour les signatures numériques ECDSA par la présence de champs supplémentaires.
Source: opennet.ru