Till OpenSSH-kodbasen
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
För att aktivera U2F kan du använda en ny del av kodbasen från
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