OpenSSH pridáva podporu pre univerzálnu dvojfaktorovú autentifikáciu

Do kódovej základne OpenSSH pridané experimentálna podpora dvojfaktorovej autentifikácie pomocou zariadení, ktoré podporujú protokol U2F, vyvinuté alianciou FIDO. U2F umožňuje vytváranie lacných hardvérových tokenov na overenie fyzickej prítomnosti používateľa, interakciu s ním cez USB, Bluetooth alebo NFC. Takéto zariadenia sú propagované ako prostriedok dvojfaktorovej autentifikácie na webových stránkach, sú už podporované veľkými prehliadačmi a vyrábajú ich rôzni výrobcovia vrátane Yubico, Feitian, Thetis a Kensington.

Na interakciu so zariadeniami, ktoré potvrdzujú prítomnosť používateľa, bol do OpenSSH pridaný nový typ kľúčov “[chránené e-mailom]“ („ecdsa-sk“), ktorý používa algoritmus digitálneho podpisu ECDSA (Elliptic Curve Digital Signature Algorithm) s eliptickou krivkou NIST P-256 a hashom SHA-256. Procedúry na interakciu s tokenmi sú umiestnené v prechodnej knižnici, ktorá sa načítava podobným spôsobom ako knižnica pre podporu PKCS#11 a je obalom na vrchu knižnice. libfido2, ktorý poskytuje nástroje na komunikáciu s tokenmi cez USB (podporované sú protokoly FIDO U2F/CTAP 1 a FIDO 2.0/CTAP 2). Stredná knižnica libsk-libfido2 pripravená vývojármi OpenSSH v cene do jadra libfido2, ako aj HID vodič pre OpenBSD.

Ak chcete povoliť U2F, môžete použiť novú časť kódovej základne z Úložisko OpenSSH a pobočka knižnice HEAD libfido2, ktorý už obsahuje vrstvu potrebnú pre OpenSSH.
Libfido2 podporuje OpenBSD, Linux, macOS a Windows.

Ak chcete autentifikovať a vygenerovať kľúč, musíte nastaviť premennú prostredia SSH_SK_PROVIDER a uviesť v nej cestu k libsk-libfido2.so (exportovať SSH_SK_PROVIDER=/cesta/k/libsk-libfido2.so), alebo definovať knižnicu cez SecurityKeyProvider a potom spustite „ssh-keygen -t ecdsa-sk“ alebo, ak už boli kľúče vytvorené a nakonfigurované, pripojte sa k serveru pomocou „ssh“. Keď spustíte ssh-keygen, vygenerovaný pár kľúčov sa uloží do „~/.ssh/id_ecdsa_sk“ a dá sa použiť podobne ako ostatné kľúče.

Verejný kľúč (id_ecdsa_sk.pub) by mal byť skopírovaný na server v súbore author_keys. Na strane servera sa overuje iba digitálny podpis a interakcia s tokenmi sa vykonáva na strane klienta (nemusíte inštalovať libsk-libfido2 na server, ale server musí podporovať typ kľúča „ecdsa-sk“) . Vygenerovaný súkromný kľúč (id_ecdsa_sk) je v podstate kľúčový kľúč, ktorý tvorí skutočný kľúč iba v kombinácii s tajnou sekvenciou uloženou na strane tokenu U2F.

Ak sa kľúč id_ecdsa_sk dostane do rúk útočníka, na odovzdanie autentifikácie bude potrebovať aj prístup k hardvérovému tokenu, bez ktorého je súkromný kľúč uložený v súbore id_ecdsa_sk zbytočný. Okrem toho sa štandardne pri vykonávaní akýchkoľvek operácií s kľúčmi (pri generovaní aj pri autentifikácii) vyžaduje lokálne potvrdenie fyzickej prítomnosti používateľa, napríklad sa navrhuje dotknúť sa senzora na tokene, čo sťažuje vykonávať vzdialené útoky na systémy s pripojeným tokenom. Ako ďalšiu obrannú líniu je možné zadať heslo aj počas spúšťacej fázy ssh-keygen na prístup k súboru kľúčov.

Kľúč U2F je možné pridať do ssh-agenta cez "ssh-add ~/.ssh/id_ecdsa_sk", ale ssh-agent musí byť zostavený s podporou kľúčov "ecdsa-sk", musí byť prítomná vrstva libsk-libfido2 a agent musí byť spustený v systéme, ku ktorému je pripojený token.
Bol pridaný nový typ kľúča „ecdsa-sk“, pretože formát kľúčov ecdsa OpenSSH sa líši od formátu U2F pre digitálne podpisy ECDSA v prítomnosti ďalších polí.

Zdroj: opennet.ru

Pridať komentár