Разбор Smart2FA (0xid Edition) 2FA-аутентификатора с открытым исходным кодом, локальным шифрованием AES-256, биометрией и поддержкой десктопа и мобильных устройств.
Безопасность против удобства: дилемма аутентификации
В современной цифровой инфраструктуре двухфакторная аутентификация (2FA) — один из наиболее эффективных способов предотвращения несанкционированного доступа к аккаунтам. Тем не менее большинство популярных приложений-аутентификаторов заставляют идти на нежелательные компромиссы:
-
Риски централизованной облачной синхронизации: Хранение нешифрованных или управляемых провайдером токенов в проприетарных облаках расширяет поверхность атак, создает единую точку отказа и приводит к привязке к конкретной экосистеме (vendor lock-in).
-
Избыточная телеметрия и трекинг: Многие коммерческие аутентификаторы собирают аналитику, идентификаторы устройств и метрики использования, нарушая приватность.
-
Ограничения экспорта и платформенная привязка: Недостаточные возможности экспорта усложняют миграцию между платформами и увеличивают риск потери данных при смене устройства.
Чтобы обеспечить полную автономию пользователей, максимальную защиту данных и высокую производительность, мы создали Smart2FA (0xid Edition) — открытый клиентский аутентификатор с архитектурой Zero-Knowledge, исключающий сбор телеметрии, минимизирующий системные уязвимости и выполненный в стильном индустриальном дизайне.
Ключевая философия: Zero-Knowledge и принцип Local-First
Архитектура Smart2FA базируется на трех основополагающих принципах:
-
100% Offline по умолчанию: Никаких бэкенд-сервисов, аналитики и внешних сетевых запросов.
-
Криптографическая изоляция на стороне клиента: Все секреты остаются зашифрованными как на диске, так и в памяти до момента явной авторизации пользователем.
-
Портативность и совместимость: Поддержка стандартных форматов RFC, мгновенный пакетный импорт и удобная кроссплатформенная работа: Web, Desktop (Tauri/Rust) и Mobile (Capacitor).
Архитектура и функциональные возможности
1. Надежная криптографическая модель хранилища
Smart2FA никогда не сохраняет мастер-PIN в открытом виде. Схема хранения и расшифровки обеспечивает надежную защиту от атак перебором и дампов локального хранилища:
-
Жизненный цикл 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с автоматическим парсингом URIotpauth://. -
Пакетная миграция из 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.
Идеи для дальнейшего развития
Для постоянного совершенствования безопасности и функционала рассматриваются следующие возможности:
-
Поддержка аппаратных ключей безопасности (FIDO2 / YubiKey): Использование физического токена для защиты мастер-ключа хранилища.
-
Зашифрованная P2P-синхронизация по локальной сети: Безопасная бессерверная синхронизация между десктопом и смартфоном через локальный WebRTC или анимированные QR-коды.
-
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) это позволит повысить производительность и уменьшить объем зависимостей.
ссылка на оригинал статьи https://habr.com/ru/articles/1105752/