OpenSSH dodaja podporo za univerzalno dvofaktorsko avtentikacijo

V kodno zbirko OpenSSH dodano eksperimentalna podpora za dvofaktorsko avtentikacijo z uporabo naprav, ki podpirajo protokol U2F, ki ga je razvilo zavezništvo FIDO. U2F omogoča ustvarjanje poceni žetonov strojne opreme za preverjanje fizične prisotnosti uporabnika, interakcijo z njim prek USB, Bluetooth ali NFC. Takšne naprave se promovirajo kot sredstvo dvofaktorske avtentikacije na spletnih mestih, podpirajo jih že glavni brskalniki in jih proizvajajo različni proizvajalci, vključno z Yubico, Feitian, Thetis in Kensington.

Za interakcijo z napravami, ki potrjujejo prisotnost uporabnika, je bila OpenSSH dodana nova vrsta ključev "[e-pošta zaščitena]” (“ecdsa-sk”), ki uporablja algoritem digitalnega podpisa ECDSA (Elliptic Curve Digital Signature Algorithm) z eliptično krivuljo NIST P-256 in zgoščevanjem SHA-256. Postopki za interakcijo z žetoni so postavljeni v vmesno knjižnico, ki je naložena na podoben način kot knjižnica za podporo PKCS#11 in je ovoj na vrhu knjižnice libfido2, ki ponuja orodja za komunikacijo z žetoni preko USB (podprta sta protokola FIDO U2F/CTAP 1 in FIDO 2.0/CTAP 2). Vmesna knjižnica libsk-libfido2, ki so jo pripravili razvijalci OpenSSH vključena v jedro libfido2, kot tudi gonilnik HID za OpenBSD.

Če želite omogočiti U2F, lahko uporabite svež del kodne baze iz repozitorija OpenSSH in HEAD veja knjižnice libfido2, ki že vključuje plast, potrebno za OpenSSH.
Libfido2 podpira OpenBSD, Linux, macOS in Windows.

Za preverjanje pristnosti in ustvarjanje ključa morate nastaviti spremenljivko okolja SSH_SK_PROVIDER in v njej navesti pot do libsk-libfido2.so (izvoz SSH_SK_PROVIDER=/path/to/libsk-libfido2.so) ali definirati knjižnico prek SecurityKeyProvider nastavitev in nato zaženite “ssh-keygen -t ecdsa-sk" ali, če so ključi že ustvarjeni in konfigurirani, se povežite s strežnikom z uporabo "ssh". Ko zaženete ssh-keygen, bo ustvarjeni par ključev shranjen v "~/.ssh/id_ecdsa_sk" in ga je mogoče uporabiti podobno kot druge ključe.

Javni ključ (id_ecdsa_sk.pub) je treba kopirati na strežnik v datoteko authorized_keys. Na strani strežnika se preverja le digitalni podpis, interakcija z žetoni pa se izvaja na strani odjemalca (na strežnik vam ni treba namestiti libsk-libfido2, vendar mora strežnik podpirati tip ključa “ecdsa-sk”) . Ustvarjeni zasebni ključ (id_ecdsa_sk) je v bistvu ročaj ključa, ki tvori pravi ključ samo v kombinaciji s tajnim zaporedjem, shranjenim na strani žetona U2F.

Če ključ id_ecdsa_sk pade v roke napadalcu, bo moral za avtentikacijo pridobiti tudi dostop do strojnega žetona, brez katerega je zasebni ključ, shranjen v datoteki id_ecdsa_sk, neuporaben. Poleg tega je privzeto pri izvajanju kakršnih koli operacij s ključi (tako med ustvarjanjem kot med preverjanjem pristnosti) potrebna lokalna potrditev fizične prisotnosti uporabnika, na primer predlaga se dotik senzorja na žetonu, kar otežuje izvaja oddaljene napade na sisteme s povezanim žetonom. Kot drugo obrambno linijo lahko med zagonsko fazo ssh-keygen določite tudi geslo za dostop do datoteke ključev.

Ključ U2F lahko dodate ssh-agentu prek "ssh-add ~/.ssh/id_ecdsa_sk", vendar mora biti ssh-agent zgrajen s podporo za ključe "ecdsa-sk", prisoten mora biti sloj libsk-libfido2 in agent se mora izvajati v sistemu, s katerim je povezan žeton.
Dodan je bil nov tip ključa »ecdsa-sk«, ker se format ključev OpenSSH ecdsa razlikuje od formata U2F za digitalne podpise ECDSA zaradi prisotnosti dodatnih polj.

Vir: opennet.ru

Dodaj komentar