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

FreeOTP

FreeOTP — это свободное программное обеспечение с открытым исходным кодом, предназначенное для генерации одноразовых паролей (OTP) в рамках двухфакторной аутентификации (2FA). Разрабатывается компанией Red Hat, Inc. и распространяется под лицензией Apache 2.0. FreeOTP реализует алгоритмы, описанные в стандартах RFC 4226 (HOTP — HMAC-based One-Time Password) и RFC 6238 (TOTP — Time-based One-Time Password), и представляет собой приложение для мобильных устройств, работающее на операционных системах Android и iOS.

История

Проект FreeOTP был запущен компанией Red Hat в 2013 году. Основной целью разработки было создание свободной альтернативы проприетарным приложениям-аутентификаторам, таким как Google Authenticator. В отличие от последнего, FreeOTP изначально распространялся как полностью открытое программное обеспечение, исходный код которого доступен для проверки и модификации. Первая стабильная версия для Android была выпущена в 2013 году, а версия для iOS — в 2014 году. Разработка велась и ведётся в основном силами сообщества и инженеров Red Hat, при этом проект не имеет коммерческой монетизации и поддерживается как часть экосистемы свободного ПО.

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

FreeOTP генерирует одноразовые пароли на основе двух алгоритмов, стандартизированных IETF:

Алгоритм HOTP (RFC 4226)

HOTP (HMAC-based One-Time Password) использует в качестве входных данных секретный ключ и счётчик, который увеличивается при каждой успешной аутентификации. Пароль генерируется путём вычисления HMAC-SHA1 от значения счётчика с использованием секретного ключа. Полученный хеш затем преобразуется в числовое значение заданной длины (обычно 6 или 8 цифр). Для успешной аутентификации сервер и клиент должны синхронизировать значения счётчика.

Алгоритм TOTP (RFC 6238)

TOTP (Time-based One-Time Password) является расширением HOTP, в котором вместо счётчика используется текущее время. Временной шаг (time step) обычно составляет 30 секунд, хотя может быть задан иной интервал. Пароль действителен только в течение этого временного окна. Алгоритм вычисляет HMAC-SHA1 от значения, полученного как количество временных шагов, прошедших с определённой эпохи (обычно 1 января 1970 года). TOTP является наиболее распространённым методом в современных системах 2FA.

Устройство и функциональность

