OpenSSH lägger till stöd för universell tvåfaktorsautentisering

Till OpenSSH-kodbasen Lagt till experimentellt stöd för tvåfaktorsautentisering med hjälp av enheter som stöder protokollet U2F, utvecklad av alliansen FIDO. U2F tillåter skapandet av billiga hårdvarutokens för att verifiera användarens fysiska närvaro, interagera med dem via USB, Bluetooth eller NFC. Sådana enheter marknadsförs som ett sätt för tvåfaktorsautentisering på webbplatser, stöds redan av stora webbläsare och produceras av olika tillverkare, inklusive Yubico, Feitian, Thetis och Kensington.

För att interagera med enheter som bekräftar närvaron av användaren har en ny typ av nycklar lagts till i OpenSSH "[e-postskyddad]” (“ecdsa-sk”), som använder ECDSA (Elliptic Curve Digital Signature Algorithm) digital signaturalgoritm med NIST P-256 elliptisk kurva och SHA-256 hash. Procedurer för att interagera med tokens placeras i ett mellanliggande bibliotek, som laddas på liknande sätt som biblioteket för PKCS#11-stöd och är ett omslag ovanpå biblioteket libfido2, som tillhandahåller verktyg för att kommunicera med tokens via USB (protokollen FIDO U2F/CTAP 1 och FIDO 2.0/CTAP 2 stöds). Mellanbibliotek libsk-libfido2 framställt av OpenSSH-utvecklare ingår in i kärnan libfido2, liksom HID-drivrutin för OpenBSD.

För att aktivera U2F kan du använda en ny del av kodbasen från förvaret OpenSSH och HEAD-grenen av biblioteket libfido2, som redan innehåller det lager som krävs för OpenSSH.
Libfido2 stöder OpenBSD, Linux, macOS och Windows.

För att autentisera och generera en nyckel måste du ställa in miljövariabeln SSH_SK_PROVIDER, som i den anger sökvägen till libsk-libfido2.so (exportera SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), eller definiera biblioteket genom SecurityKeyProvider inställning och kör sedan "ssh-keygen -t ecdsa-sk" eller, om nycklarna redan har skapats och konfigurerats, anslut till servern med "ssh". När du kör ssh-keygen kommer det genererade nyckelparet att sparas i "~/.ssh/id_ecdsa_sk" och kan användas på samma sätt som andra nycklar.

Den publika nyckeln (id_ecdsa_sk.pub) ska kopieras till servern i filen authorized_keys. På serversidan verifieras endast den digitala signaturen och interaktion med tokens utförs på klientsidan (du behöver inte installera libsk-libfido2 på servern, men servern måste stödja nyckeltypen "ecdsa-sk") . Den genererade privata nyckeln (id_ecdsa_sk) är i huvudsak ett nyckelhandtag, som bildar en riktig nyckel endast i kombination med den hemliga sekvensen lagrad på U2F-tokensidan.

Om nyckeln id_ecdsa_sk hamnar i händerna på en angripare, för att godkänna autentiseringen måste han också få tillgång till hårdvarutoken, utan vilken den privata nyckeln som lagras i filen id_ecdsa_sk är värdelös. Som standard krävs dessutom lokal bekräftelse av användarens fysiska närvaro när man utför några operationer med nycklar (både under generering och under autentisering, till exempel föreslås att man rör vid sensorn på token, vilket gör det svårt att utföra fjärrattacker på system med en ansluten token. Som en annan försvarslinje kan ett lösenord också anges under startfasen av ssh-keygen för att komma åt nyckelfilen.

U2F-nyckeln kan läggas till ssh-agent via "ssh-add ~/.ssh/id_ecdsa_sk", men ssh-agent måste byggas med stöd för "ecdsa-sk"-nycklar, lagret libsk-libfido2 måste finnas och agenten måste köras på systemet som token är ansluten till.
En ny nyckeltyp "ecdsa-sk" har lagts till eftersom formatet för OpenSSH ecdsa-nycklar skiljer sig från U2F-formatet för ECDSA digitala signaturer i närvaro av ytterligare fält.

Källa: opennet.ru

Lägg en kommentar