OpenSSH legger til støtte for universell tofaktorautentisering

Til OpenSSH-kodebasen la til eksperimentell støtte for tofaktorautentisering ved bruk av enheter som støtter protokollen U2F, utviklet av alliansen FIDO. U2F gjør det mulig å lage billige maskinvaretokens for å verifisere brukerens fysiske tilstedeværelse, og samhandle med dem via USB, Bluetooth eller NFC. Slike enheter markedsføres som et middel for tofaktorautentisering på nettsteder, støttes allerede av store nettlesere og produseres av forskjellige produsenter, inkludert Yubico, Feitian, Thetis og Kensington.

For å samhandle med enheter som bekrefter brukerens tilstedeværelse, har en ny type nøkler blitt lagt til OpenSSH "[e-postbeskyttet]” (“ecdsa-sk”), som bruker ECDSA (Elliptic Curve Digital Signature Algorithm) digital signaturalgoritme med NIST P-256 elliptisk kurve og SHA-256 hash. Prosedyrer for samhandling med tokens plasseres i et mellombibliotek, som lastes på lignende måte som biblioteket for PKCS#11-støtte og er en innpakning på toppen av biblioteket libfido2, som gir verktøy for å kommunisere med tokens over USB (protokollene FIDO U2F/CTAP 1 og FIDO 2.0/CTAP 2 støttes). Mellombibliotek libsk-libfido2 utarbeidet av OpenSSH-utviklere inkludert inn i kjernen libfido2, så vel som HID-driver for OpenBSD.

For å aktivere U2F kan du bruke en ny del av kodebasen fra oppbevaringssted OpenSSH og HEAD-grenen til biblioteket libfido2, som allerede inkluderer laget som er nødvendig for OpenSSH.
Libfido2 støtter OpenBSD, Linux, macOS og Windows.

For å autentisere og generere en nøkkel, må du sette SSH_SK_PROVIDER miljøvariabelen, og angi banen til libsk-libfido2.so (eksporter SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), eller definere biblioteket gjennom SecurityKeyProvider innstilling, og kjør deretter "ssh-keygen -t ecdsa-sk" eller, hvis nøklene allerede er opprettet og konfigurert, koble til serveren med "ssh". Når du kjører ssh-keygen, vil det genererte nøkkelparet bli lagret i "~/.ssh/id_ecdsa_sk" og kan brukes på samme måte som andre nøkler.

Den offentlige nøkkelen (id_ecdsa_sk.pub) skal kopieres til serveren i filen authorized_keys. På serversiden er kun den digitale signaturen verifisert, og interaksjon med tokens utføres på klientsiden (du trenger ikke installere libsk-libfido2 på serveren, men serveren må støtte nøkkeltypen "ecdsa-sk") . Den genererte private nøkkelen (id_ecdsa_sk) er i hovedsak et nøkkelhåndtak, og danner en ekte nøkkel bare i kombinasjon med den hemmelige sekvensen som er lagret på U2F-tokensiden.

Hvis id_ecdsa_sk-nøkkelen faller i hendene på en angriper, vil han for å bestå autentisering også måtte få tilgang til maskinvaretokenet, uten hvilket den private nøkkelen som er lagret i id_ecdsa_sk-filen er ubrukelig. I tillegg, som standard, når du utfører operasjoner med nøkler (både under generering og under autentisering), kreves lokal bekreftelse av brukerens fysiske tilstedeværelse, for eksempel foreslås det å berøre sensoren på tokenet, noe som gjør det vanskelig å utføre eksterne angrep på systemer med tilkoblet token. Som en annen forsvarslinje kan et passord også spesifiseres under oppstartsfasen av ssh-keygen for å få tilgang til nøkkelfilen.

U2F-nøkkelen kan legges til ssh-agent via "ssh-add ~/.ssh/id_ecdsa_sk", men ssh-agent må bygges med støtte for "ecdsa-sk"-nøkler, libsk-libfido2-laget må være tilstede og agent må kjøres på systemet som tokenet er koblet til.
En ny nøkkeltype "ecdsa-sk" er lagt til siden formatet til OpenSSH ecdsa-nøkler er forskjellig fra U2F-formatet for ECDSA digitale signaturer i nærvær av tilleggsfelt.

Kilde: opennet.ru

Legg til en kommentar