У кодову базу OpenSSH
Для взаємодії з пристроями, що підтверджують присутність користувача, до OpenSSH додано новий тип ключів «[захищено електронною поштою]»(«ecdsa-sk»), в якому використовується алгоритм цифрового підпису ECDSA (Elliptic Curve Digital Signature Algorithm) з еліптичною кривою NIST P-256 та хеш SHA-256. Процедури взаємодії з токенами винесені до проміжної бібліотеки, яка завантажується за аналогією з бібліотекою для підтримки PKCS#11 та є обв'язкою над бібліотекою
Для включення U2F можна використовувати свіжий зріз кодової бази
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