Приложение FreeOTP имеет минималистичный интерфейс и предоставляет следующий набор функций:

  • Добавление учётных записей: через сканирование QR-кода, содержащего секретный ключ и параметры (URL-схема otpauth://), или ручной ввод ключа в виде строки Base32.
  • Генерация паролей: отображение текущего одноразового пароля для каждой учётной записи с таймером обратного отсчёта (для TOTP) или счётчиком (для HOTP).
  • Управление учётными записями: удаление, переименование и изменение порядка отображения.
  • Экспорт/импорт данных: возможность экспорта всех учётных записей в зашифрованном виде (с использованием мастер-пароля) для резервного копирования или переноса на другое устройство. Импорт осуществляется из файла JSON.
  • Поддержка нескольких алгоритмов: помимо SHA1, поддерживаются SHA256 и SHA512 для HMAC.
  • Настройка длины пароля: от 6 до 8 цифр.

Приложение не требует подключения к интернету для генерации паролей, так как все вычисления производятся локально на устройстве. Секретные ключи хранятся в зашифрованном хранилище операционной системы (Android Keystore, iOS Keychain).

Применение

FreeOTP используется для усиления безопасности учётных записей в интернет-сервисах, корпоративных системах и облачных платформах. Типичные сценарии применения:

  • Веб-сервисы: добавление второго фактора при входе в аккаунты Google, GitHub, Dropbox, Microsoft, Amazon и других сервисов, поддерживающих стандарт TOTP.
  • Корпоративные системы: аутентификация в VPN, серверах с FreeIPA, Red Hat Enterprise Linux, а также в системах управления доступом (например, FreeRADIUS).
  • Облачные платформы: двухфакторная аутентификация в AWS, Azure, Google Cloud Platform.
  • Самостоятельные серверы: настройка 2FA для SSH-доступа, веб-приложений, форумов и CMS.

Безопасность

FreeOTP считается безопасным решением для хранения секретных ключей, так как они не покидают устройство и не передаются третьим лицам. Однако, как и любое приложение-аутентификатор, оно уязвимо к следующим угрозам:

  • Потеря или кража устройства: злоумышленник, получив доступ к разблокированному устройству, может получить доступ к секретным ключам. Рекомендуется использовать дополнительную защиту (PIN-код, биометрию).
  • Вредоносное ПО: при заражении устройства вредоносным кодом, имеющим доступ к хранилищу приложения, ключи могут быть скомпрометированы.
  • Отсутствие шифрования при экспорте: если экспорт данных не защищён мастер-паролем, резервная копия может быть прочитана.

Разработчики FreeOTP не собирают телеметрию и не имеют доступа к данным пользователей. Приложение не содержит рекламы и трекеров.

Сравнение с аналогами

FreeOTP часто сравнивают с другими приложениями-аутентификаторами:

ХарактеристикаFreeOTPGoogle AuthenticatorAuthyMicrosoft Authenticator
ЛицензияApache 2.0 (открытый код)ПроприетарнаяПроприетарнаяПроприетарная
Исходный кодДоступенЗакрытЗакрытЗакрыт
Резервное копированиеЭкспорт/импорт (с паролем)ОтсутствуетОблачная синхронизацияОблачная синхронизация
Поддержка HOTPДаДаНетНет
Поддержка TOTPДаДаДаДа
МультиплатформенностьAndroid, iOSAndroid, iOSAndroid, iOS, DesktopAndroid, iOS
Сбор данныхНетДа (аналитика)Да (регистрация)Да (учётная запись Microsoft)

Основным преимуществом FreeOTP является его открытость и отсутствие привязки к какой-либо экосистеме. Недостатком считается отсутствие облачной синхронизации, что требует от пользователя самостоятельного резервного копирования.

Критика

Проект FreeOTP подвергался критике за медленный темп разработки и отсутствие некоторых функций, доступных в коммерческих аналогах. В частности, пользователи отмечали:

  • Отсутствие встроенной поддержки резервного копирования в облако (до версии 2.0, где появился ручной экспорт).
  • Отсутствие поддержки алгоритмов, отличных от SHA1 (SHA256, SHA512), в ранних версиях.
  • Минималистичный интерфейс, который может быть неудобен для пользователей с большим количеством учётных записей.
  • Отсутствие push-уведомлений и поддержки аутентификации по FIDO2/WebAuthn.

Тем не менее, для пользователей, ценящих свободу программного обеспечения и контроль над своими данными, FreeOTP остаётся одним из предпочтительных вариантов.

Интересные факты

  • FreeOTP является официальным приложением-аутентификатором для проекта FreeIPA — интегрированной системы управления идентификацией, разрабатываемой Red Hat.
  • Исходный код FreeOTP написан на Java (Android) и Swift (iOS) и доступен на GitHub.
  • Приложение не имеет встроенного механизма обновления секретных ключей — для смены ключа необходимо удалить и заново добавить учётную запись.
  • Название «FreeOTP» отражает как свободный статус ПО (free software), так и бесплатность распространения (free of charge).

Источники

  • RFC 4226 — HOTP: An HMAC-Based One-Time Password Algorithm
  • RFC 6238 — TOTP: Time-Based One-Time Password Algorithm
  • Официальный репозиторий FreeOTP на GitHub (github.com/freeotp)
  • Документация FreeIPA по настройке двухфакторной аутентификации
  • Статья «FreeOTP: A Free and Open Source Two-Factor Authentication App» на сайте Red Hat
  • Сравнение приложений-аутентификаторов на портале OpenSource.com

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

На главную BFOmetr →