OpenSSH dodaje podršku za univerzalnu dvofaktorsku autentifikaciju

U OpenSSH kodnu bazu dodao eksperimentalna podrška za dvofaktorsku autentifikaciju pomoću uređaja koji podržavaju protokol U2F, koji je razvio savez FIDO. U2F omogućuje stvaranje jeftinih hardverskih tokena za provjeru fizičke prisutnosti korisnika, interakciju s njima putem USB-a, Bluetooth-a ili NFC-a. Takvi se uređaji promiču kao sredstvo dvofaktorske autentifikacije na web stranicama, već ih podržavaju glavni preglednici i proizvode ih različiti proizvođači, uključujući Yubico, Feitian, Thetis i Kensington.

Za interakciju s uređajima koji potvrđuju prisutnost korisnika, OpenSSH je dodana nova vrsta ključeva "[e-pošta zaštićena]” (“ecdsa-sk”), koji koristi algoritam digitalnog potpisa ECDSA (Elliptic Curve Digital Signature Algorithm) s NIST P-256 eliptičnom krivuljom i SHA-256 hashom. Procedure za interakciju s tokenima smještene su u međubiblioteku, koja se učitava na sličan način kao biblioteka za podršku PKCS#11 i predstavlja omotač na vrhu biblioteke libfido2, koji pruža alate za komunikaciju tokenima preko USB-a (podržani su protokoli FIDO U2F/CTAP 1 i FIDO 2.0/CTAP 2). Srednja biblioteka libsk-libfido2 koju su pripremili programeri OpenSSH-a uključeni u jezgru libfido2, kao i HID drajver za OpenBSD.

Da biste omogućili U2F, možete upotrijebiti novi isječak baze koda iz spremište OpenSSH i HEAD grana knjižnice libfido2, koji već uključuje sloj neophodan za OpenSSH.
Libfido2 podržava OpenBSD, Linux, macOS i Windows.

Za autentifikaciju i generiranje ključa morate postaviti varijablu okruženja SSH_SK_PROVIDER, naznačujući u njoj stazu do libsk-libfido2.so (izvoz SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ili definirati biblioteku putem SecurityKeyProvider postavku, a zatim pokrenite “ssh-keygen -t ecdsa-sk" ili, ako su ključevi već kreirani i konfigurirani, spojite se na poslužitelj koristeći "ssh". Kada pokrenete ssh-keygen, generirani par ključeva bit će spremljen u “~/.ssh/id_ecdsa_sk” i može se koristiti slično drugim ključevima.

Javni ključ (id_ecdsa_sk.pub) treba kopirati na poslužitelj u datoteci authorized_keys. Na strani poslužitelja provjerava se samo digitalni potpis, a interakcija s tokenima se vrši na strani klijenta (ne morate instalirati libsk-libfido2 na poslužitelju, ali poslužitelj mora podržavati tip ključa “ecdsa-sk”) . Generirani privatni ključ (id_ecdsa_sk) u biti je držač ključa, koji tvori pravi ključ samo u kombinaciji s tajnim nizom pohranjenim na strani U2F tokena.

Ako ključ id_ecdsa_sk padne u ruke napadača, da bi prošao autentifikaciju morat će također dobiti pristup hardverskom tokenu, bez kojeg je privatni ključ pohranjen u datoteci id_ecdsa_sk beskoristan. Osim toga, prema zadanim postavkama, prilikom izvođenja bilo kakvih operacija s ključevima (i tijekom generiranja i tijekom autentifikacije), potrebna je lokalna potvrda fizičke prisutnosti korisnika, na primjer, predlaže se dodirivanje senzora na tokenu, što otežava izvršavati udaljene napade na sustave s povezanim tokenom. Kao još jedna linija obrane, lozinka se također može odrediti tijekom faze pokretanja ssh-keygena za pristup ključnoj datoteci.

U2F ključ se može dodati ssh-agentu putem "ssh-add ~/.ssh/id_ecdsa_sk", ali ssh-agent mora biti izgrađen s podrškom za "ecdsa-sk" ključeve, sloj libsk-libfido2 mora biti prisutan i agent mora biti pokrenut na sustavu na koji je token povezan.
Dodana je nova vrsta ključa "ecdsa-sk" jer se format OpenSSH ecdsa ključeva razlikuje od U2F formata za ECDSA digitalne potpise u prisutnosti dodatnih polja.

Izvor: opennet.ru

Dodajte komentar