OpenSSH aghjunghje supportu per l'autentificazione universale à dui fattori

À a basa di codice OpenSSH aghjustatu supportu sperimentale per l'autentificazione à dui fattori cù i dispositi chì supportanu u protocolu U2F, sviluppatu da l'alleanza Fido. U2F permette a creazione di tokens di hardware low-cost per verificà a presenza fisica di l'utilizatori, interagisce cun elli via USB, Bluetooth o NFC. Tali dispusitivi sò prumuvuti cum'è un mezzu di autentificazione à dui fattori in i siti web, sò digià supportati da i navigatori principali è sò pruduciuti da parechji pruduttori, cumpresi Yubico, Feitian, Thetis è Kensington.

Per interagisce cù i dispositi chì cunfirmanu a presenza di l'utilizatore, un novu tipu di chjave hè statu aghjuntu à OpenSSH "[email prutettu]" ("ecdsa-sk"), chì usa l'algoritmu di firma digitale ECDSA (Elliptic Curve Digital Signature Algorithm) cù curva ellittica NIST P-256 è hash SHA-256. I prucedure per l'interazzione cù i tokens sò posti in una biblioteca intermedia, chì hè caricata in modu simili à a biblioteca per u supportu PKCS # 11 è hè un wrapper in cima di a biblioteca. libfido2, chì furnisce strumenti per cumunicà cù tokens per USB (i protokolli FIDO U2F / CTAP 1 è FIDO 2.0 / CTAP 2 sò supportati). Libreria intermedia libsk-libfido2 preparata da sviluppatori OpenSSH inclusu in u core libfido2, è ancu driver HID per OpenBSD.

Per attivà U2F, pudete aduprà una fetta fresca di a basa di codice da repository OpenSSH è a branche HEAD di a biblioteca libfido2, chì include digià a capa necessaria per OpenSSH.
Libfido2 supporta OpenBSD, Linux, macOS è Windows.

Per autentificà è generà una chjave, avete bisognu di stabilisce a variabile d'ambiente SSH_SK_PROVIDER, indicà in questu u percorsu à libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), o definisce a libreria attraversu u SecurityKeyProvider. paràmetru, è poi eseguite "ssh-keygen -t ecdsa-sk" o, se e chjavi sò digià creatu è cunfigurati, cunnette à u servitore cù "ssh". Quandu eseguite ssh-keygen, a coppia di chjave generata serà salvata in "~/.ssh/id_ecdsa_sk" è pò esse usata in modu simile à altre chjave.

A chjave publica (id_ecdsa_sk.pub) deve esse copiata à u servitore in u schedariu authorized_keys. Da u latu di u servitore, solu a firma digitale hè verificata, è l'interazzione cù i tokens hè realizatu da u latu di u cliente (ùn hè micca bisognu di stallà libsk-libfido2 nantu à u servitore, ma u servitore deve sustene u tipu di chjave "ecdsa-sk"). . A chjave privata generata (id_ecdsa_sk) hè essenzialmente un manicu di chjave, furmendu una chjave vera solu in cumminazione cù a sequenza secreta almacenata in u token U2F.

Se a chjave id_ecdsa_sk cade in e mani di un attaccante, per passà l'autentificazione hà ancu bisognu di accede à u token di hardware, senza chì a chjave privata guardata in u schedariu id_ecdsa_sk hè inutile. Inoltre, in modu predeterminatu, quandu eseguisce ogni operazione cù e chjave (sia durante a generazione sia durante l'autentificazione), a cunferma lucale di a presenza fisica di l'utilizatore hè necessaria, per esempiu, hè prupostu di toccu u sensoru nantu à u token, chì face difficiuli di fà. realizà attacchi remoti à i sistemi cù un token cunnessu. Cum'è una altra linea di difesa, una password pò ancu esse specificata durante a fase di startup di ssh-keygen per accede à u schedariu chjave.

A chjave U2F pò esse aghjuntu à ssh-agent via "ssh-add ~/.ssh/id_ecdsa_sk", ma ssh-agent deve esse custruitu cù supportu per e chjave "ecdsa-sk", a capa libsk-libfido2 deve esse presente è u L'agente deve esse in esecuzione nantu à u sistema, à quale u token hè cunnessu.
Un novu tipu di chjave "ecdsa-sk" hè statu aghjuntu postu chì u formatu di e chjave OpenSSH ecdsa difiere da u formatu U2F per e signature digitale ECDSA in presenza di campi supplementari.

Source: opennet.ru

Add a comment