Представлен Proton Authenticator, генератор одноразовых паролей для двухфакторной аутентификации

Швейцарская компания Proton AG, развивающая сервисы Proton Mail, Proton Drive и Proton VPN, представила открытое приложение Proton Authenticator, предназначенное для аутентификации при помощи одноразовых паролей с ограниченным сроком действия, генерируемых при помощи алгоритма TOTP (Time-based One-Time Password). Proton Authenticator может применяться как более функциональная замена проприетарным аутентификаторам, таким как Google Authenticator, Microsoft Authenticator, Authy и Duo, а также в качестве альтернативы открытым проектам FreeOTP и oathtool. Код Proton Authenticator распространяется под лицензией GPLv3. Доступны как мобильные приложения для Android и iOS, так и настольные программы для Linux, macOS и Windows. При разработке в зависимости от платформы применяются языки Kotlin, Swift и Rust.

Среди возможностей и отличительных особенностей Proton Authenticator:

  • Поддержка создания шифрованных резервных копий исходных секретных ключей для их сохранения на локальном носителе или размещения в облаке.
  • Поддержка синхронизации ключей между несколькими устройствами пользователя с применением сквозного шифрования.
  • Возможность оргаричения доступа к приложению при помощи биометрической аутентификации или PIN-кода.
  • Возможность доступа к кодам в offline-режиме, без необходимости наличия сетевого соединения. Для получения ключей может использоваться QR-код.
  • Отсутствие встроенной рекламы и трекеров.
  • Работа без подключения к учётной записи в сервисах Proton.
  • Отсутствие привязки к одному производителю.
  • Функции импорта и экспорта для миграции ключей между разными платформами. Поддержка импорта ключей из Google authenticator, 2FAS, Aegis Authenticator, Bitwarden Authenticator, Ente Auth и LastPass Authenticator.

Алгоритм TOTP позволяет генерировать одноразовые коды подтверждения на локальном устройстве пользователя и проверять их на внешнем сервере, используя в качестве параметров секретный ключ и текущее время. Для генерации пароля обмен данными между клиентом и сервером не требуется (достаточно один раз инициализировать ключ, распознав показанный сервером QR-код или импортировав ключ вручную). Время жизни одноразового пароля обычно ограничивается 30 секундами, после чего требуется генерация нового пароля. Пароль генерируется путём вычисления хэша SHA-1, SHA-256 или SHA-512 над сочетанием из ключа и очередного интервала времени, и использования нескольких младших битов хэша для выделения проверочных цифр.