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 часто сравнивают с другими приложениями-аутентификаторами:
| Характеристика | FreeOTP | Google Authenticator | Authy | Microsoft Authenticator |
|---|---|---|---|---|
| Лицензия | Apache 2.0 (открытый код) | Проприетарная | Проприетарная | Проприетарная |
| Исходный код | Доступен | Закрыт | Закрыт | Закрыт |
| Резервное копирование | Экспорт/импорт (с паролем) | Отсутствует | Облачная синхронизация | Облачная синхронизация |
| Поддержка HOTP | Да | Да | Нет | Нет |
| Поддержка TOTP | Да | Да | Да | Да |
| Мультиплатформенность | Android, iOS | Android, iOS | Android, iOS, Desktop | Android, 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 →