В OpenSSH е добавена поддръжка за универсална двуфакторна автентификация

В кодовата база на OpenSSH е добавена експериментална поддръжка на двуфакторна автентификация с използване на устройства, които поддържат протокола U2F, развиван от алианса FIDO. U2F позволява създаването на евтини хардуерни токени за потвърждаване на физическото присъствие на потребителя, с взаимодействие чрез USB, Bluetooth или NFC. Подобни устройства се предлагат като средство за двуфакторна автентификация на сайтове, вече са поддържани от основните браузъри и се произвеждат от различни производители, включително Yubico, Feitian, Thetis и Kensington.

За взаимодействие с устройства, потвърждаващи присъствието на потребителя, в OpenSSH е добавен нов тип ключове „sk-ecdsa-sha2-nistp256@openssh.com“ („ecdsa-sk“), при който се използва алгоритъм за цифрова подпис ECDSA (Elliptic Curve Digital Signature Algorithm) с елиптична крива NIST P-256 и хеш SHA-256. Процедурите за взаимодействие с токените са изнесени в междинна библиотека, която се зарежда аналогично на библиотеката за поддръжка на PKCS#11 и е обвивка над библиотеката libfido2, предоставяща средства за комуникация с токени чрез USB (поддържат се протоколите FIDO U2F/CTAP 1 и FIDO 2.0/CTAP 2). Подготвената от разработчиците на OpenSSH междинна библиотека libsk-libfido2 включена е основна част от libfido2, както и HID-драйвер за OpenBSD.

За включване на U2F може да се използва свежа версия на кодовата база от [istio-mastery] OpenSSH и главната клонна библиотека libfido2, в която вече е включена необходимата за OpenSSH прослойка.
Libfido2 поддържа работа в OpenBSD, Linux, macOS и Windows.

За автентификация и генериране на ключа е необходимо да се зададе променливата на средата SSH_SK_PROVIDER, указвайки в нея пътя до libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), или да се определи библиотеката чрез настройка SecurityKeyProvider, след което да се стартира „ssh-keygen -t ecdsa-sk“ или, ако ключовете вече са създадени и настроени, да се свържете със сървъра с помощта на „ssh“. При стартиране на ssh-keygen, създадената двойка ключове ще бъде запазена в „~/.ssh/id_ecdsa_sk“ и може да се използва аналогично на другите ключове.

Публичният ключ (id_ecdsa_sk.pub) трябва да бъде копиран на сървъра в файла authorized_keys. На страната на сървъра се проверява само цифровият подпис, а взаимодействието с токените се извършва на страната на клиента (не е необходимо да се инсталира libsk-libfido2 на сървера, но сървърът трябва да поддържа типа ключове „ecdsa-sk“). Генерираният частен ключ (id_ecdsa_sk) всъщност представлява дескриптор на ключа, образуващ реалния ключ само в комбинация с тайна последователност, съхранявана на страната на токена U2F.

В случай че ключът id_ecdsa_sk попадне в ръцете на нападател, за да премине аутентификация, ще му е необходим достъп и до хардуерния токен, без който запазеният в файла id_ecdsa_sk частен ключ е безполезен. Освен това, по подразбиране при извършване на всякакви операции с ключовете (както при генериране, така и при аутентификация) се изисква локално потвърждение за физическото присъствие на потребителя, например, предлагане за докосване на сензора на токена, което затруднява извършването на отдалечени атаки на системи с включен токен. Като още една защитна мярка на етапа на стартиране ssh-keygen може също така да зададе парола за достъп до файла с ключа.

U2F ключът може да бъде добавен в ssh-agent чрез „ssh-add ~/.ssh/id_ecdsa_sk“, но ssh-agent трябва да бъде сглобен с поддръжка на ключове „ecdsa-sk“, трябва да присъства слой libsk-libfido2 и агентът трябва да работи на системата, към която се свързва токенът.
Новият тип ключове „ecdsa-sk“ е добавен, тъй като форматът на ecdsa ключовете OpenSSH се различава от формата U2F за цифрови подписи ECDSA по наличие на допълнителни полета.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster