Az OpenSSH kódalapjába kísérleti támogatás a kétfaktoros hitelesítéshez, az azt támogató eszközök használatával, amelyek a protokollt alkalmazzák. , a szövetség által kifejlesztett. Az U2F lehetővé teszi, hogy olcsó hardvertokeneket hozzunk létre a felhasználó fizikai jelenlétének megerősítésére, amelyek USB, Bluetooth vagy NFC interfészen keresztül kommunikálnak. Ezeket az eszközöket a kétfaktoros hitelesítési megoldások részeként népszerűsítik, a főbb böngészők már támogatják őket, és különböző gyártók, például Yubico, Feitian, Thetis és Kensington kínálják.
Az OpenSSH új kulcstípust vezetett be az eszközökkel való kommunikációhoz, amelyek megerősítik a felhasználó jelenlétét: "sk-ecdsa-sha2-nistp256@openssh.com" ("ecdsa-sk"), amely az ECDSA (Elliptikus Görbe Digitális Aláírási Algoritmus) aláírási algoritmust használja a NIST P-256 elliptikus görbén és a SHA-256 hashnál. A tokének kölcsönhatásának eljárásait leválasztották egy köztes könyvtárra, amely a PKCS#11 támogatásához hasonlóan van betöltve és egy burkolata a könyvtárnak. , amely eszközöket biztosít USB-n keresztül történő kommunikációhoz (támogatja a FIDO U2F/CTAP 1 és FIDO 2.0/CTAP 2 protokollokat). Az OpenSSH fejlesztői által készített libsk-libfido2 köztes könyvtár a libfido2 fő összetevője, akárcsak a az OpenBSD-hez.
Az U2F aktiválásához friss vágást lehet használni a kódalapból az OpenSSH-ból és a HEAD ágból a könyvtárhoz, , amely már tartalmazza az OpenSSH-hoz szükséges réteget.
A Libfido2 támogatja az OpenBSD, Linux, macOS és Windows rendszerek működését.
A hitelesítéshez és a kulcs generáláshoz be kell állítani a SSH_SK_PROVIDER környezeti változót a libsk-libfido2.so elérési útjának megadásával (export SSH_SK_PROVIDER=\/path\/to\/libsk-libfido2.so), vagy a SecurityKeyProvider beállításon keresztül kell definiálni a könyvtárat, majd futtatni a "ssh-keygen -t ecdsa-sk" parancsot, vagy ha a kulcsok már létrejöttek és be vannak állítva, csatlakozni a szerverhez a "ssh" használatával. A "ssh-keygen" futtatásakor a létrehozott kulcspár a "~\/ .ssh\/id_ecdsa_sk" fájlba lesz mentve és más kulcsokkal együtt használható.
A nyilvános kulcsot (id_ecdsa_sk.pub) másolni kell a szerverre az authorized_keys fájlba. A szerver oldalán csak a digitális aláírás kerül ellenőrzésre, a tokének kölcsönhatását a kliens oldalán intézik (a szerveren nem szükséges a libsk-libfido2 telepítése, de a szervernek támogatnia kell az "ecdsa-sk" kulcstype-ot). A generált privát kulcs (id_ecdsa_sk) valójában egy kulcsképző, amely csak a U2F tokenen tárolt titkos sorozattal együtt képez valódi kulcsot.
Ha az id_ecdsa_sk kulcs támadó kezébe kerül, az authentikációhoz szüksége lesz egy hardver tokenre is, különben az id_ecdsa_sk fájlban tárolt privát kulcs haszontalan. Ezen kívül, alapértelmezés szerint bármilyen kulccsal kapcsolatos művelet (legyen az generálás vagy authentikáció) helyi megerősítést igényel a felhasználó fizikai jelenlétének igazolására, például a token érzékelőjének megérintésével, ami megnehezíti a távoli támadások végrehajtását a csatlakoztatott tokennel rendelkező rendszerek ellen. További védelmi lépésként az ssh-keygen indításakor jelszót is megadhatunk a kulcsfájlhoz való hozzáféréshez.
A U2F kulcs hozzáadható az ssh-agenthez az "ssh-add ~/.ssh/id_ecdsa_sk" paranccsal, de az ssh-agentnek ecdsa-sk kulcsok támogatásával kell felépülnie, szükséges a libsk-libfido2 réteg, és az agentnek azon a rendszeren kell futnia, amelyhez a token csatlakozik.
Az új "ecdsa-sk" kulcs típus hozzáadva, mivel az OpenSSH ecdsa kulcsainak formátuma eltér az U2F ECDSA digitális aláírások formátumától, mivel további mezőket tartalmaz.
Forrás: opennet.ru
