OpenSSH ajoute la prise en charge de l'authentification universelle à deux facteurs

Vers la base de code OpenSSH ajoutée prise en charge expérimentale de l'authentification à deux facteurs à l'aide d'appareils prenant en charge le protocole U2F, développé par l'alliance FIDO. U2F permet la création de jetons matériels à faible coût pour vérifier la présence physique de l'utilisateur, en interagissant avec lui via USB, Bluetooth ou NFC. De tels appareils sont présentés comme moyen d'authentification à deux facteurs sur les sites Web, sont déjà pris en charge par les principaux navigateurs et sont produits par divers fabricants, notamment Yubico, Feitian, Thetis et Kensington.

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. libfido2, qui fournit des outils pour communiquer avec des jetons via USB (les protocoles FIDO U2F/CTAP 1 et FIDO 2.0/CTAP 2 sont pris en charge). Bibliothèque intermédiaire libsk-libfido2 préparée par les développeurs OpenSSH inclus dans le noyau libfido2, ainsi que Pilote CACHÉ pour OpenBSD.

Pour activer U2F, vous pouvez utiliser une nouvelle tranche de la base de code de dépôt OpenSSH et la branche HEAD de la bibliothèque libfido2, qui inclut déjà la couche nécessaire à OpenSSH.
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

Ajouter un commentaire