OpenSSH tilføjer understøttelse af universel to-faktor-godkendelse

Til OpenSSH-kodebasen tilføjet eksperimentel understøttelse af to-faktor-godkendelse ved hjælp af enheder, der understøtter protokollen U2F, udviklet af alliancen Fido. U2F tillader oprettelsen af ​​billige hardware-tokens for at verificere brugerens fysiske tilstedeværelse, interagere med dem via USB, Bluetooth eller NFC. Sådanne enheder promoveres som et middel til to-faktor autentificering på websteder, understøttes allerede af større browsere og produceres af forskellige producenter, herunder Yubico, Feitian, Thetis og Kensington.

For at interagere med enheder, der bekræfter brugerens tilstedeværelse, er en ny type nøgler blevet tilføjet til OpenSSH "[e-mail beskyttet]” (“ecdsa-sk”), som bruger ECDSA (Elliptic Curve Digital Signature Algorithm) digital signaturalgoritme med NIST P-256 elliptisk kurve og SHA-256 hash. Procedurer for interaktion med tokens placeres i et mellembibliotek, som indlæses på samme måde som biblioteket til PKCS#11-understøttelse og er en indpakning oven på biblioteket libfido2, som giver værktøjer til at kommunikere med tokens over USB (protokollerne FIDO U2F/CTAP 1 og FIDO 2.0/CTAP 2 understøttes). Mellembibliotek libsk-libfido2 udarbejdet af OpenSSH-udviklere inkluderet ind i kernen libfido2, samt HID driver til OpenBSD.

For at aktivere U2F kan du bruge et nyt udsnit af kodebasen fra depot OpenSSH og HEAD-grenen af ​​biblioteket libfido2, som allerede inkluderer det nødvendige lag til OpenSSH.
Libfido2 understøtter OpenBSD, Linux, macOS og Windows.

For at godkende og generere en nøgle skal du indstille miljøvariablen SSH_SK_PROVIDER, der angiver stien til libsk-libfido2.so (eksportér SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), eller definere biblioteket gennem SecurityKeyProvider indstilling, og kør derefter "ssh-keygen -t ecdsa-sk" eller, hvis nøglerne allerede er oprettet og konfigureret, opret forbindelse til serveren ved hjælp af "ssh". Når du kører ssh-keygen, vil det genererede nøglepar blive gemt i "~/.ssh/id_ecdsa_sk" og kan bruges på samme måde som andre nøgler.

Den offentlige nøgle (id_ecdsa_sk.pub) skal kopieres til serveren i filen authorized_keys. På serversiden er det kun den digitale signatur, der verificeres, og interaktion med tokens udføres på klientsiden (du behøver ikke at installere libsk-libfido2 på serveren, men serveren skal understøtte nøgletypen "ecdsa-sk") . Den genererede private nøgle (id_ecdsa_sk) er i det væsentlige et nøglehåndtag, der kun danner en rigtig nøgle i kombination med den hemmelige sekvens, der er gemt på U2F-tokensiden.

Hvis id_ecdsa_sk-nøglen falder i hænderne på en angriber, skal han for at bestå autentificering også få adgang til hardwaretokenet, uden hvilket den private nøgle, der er gemt i id_ecdsa_sk-filen, er ubrugelig. Derudover kræves der som standard, når der udføres operationer med nøgler (både under generering og under autentificering), lokal bekræftelse af brugerens fysiske tilstedeværelse, f.eks. foreslås det at røre ved sensoren på tokenet, hvilket gør det vanskeligt at udføre fjernangreb på systemer med et tilsluttet token. Som en anden forsvarslinje kan en adgangskode også angives under opstartsfasen af ​​ssh-keygen for at få adgang til nøglefilen.

U2F-nøglen kan tilføjes til ssh-agent via "ssh-add ~/.ssh/id_ecdsa_sk", men ssh-agent skal bygges med understøttelse af "ecdsa-sk"-nøgler, libsk-libfido2-laget skal være til stede og agent skal køre på det system, som tokenet er forbundet til.
En ny nøgletype "ecdsa-sk" er blevet tilføjet, da formatet af OpenSSH ecdsa-nøgler adskiller sig fra U2F-formatet for ECDSA digitale signaturer i tilstedeværelsen af ​​yderligere felter.

Kilde: opennet.ru

Tilføj en kommentar