+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

У кодову базу OpenSSH додано експериментальну підтримку двофакторної аутентифікації

У кодову базу 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). . Підготовлена ​​розробниками 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, після чого запустити "ssh -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 наявністю додаткових полів.

Інші новини