OpenSSH dodaje podršku za univerzalnu dvofaktorsku autentifikaciju

Na OpenSSH kodnu bazu dodano eksperimentalna podrška za dvofaktorsku autentifikaciju pomoću uređaja koji podržavaju protokol U2F, razvijen od strane alijanse Fido. U2F omogućava kreiranje jeftinih hardverskih tokena za provjeru fizičkog prisustva korisnika, interakciju s njima putem USB-a, Bluetooth-a ili NFC-a. Takvi uređaji se promoviraju kao sredstvo dvofaktorske autentifikacije na web stranicama, već ih podržavaju glavni pretraživači i proizvode ih različiti proizvođači, uključujući Yubico, Feitian, Thetis i Kensington.

Za interakciju sa uređajima koji potvrđuju prisustvo korisnika, nova vrsta ključeva je dodana u OpenSSH "[email zaštićen]” (“ecdsa-sk”), koji koristi algoritam digitalnog potpisa ECDSA (Elliptic Curve Digital Signature Algorithm) sa NIST P-256 eliptičnom krivom i SHA-256 hash. Procedure za interakciju sa tokenima su smeštene u međubiblioteku, koja se učitava na sličan način kao biblioteka za podršku PKCS#11 i omotač je na vrhu biblioteke libfido2, koji pruža alate za komunikaciju sa 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 OpenSSH programeri uključeno u jezgro libfido2, kao i HID drajver za OpenBSD.

Da biste omogućili U2F, možete koristiti svježi dio kodne baze iz spremište OpenSSH i HEAD grana biblioteke libfido2, koji već uključuje sloj neophodan za OpenSSH.
Libfido2 podržava OpenBSD, Linux, macOS i Windows.

Da biste potvrdili autentičnost i generirali ključ, potrebno je postaviti varijablu okruženja SSH_SK_PROVIDER, navodeći u njoj putanju do libsk-libfido2.so (izvoz SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ili definirati biblioteku kroz SecurityKeyProvider postavku, a zatim pokrenite “ssh- keygen -t ecdsa-sk” ili, ako su ključevi već kreirani i konfigurirani, povežite se na server koristeći “ssh”. Kada pokrenete ssh-keygen, generirani par ključeva će biti sačuvan u “~/.ssh/id_ecdsa_sk” i može se koristiti slično drugim ključevima.

Javni ključ (id_ecdsa_sk.pub) treba kopirati na server u datoteci authorized_keys. Na strani servera se provjerava samo digitalni potpis, a interakcija sa tokenima se obavlja na strani klijenta (ne morate instalirati libsk-libfido2 na server, ali server mora podržavati tip ključa “ecdsa-sk”) . Generirani privatni ključ (id_ecdsa_sk) je u suštini rukohvat ključa, koji formira pravi ključ samo u kombinaciji sa tajnim nizom pohranjenim na strani tokena U2F.

Ako ključ id_ecdsa_sk padne u ruke napadača, da bi prošao autentifikaciju, on će također morati 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 tokom generiranja i tijekom autentifikacije), potrebna je lokalna potvrda fizičkog prisustva korisnika, na primjer, predlaže se dodirivanje senzora na tokenu, što otežava izvode daljinske napade na sisteme sa povezanim tokenom. Kao još jedna linija odbrane, lozinka se takođe može navesti tokom faze pokretanja ssh-keygena za pristup ključnoj datoteci.

U2F ključ se može dodati ssh-agentu preko "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 sistemu na koji je token povezan.
Dodan je novi tip ključa “ecdsa-sk” budući da se format OpenSSH ecdsa ključeva razlikuje od U2F formata za ECDSA digitalne potpise u prisustvu dodatnih polja.

izvor: opennet.ru

Dodajte komentar