OpenSSH přidává podporu pro univerzální dvoufaktorovou autentizaci

Do kódové základny OpenSSH přidal experimentální podpora dvoufaktorové autentizace pomocí zařízení podporujících protokol U2F, vyvinuté aliancí FIDO. U2F umožňuje vytváření levných hardwarových tokenů pro ověření fyzické přítomnosti uživatele, interakci s nimi přes USB, Bluetooth nebo NFC. Taková zařízení jsou propagována jako prostředek dvoufaktorové autentizace na webových stránkách, jsou již podporována velkými prohlížeči a vyrábí je různí výrobci, včetně Yubico, Feitian, Thetis a Kensington.

Pro interakci se zařízeními, která potvrzují přítomnost uživatele, byl do OpenSSH přidán nový typ klíčů.[chráněno e-mailem]“ („ecdsa-sk“), který používá algoritmus digitálního podpisu ECDSA (Elliptic Curve Digital Signature Algorithm) s eliptickou křivkou NIST P-256 a hash SHA-256. Procedury pro interakci s tokeny jsou umístěny v přechodné knihovně, která se načítá podobným způsobem jako knihovna pro podporu PKCS#11 a je obalem nad knihovnou. libfido2, která poskytuje nástroje pro komunikaci s tokeny přes USB (podporovány jsou protokoly FIDO U2F/CTAP 1 a FIDO 2.0/CTAP 2). Prostřední knihovna libsk-libfido2 připravená vývojáři OpenSSH zahrnuta do jádra libfido2, stejně jako HID ovladač pro OpenBSD.

Chcete-li povolit U2F, můžete použít novou část kódové základny z úložiště OpenSSH a větev knihovny HEAD libfido2, který již obsahuje vrstvu potřebnou pro OpenSSH.
Libfido2 podporuje OpenBSD, Linux, macOS a Windows.

Chcete-li ověřit a vygenerovat klíč, musíte nastavit proměnnou prostředí SSH_SK_PROVIDER a uvést v ní cestu k libsk-libfido2.so (exportovat SSH_SK_PROVIDER=/cesta/k/libsk-libfido2.so) nebo definovat knihovnu prostřednictvím SecurityKeyProvider a poté spusťte „ssh-keygen -t ecdsa-sk“, nebo pokud již byly klíče vytvořeny a nakonfigurovány, připojte se k serveru pomocí „ssh“. Když spustíte ssh-keygen, vygenerovaný pár klíčů se uloží do „~/.ssh/id_ecdsa_sk“ a lze jej použít podobně jako jiné klíče.

Veřejný klíč (id_ecdsa_sk.pub) by měl být zkopírován na server do souboru author_keys. Na straně serveru se ověřuje pouze digitální podpis a interakce s tokeny se provádí na straně klienta (není třeba instalovat libsk-libfido2 na server, ale server musí podporovat typ klíče „ecdsa-sk“) . Generovaný soukromý klíč (id_ecdsa_sk) je v podstatě klíčový klíč, který tvoří skutečný klíč pouze v kombinaci s tajnou sekvencí uloženou na straně tokenu U2F.

Pokud se klíč id_ecdsa_sk dostane do rukou útočníka, bude k předání autentizace potřebovat také získat přístup k hardwarovému tokenu, bez kterého je soukromý klíč uložený v souboru id_ecdsa_sk k ničemu. Navíc je standardně při provádění jakýchkoli operací s klíči (jak při generování, tak při autentizaci) vyžadováno lokální potvrzení fyzické přítomnosti uživatele, například se navrhuje dotknout se senzoru na tokenu, což znesnadňuje provádět vzdálené útoky na systémy s připojeným tokenem. Jako další obrannou linii lze během spouštěcí fáze ssh-keygen zadat heslo pro přístup k souboru klíče.

Klíč U2F lze přidat do ssh-agenta pomocí "ssh-add ~/.ssh/id_ecdsa_sk", ale ssh-agent musí být vytvořen s podporou klíčů "ecdsa-sk", musí být přítomna vrstva libsk-libfido2 a agent musí být spuštěn v systému, ke kterému je token připojen.
Byl přidán nový typ klíče „ecdsa-sk“, protože formát klíčů ecdsa OpenSSH se liší od formátu U2F pro digitální podpisy ECDSA přítomností dalších polí.

Zdroj: opennet.ru

Přidat komentář