У OpenSSH дададзеная падтрымка ўніверсальнай двухфактарнай аўтэнтыфікацыі.

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

Для ўзаемадзеяння з прыладамі, якія пацвярджаюць прысутнасць карыстальніка, у OpenSSH дададзены новы тып ключоў.[электронная пошта абаронена]»(«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 можна выкарыстоўваць свежы зрэз кодавай базы з рэпазітара OpenSSH і HEAD-галінку бібліятэкі libfido2, у якую ўжо ўваходзіць неабходная для OpenSSH праслойка.
Libfido2 падтрымлівае працу ў OpenBSD, Linux, macOS і Windows.

Для аўтэнтыфікацыі і генерацыі ключа неабходна выставіць зменную асяроддзі SSH_SK_PROVIDER, паказаўшы ў ёй шлях да libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ці вызначыць бібліятэку праз настойку SecurityKeyProvider, пасля чаго запусціць 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

Дадаць каментар