Open Source 2FA

Open Source 2FA

Разбор Smart2FA (0xid Edition) 2FA-аутентификатора с открытым исходным кодом, локальным шифрованием AES-256, биометрией и поддержкой десктопа и мобильных устройств.

Безопасность против удобства: дилемма аутентификации

В современной цифровой инфраструктуре двухфакторная аутентификация (2FA) - один из наиболее эффективных способов предотвращения несанкционированного доступа к аккаунтам. Тем не менее большинство популярных приложений-аутентификаторов заставляют идти на нежелательные компромиссы:

  1. Риски централизованной облачной синхронизации: Хранение нешифрованных или управляемых провайдером токенов в проприетарных облаках расширяет поверхность атак, создает единую точку отказа и приводит к привязке к конкретной экосистеме (vendor lock-in).

  2. Избыточная телеметрия и трекинг: Многие коммерческие аутентификаторы собирают аналитику, идентификаторы устройств и метрики использования, нарушая приватность.

  3. Ограничения экспорта и платформенная привязка: Недостаточные возможности экспорта усложняют миграцию между платформами и увеличивают риск потери данных при смене устройства.

Чтобы обеспечить полную автономию пользователей, максимальную защиту данных и высокую производительность, мы создали Smart2FA (0xid Edition) - открытый клиентский аутентификатор с архитектурой Zero-Knowledge, исключающий сбор телеметрии, минимизирующий системные уязвимости и выполненный в стильном индустриальном дизайне.


Ключевая философия: Zero-Knowledge и принцип Local-First

Архитектура Smart2FA базируется на трех основополагающих принципах:

  • 100% Offline по умолчанию: Никаких бэкенд-сервисов, аналитики и внешних сетевых запросов.

  • Криптографическая изоляция на стороне клиента: Все секреты остаются зашифрованными как на диске, так и в памяти до момента явной авторизации пользователем.

  • Портативность и совместимость: Поддержка стандартных форматов RFC, мгновенный пакетный импорт и удобная кроссплатформенная работа: Web, Desktop (Tauri/Rust) и Mobile (Capacitor).


Архитектура и функциональные возможности

1. Надежная криптографическая модель хранилища

Smart2FA никогда не сохраняет мастер-PIN в открытом виде. Схема хранения и расшифровки обеспечивает надежную защиту от атак перебором и дампов локального хранилища:

2fa схема

2fa схема

  • Жизненный цикл PIN в оперативной памяти: Расшифрованное состояние и рабочие секреты хранятся исключительно в энергозависимой оперативной памяти (RAM) в хранилище Pinia. Блокировка приложения, уход со страницы или ее перезагрузка мгновенно очищают память.

  • Биометрическая аутентификация (WebAuthn): На поддерживаемых устройствах (Touch ID, Face ID, Windows Hello) WebAuthn безопасно оборачивает ключ, обеспечивая мгновенный вход в одно касание без ущерба для криптографической стойкости.

  • Автоматическая блокировка: Настраиваемый тайм-аут бездействия (от 30 сек до 30 мин) для минимизации рисков при работе за общими устройствами.

  • Необратимый сброс данных (Panic Wipe): Защитный механизм очистки, требующий явного текстового подтверждения (WIPE), мгновенно удаляет все ключи и локальные данные.

2. TOTP-движок RFC 6238 и удобство в реальном времени

  • Широкая поддержка протоколов: Работает на базе библиотеки otpauth, поддерживает алгоритмы SHA-1, SHA-256 и SHA-512, коды из 6, 7 или 8 цифр, а также произвольные периоды обновления (30 с / 60 с).

  • Наглядная индикация таймера: Динамический индикатор оставшегося времени, предупреждающе окрашивающийся в красный цвет за 5 секунд до смены кода.

  • Копирование в один клик: Мгновенное копирование кода в буфер обмена с информативными всплывающими toast-уведомлениями.

3. Гибкий ввод, автокатегоризация и импорт из Google Authenticator

  • Встроенный сканер QR-кодов: Быстрое распознавание камерой через html5-qrcode с автоматическим парсингом URI otpauth://.

  • Пакетная миграция из Google Authenticator: Сканирование стандартного QR-кода экспорта «Перенос аккаунтов» (Transfer Accounts) из Google Authenticator и импорт всех учетных записей за одну операцию.

  • Умное определение категорий: Автоматическое распределение токенов по цветовым категориям (Work, Crypto, Finance, Social, Email, Gaming, Other) на основе имени сервиса (например, GitHub -> Work, Binance -> Crypto) и удобные вкладки фильтрации.

4. Зашифрованный экспорт и импорт (формат .oxid)

  • Экспорт всего хранилища в зашифрованный контейнерный файл .oxid с меткой времени, защищенный ключом AES-256 на основе PIN-кода экспорта.

  • Такие зашифрованные файлы можно безопасно хранить в холодном хранилище или передавать по открытым каналам без риска раскрытия секретов.

5. Кроссплатформенность: Desktop и Mobile

  • Tauri v2 (Rust Backend): Высокая производительность, минимальный размер бинарного файла, интеграция с системным треем и поддержка сворачивания в трей в фоновом режиме.

  • Мобильная сборка на Capacitor: Готовность к развертыванию на Android-устройствах.

  • Индустриальный интерфейс:


Технологический стек

  • Фронтенд: Vue 3 (Composition API & <script setup>), Pinia 2, Vue Router 4, Tailwind CSS.

  • Десктопная платформа: Tauri v2 (Rust).

  • Мобильная база: Capacitor.

  • Безопасность и TOTP: crypto-js, otpauth, html5-qrcode.


Идеи для дальнейшего развития

Для постоянного совершенствования безопасности и функционала рассматриваются следующие возможности:

  1. Поддержка аппаратных ключей безопасности (FIDO2 / YubiKey): Использование физического токена для защиты мастер-ключа хранилища.

  2. Зашифрованная P2P-синхронизация по локальной сети: Безопасная бессерверная синхронизация между десктопом и смартфоном через локальный WebRTC или анимированные QR-коды.

  3. CLI-утилита: Консольный инструмент для разработчиков для получения TOTP-кодов прямо в терминале при работе с SSH или в CI/CD пайплайнах.


Открытый исходный код и репозиторий

Smart2FA - это проект со 100% открытым исходным кодом под лицензией Apache License 2.0. Вы можете изучить кодовую базу, скачать релизы или принять участие в разработке:

Репозиторий на GitHub: https://github.com/technologiespro/Smart2FA


Инструменты наиболее полезны тогда, когда они решают реальные практические задачи пользователей.

Какие функции или интеграции были бы наиболее ценны для вашей повседневной работы и безопасности?

Делитесь своими идеями, предложениями и отзывами в комментариях или открывайте issues в репозитории GitHub!

P.S. В следующей версии я планирую отказаться от использования crypto-js. Версия 4.2.0 последняя из опубликованных версий этой библиотеки. В текущей кодовой базе Smart2FA она не содержит критических уязвимостей и выполняет свои задачи, однако в контексте современной веб и мобильной разработки сама библиотека считается устаревшей. В будущих мажорных релизах планирую перевести модуль src/lib/crypto.js на использование нативного API window.crypto.subtle (с переходом на алгоритм AES-GCM) это позволит повысить производительность и уменьшить объем зависимостей.

2fa ui

2fa ui