U OpenSSH kodnoj bazi eksperimentalna podrška za dvofaktorsku autentifikaciju koristeći uređaje koji podržavaju protokol , razvijen od strane saveza . U2F omogućava izradu jeftinih hardverskih tokena za potvrdu fizičke prisutnosti korisnika, a interakcija s njima se odvija putem USB, Bluetooth ili NFC. Ovi uređaji se promiču kao sredstvo za dvofaktorsku autentifikaciju na web stranicama, već ih podržavaju glavni preglednici i proizvode razni proizvođači, uključujući Yubico, Feitian, Thetis i Kensington.
Za interakciju s uređajima koji potvrđuju prisutnost korisnika, OpenSSH je dodao novu vrstu ključeva "sk-ecdsa-sha2-nistp256@openssh.com" ("ecdsa-sk"), koja koristi algoritam digitalnog potpisa ECDSA (Elliptic Curve Digital Signature Algorithm) s eliptičnom krivuljom NIST P-256 i heširanjem SHA-256. Postupci interakcije s tokenima su izdvojeni u međusobnu biblioteku koja se učitava slično kao biblioteka za podršku PKCS#11 i predstavlja omotač nad bibliotekom , koja pruža sredstva za komunikaciju s tokenima putem USB-a (podržava protokole FIDO U2F/CTAP 1 i FIDO 2.0/CTAP 2). Pripremljena razvojna biblioteka libsk-libfido2 je integrirana u osnovnu sastav libfido2, kao i za OpenBSD.
Za uključivanje U2F možete koristiti svježi isječak kodne baze iz OpenSSH i HEAD granu biblioteke , koja već uključuje potrebnu posredničku sloj za OpenSSH.
Libfido2 podržava rad na OpenBSD-u, Linuxu, macOS-u i Windows-u.
Za autentifikaciju i generiranje ključa potrebno je postaviti varijablu okruženja SSH_SK_PROVIDER, navodeći put do libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ili definirati biblioteku putem postavke SecurityKeyProvider, nakon čega se pokreće "ssh-keygen -t ecdsa-sk" ili, ako su ključevi već stvoreni i podešeni, povezati se na server putem "ssh". Kada se pokrene ssh-keygen, stvoreni par ključeva bit će pohranjen u "~/.ssh/id_ecdsa_sk" i može se koristiti na sličan način kao i drugi ključevi.
Otvoreni ključ (id_ecdsa_sk.pub) treba kopirati na poslužitelj u datoteku authorized_keys. Na strani poslužitelja samo se provjerava digitalni potpis, dok se interakcija s tokenima odvija s klijentske strane (na poslužitelju nije potrebno instalirati libsk-libfido2, ali poslužitelj mora podržavati tip ključeva „ecdsa-sk“). Generirani tajni ključ (id_ecdsa_sk) u suštini je identifikator ključa koji oblikuje stvarni ključ tek u kombinaciji s tajnom sekvencom pohranjenom na strani U2F tokena.
U slučaju da ključ id_ecdsa_sk dospije u ruke napadača, za prolazak autentifikacije također će mu biti potrebno dobiti pristup hardverskom tokenu, bez kojeg je pohranjeni tajni ključ u datoteci id_ecdsa_sk beskoristan. Osim toga, prema zadanim postavkama, prilikom izvođenja bilo kakvih operacija s ključevima (bilo pri generiranju, bilo pri autentifikaciji) potrebna je lokalna potvrda fizičke prisutnosti korisnika, na primjer, nudi se dodirivanje senzora na tokenu, što otežava provođenje udaljenih napada na sustave s priključenim tokenom. Kao još jedna zaštitna mjera, tijekom pokretanja ssh-keygen može se odrediti lozinka za pristup datoteci s ključem.
U2F ključ može se dodati u ssh-agent putem „ssh-add ~/.ssh/id_ecdsa_sk“, ali ssh-agent mora biti sastavljen s podrškom za ključeve „ecdsa-sk“, mora biti prisutna slojevita libsk-libfido2 i agent mora raditi na sustavu kojem se token povezuje.
Novi tip ključeva „ecdsa-sk“ je dodan jer se format ecdsa ključeva OpenSSH razlikuje od formata U2F za digitalne potpise ECDSA prisutnošću dodatnih polja.
Izvor: opennet.ru
