Открыть сервис

Yubico OTP

Yubico OTP — это одноразовый пароль, генерируемый аппаратными USB-ключами YubiKey, разработанными шведской компанией Yubico. Данный протокол аутентификации предназначен для повышения безопасности учётных записей и сервисов за счёт использования физического устройства, которое создаёт уникальные, одноразовые коды, не поддающиеся повторному использованию или предсказанию.

История и предпосылки создания

Протокол Yubico OTP был разработан и внедрён компанией Yubico в 2008 году одновременно с выпуском первого поколения YubiKey. Основной предпосылкой для его создания стало стремление предложить простой, дешёвый и удобный способ двухфакторной аутентификации (2FA), который был бы значительно надёжнее SMS-кодов или программных генераторов, но при этом не требовал сложной инфраструктуры, как, например, смарт-карты или биометрические системы.

В отличие от многих существовавших на тот момент решений, Yubico OTP не требует установки драйверов, синхронизации времени или подключения к сети для генерации кода. Ключ эмулирует стандартную USB-клавиатуру и «вводит» пароль в поле ввода, что делает его совместимым с любыми операционными системами и веб-браузерами без специального программного обеспечения.

Принцип работы

Yubico OTP основан на комбинации симметричного шифрования (AES-128) и счётчика. Каждый YubiKey содержит уникальный 128-битный ключ шифрования (AES-key) и публичный идентификатор (Public ID). Процесс генерации и проверки пароля выглядит следующим образом:

Генерация на стороне устройства

  1. При нажатии на кнопку YubiKey, устройство считывает текущее значение внутреннего счётчика (incremental counter), который увеличивается при каждой генерации.
  2. Устройство формирует блок данных, который включает:
  1. Этот блок данных шифруется с использованием AES-128 с секретным ключом, хранящимся в защищённой области YubiKey.
  2. Результат шифрования вместе с идентификатором устройства преобразуется в строку символов (обычно 44 символа в формате ModHex). Это и есть одноразовый пароль.

Проверка на сервере

  1. Сервер аутентификации (например, YubiCloud или собственный сервер проверки) получает одноразовый пароль.
  2. Сервер извлекает из пароля публичный идентификатор и по нему находит в своей базе данных соответствующий секретный ключ AES для этого конкретного YubiKey.
  3. Сервер расшифровывает вторую часть пароля и проверяет:
  • Соответствие идентификатора устройства.
  • Что значение счётчика больше последнего принятого (защита от повторного использования).
  • Что случайное число (nonce) не было использовано ранее (защита от коллизий).
  1. Если все проверки пройдены, сервер подтверждает аутентификацию. Если пароль был использован ранее или не соответствует ожиданиям, он отклоняется.

Формат пароля

Одноразовый пароль Yubico OTP представляет собой строку из 44 символов в кодировке ModHex. ModHex — это модифицированная версия шестнадцатеричной системы счисления, использующая только символы cbdefghijklnrtuv (строчные латинские буквы, исключающие путаницу между похожими символами, например, o и 0).

Структура пароля:

  • Первые 12 символов: Публичный идентификатор (Public ID) устройства. Он не является секретным и позволяет серверу определить, какой именно ключ использовался.
  • Оставшиеся 32 символа: Зашифрованный блок данных (счётчик, nonce, идентификатор). Эта часть является секретной и действительна только для одной аутентификации.

Пример пароля: ccccccbcjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgj

Преимущества и недостатки

Преимущества:

  • Простота использования: Пользователю достаточно нажать кнопку на ключе, и пароль автоматически вводится в поле.
  • Высокая безопасность: Пароль генерируется на аппаратном уровне, секретный ключ никогда не покидает устройство. Счётчик защищает от повторного использования.
  • Независимость от времени: В отличие от TOTP (Time-based One-Time Password), Yubico OTP не требует синхронизации часов, что упрощает реализацию.
  • Низкая стоимость: YubiKey является относительно недорогим устройством по сравнению с другими аппаратными токенами.

Недостатки:

  • Одноразовость: Пароль можно использовать только один раз. Если пользователь случайно сгенерировал пароль, не использовав его, он становится недействительным, и необходимо генерировать новый.
  • Зависимость от сервера: Для проверки пароля требуется сервер аутентификации (YubiCloud или собственный). В случае недоступности сервера аутентификация невозможна.
  • Ограниченная длина пароля: Длина в 44 символа может быть неудобна для ввода вручную, хотя для автоматического ввода через эмуляцию клавиатуры это не проблема.

Использование и применение

Yubico OTP широко используется для двухфакторной аутентификации (2FA) в различных сервисах и приложениях:

  • Корпоративная среда: Интеграция с системами управления доступом (SSO), VPN-клиентами, почтовыми серверами и облачными платформами (например, Google Workspace, Microsoft 365).
  • Пользовательские сервисы: Поддержка YubiKey и Yubico OTP реализована в таких сервисах, как GitHub, Dropbox, LastPass, Bitwarden и многих других.
  • Операционные системы: Встроенная поддержка Yubico OTP для аутентификации в Linux (через PAM) и Windows (через сторонние утилиты).

Альтернативные протоколы YubiKey

Помимо Yubico OTP, YubiKey поддерживает и другие протоколы аутентификации:

  • OATH-TOTP (Time-based One-Time Password): Генерация кодов на основе времени, аналогичная Google Authenticator. Требует установки приложения Yubico Authenticator.
  • FIDO U2F / FIDO2 / WebAuthn: Современные стандарты беcпарольной аутентификации, использующие асимметричную криптографию. Считаются более безопасными и удобными, чем OTP.
  • PIV (Personal Identity Verification): Использование YubiKey как смарт-карты для хранения сертификатов и цифровых подписей.
  • OpenPGP: Хранение и использование ключей GPG для шифрования и подписывания.

Критика и ограничения

Основная критика Yubico OTP связана с его зависимостью от централизованного сервера проверки (YubiCloud). Хотя компания Yubico предоставляет возможность развернуть собственный сервер проверки (Yubico Validation Server), это требует дополнительных затрат и администрирования. Кроме того, протокол не поддерживает шифрование на стороне клиента, что делает его уязвимым для атак «человек посередине» (MITM) при передаче пароля по незащищённому каналу. Однако в современных реализациях пароль передаётся только через HTTPS.

Несмотря на эти ограничения, Yubico OTP остаётся одним из самых распространённых и проверенных временем протоколов аппаратной двухфакторной аутентификации, особенно в корпоративной среде, где требуется простота развёртывания и высокая надёжность.

Источники

  • Yubico. (2008). «YubiKey: The First USB One-Time Password Token».
  • Yubico. (2016). «Yubico OTP Protocol Specification».
  • RFC 4226 (HOTP: An HMAC-Based One-Time Password Algorithm).
  • Документация к YubiKey и Yubico OTP на официальном сайте Yubico.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →