La baza de cod OpenSSH
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
Pentru a activa U2F, puteți folosi o nouă parte din baza de cod din
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