OpenSSH adaugă suport pentru autentificarea universală cu doi factori

La baza de cod OpenSSH adăugat suport experimental pentru autentificarea cu doi factori folosind dispozitive care acceptă protocolul U2F, dezvoltat de alianță FIDO. U2F permite crearea de token-uri hardware low-cost pentru a verifica prezența fizică a utilizatorului, interacționând cu acestea prin USB, Bluetooth sau NFC. Astfel de dispozitive sunt promovate ca mijloc de autentificare cu doi factori pe site-uri web, sunt deja acceptate de browserele majore și sunt produse de diverși producători, inclusiv Yubico, Feitian, Thetis și Kensington.

Pentru a interacționa cu dispozitivele care confirmă prezența utilizatorului, un nou tip de chei a fost adăugat la OpenSSH "[e-mail protejat]” („ecdsa-sk”), care utilizează algoritmul de semnătură digitală ECDSA (Elliptic Curve Digital Signature Algorithm) cu curba eliptică NIST P-256 și hash SHA-256. Procedurile pentru interacțiunea cu jetoanele sunt plasate într-o bibliotecă intermediară, care este încărcată într-un mod similar cu biblioteca pentru suport PKCS#11 și este un înveliș deasupra bibliotecii libfido2, care oferă instrumente pentru comunicarea cu jetoane prin USB (protocoalele FIDO U2F/CTAP 1 și FIDO 2.0/CTAP 2 sunt acceptate). Biblioteca intermediară libsk-libfido2 pregătită de dezvoltatorii OpenSSH inclus în libfido2 de bază, precum și Driver HID pentru OpenBSD.

Pentru a activa U2F, puteți folosi o nouă parte din baza de cod din repertoriu OpenSSH și filiala HEAD a bibliotecii libfido2, care include deja stratul necesar pentru OpenSSH.
Libfido2 acceptă OpenBSD, Linux, macOS și Windows.

Pentru a autentifica și a genera o cheie, trebuie să setați variabila de mediu SSH_SK_PROVIDER, indicând în ea calea către libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so) sau definiți biblioteca prin SecurityKeyProvider setare, apoi rulați „ssh-keygen -t ecdsa-sk” sau, dacă cheile au fost deja create și configurate, conectați-vă la server folosind „ssh”. Când rulați ssh-keygen, perechea de chei generată va fi salvată în „~/.ssh/id_ecdsa_sk” și poate fi utilizată în mod similar cu alte chei.

Cheia publică (id_ecdsa_sk.pub) ar trebui copiată pe server în fișierul authorized_keys. Pe partea de server, este verificată doar semnătura digitală, iar interacțiunea cu jetoanele se realizează pe partea client (nu trebuie să instalați libsk-libfido2 pe server, dar serverul trebuie să accepte tipul de cheie „ecdsa-sk”). . Cheia privată generată (id_ecdsa_sk) este în esență un mâner de cheie, formând o cheie reală numai în combinație cu secvența secretă stocată pe partea jetonului U2F.

Dacă cheia id_ecdsa_sk cade în mâinile unui atacator, pentru a trece autentificarea va trebui să obțină și acces la tokenul hardware, fără de care cheia privată stocată în fișierul id_ecdsa_sk este inutilă. În plus, în mod implicit, la efectuarea oricăror operațiuni cu chei (atât în ​​timpul generării, cât și în timpul autentificării), este necesară confirmarea locală a prezenței fizice a utilizatorului, de exemplu, se propune atingerea senzorului de pe token, ceea ce face dificilă efectuați atacuri de la distanță asupra sistemelor cu un token conectat. Ca o altă linie de apărare, o parolă poate fi specificată și în timpul fazei de pornire a ssh-keygen pentru a accesa fișierul cheie.

Cheia U2F poate fi adăugată la ssh-agent prin „ssh-add ~/.ssh/id_ecdsa_sk”, dar ssh-agent trebuie să fie construit cu suport pentru cheile „ecdsa-sk”, stratul libsk-libfido2 trebuie să fie prezent și agentul trebuie să ruleze pe sistemul la care este conectat tokenul.
Un nou tip de cheie „ecdsa-sk” a fost adăugat deoarece formatul cheilor OpenSSH ecdsa diferă de formatul U2F pentru semnăturile digitale ECDSA în prezența câmpurilor suplimentare.

Sursa: opennet.ru

Adauga un comentariu