I OpenSSH:s kodbas experimentellt stöd för tvÄfaktorsautentisering med enheter som stöder protokollet , som utvecklas av alliansen . U2F möjliggör skapande av prisvÀrda hÄrdvarutokens för att bekrÀfta anvÀndarens fysiska nÀrvaro, dÀr interaktion sker via USB, Bluetooth eller NFC. SÄdana enheter marknadsförs som verktyg för tvÄfaktorsautentisering pÄ webbplatser, stöds av de flesta webblÀsare och tillverkas av olika producenter, inklusive Yubico, Feitian, Thetis och Kensington.
För interaktion med enheter som bekrÀftar anvÀndarens nÀrvaro har OpenSSH lagt till en ny typ av nyckel "sk-ecdsa-sha2-nistp256@openssh.com" ("ecdsa-sk"), dÀr en algoritm för digital signatur ECDSA (Elliptic Curve Digital Signature Algorithm) anvÀnds med den elliptiska kurvan NIST P-256 och hash-algoritmen SHA-256. Procedurerna för interaktion med tokens har flyttats till ett mellanlager som laddas pÄ liknande sÀtt som biblioteket för att stödja PKCS#11 och Àr en inneslutning runt biblioteket , som ger medel för kommunikation med tokens via USB (stöder protokollen FIDO U2F/CTAP 1 och FIDO 2.0/CTAP 2). Det mellanlager som utvecklarna av OpenSSH förberett, libsk-libfido2 , ingÄr i huvudbiblioteket libfido2, precis som för OpenBSD.
För att aktivera U2F kan ett fÀrskt klipp av kodbasen anvÀndas frÄn OpenSSH och HEAD-grenen av biblioteket , som redan innehÄller det som krÀvs för OpenSSH.
Libfido2 stöder drift i OpenBSD, Linux, macOS och Windows.
För autentisering och nyckelgenerering mÄste miljövariabeln SSH_SK_PROVIDER stÀllas in, dÀr sökvÀgen till libsk-libfido2.so anges (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), eller biblioteket definieras genom instÀllningen SecurityKeyProvider, och dÀrefter kan "ssh-keygen -t ecdsa-sk" köras eller, om nycklar redan har skapats och konfigurerats, kan man ansluta till servern med "ssh". NÀr "ssh-keygen" körs sparas det skapade nyckelparet i "~/.ssh/id_ecdsa_sk" och kan anvÀndas pÄ samma sÀtt som andra nycklar.
Ăppna nyckeln (id_ecdsa_sk.pub) ska kopieras till servern i filen authorized_keys. PĂ„ servern verifieras endast den digitala signaturen, och interaktionen med tokens sker pĂ„ klientsidan (det Ă€r inte nödvĂ€ndigt att installera libsk-libfido2 pĂ„ servern, men servern mĂ„ste stödja nyckeltypen "ecdsa-sk"). Den genererade privata nyckeln (id_ecdsa_sk) Ă€r i grunden en nyckelhandtag, som bildar den verkliga nyckeln endast i kombination med en hemlig sekvens som lagras pĂ„ U2F-tokenens sida.
Om nyckeln id_ecdsa_sk hamnar i hÀnderna pÄ en angripare, krÀvs det ocksÄ att de fÄr tillgÄng till den hÄrdvarutoken för autentisering, utan vilken den privata nyckeln som sparats i filen id_ecdsa_sk Àr vÀrdelös. Dessutom krÀvs lokala bekrÀftelser av anvÀndarens fysiska nÀrvaro som standard vid utförande av operationer med nycklar (bÄde vid generering och autentisering), till exempel att anvÀndaren uppmanas att röra vid sensorn pÄ tokenen, vilket försvÄrar fjÀrrattacker pÄ system med ansluten token. Som ytterligare ett skydd kan ett lösenord för Ätkomst till nyckelfilen anges vid starten av ssh-keygen.
U2F-nyckeln kan lÀggas till i ssh-agent genom "ssh-add ~/ .ssh / id_ecdsa_sk", men ssh-agenten mÄste vara byggd med stöd för nycklar "ecdsa-sk", en libsk-libfido2-ryggsÀck mÄste vara nÀrvarande och agenten mÄste köras pÄ systemet som tokenen ansluts till.
Den nya nyckeltypen "ecdsa-sk" har lagts till eftersom formatet för ecdsa-nycklar i OpenSSH skiljer sig frÄn U2F-formatet för digitala signaturer ECDSA genom att ha ytterligare fÀlt.
KĂ€lla: opennet.ru
