Скачать
Русский
Добавить в Chrome
БЕЗОПАСНОСТЬ
Что защищает ваши секреты, а что — нет.
2FAu — локальный аутентификатор: нет аккаунта, нет сервера и нет цели синхронизации, которую вы не запускаете сами. На этой странице описан формат хранилища, работа с ключами и атаки, от которых оно намеренно не защищает.
ВЕРСИЯ ХРАНИЛИЩА
1
ID KDF
1
ЛИЦЕНЗИЯ
MIT
ФОРМАТ ХРАНИЛИЩА
Один запечатанный blob на диске.
Всё хранилище — аккаунты, надгробия и метаданные ревизий — это единый документ JSON, запечатанный как один шифртекст AES-256-GCM и перезаписываемый при каждом изменении.
2FAU
magic · 4 B
01
ver · 1 B
01
kdf · 1 B
salt
16 B
nonce
12 B
34-байтовый заголовок · привязан как связанные данные
шифртекст
n B + 16 B GCM tag
JSON VaultDocument · зашифрован
Вывод ключа
PBKDF2-HMAC-SHA256
Итерации
600,000
Производный ключ
32 bytes
Шифр
AES-256-GCM
Соль
16 байт, на хранилище
Nonce
12 байт, на запись
Аутентифицированные данные
полный 34-байтовый заголовок
Ключевой материал
обнуляется при освобождении
Почему PBKDF2, а не Argon2id?
На бумаге Argon2id сильнее, но ему нужны потоки и большой объём памяти. 2FAu запускает одно и то же ядро на Rust нативно и как WebAssembly во вкладке браузера, где ни то, ни другое не гарантировано. PBKDF2-HMAC-SHA256 ведёт себя одинаково на всех четырёх платформах.
Байт kdf_id версионируется, поэтому Argon2id можно добавить позже, не сделав недействительным ни одно существующее хранилище.
МОДЕЛЬ УГРОЗ
Локальный подход перемещает риск, а не устраняет его.
Отказ от сервера убирает целый класс атак и даёт вам другой: теперь только ваше устройство стоит между злоумышленником и вашими секретами.
Защищает от
Украденный файл хранилища
Сам по себе vault.dat инертен. Измените версию, ID KDF, соль или nonce — и проверка тега GCM провалится ещё до расшифровки хоть одного байта.
Взлом сервера
Нет сервера, нет аккаунта и нет копии в облаке. Взламывать на нашей стороне нечего, потому что нашей стороны нет.
Наблюдение за сетью
Коды вычисляются на устройстве из локального секрета. Генерация кода ничего никуда не отправляет.
Сам интерфейс
Секреты никогда не попадают в модель интерфейса. Фронтенд запрашивает код по идентификатору аккаунта и получает шесть цифр.
Устаревшее устройство
Слияние работает по принципу «побеждает новейшее» с надгробиями, поэтому старое устройство, синхронизируясь с опозданием, не сможет воскресить удалённый вами аккаунт.
Не защищает от
Вредоносное ПО с вашими правами
Всё, что имеет ваши пользовательские права, может прочитать vault.dat, а после разблокировки хранилища — и расшифрованный документ в памяти.
Слабая парольная фраза
600 000 итераций PBKDF2 делают офлайн-подбор дорогим. Но они не спасут парольную фразу, которую и так легко угадать.
Запоминание парольной фразы
Включение «запомнить» сохраняет её в keyring ОС. С этого момента ваше хранилище настолько же надёжно, насколько надёжен этот keyring.
Неподписанные установщики
Сборки для Windows и macOS пока не подписаны. Проверяйте контрольные суммы или собирайте из исходного кода.
Копия у издателя
TOTP по своей природе — общий секрет. Тот, кто выдал начальное значение, по-прежнему может генерировать те же коды, что и вы.
КЛЮЧИ И РАЗБЛОКИРОВКА
Ключ существует, только пока хранилище разблокировано.
На четырёх платформах нет единого аналога Secure Enclave, поэтому хранилище выводится из парольной фразы. Ключ никогда не записывается на диск — только соль, из которой он был получен.
01
Разблокировка
Вы вводите парольную фразу, или keyring ОС передаёт её на устройстве, где вы решили её запомнить. В любом случае ничего не покидает компьютер.
02
Вывод
PBKDF2-HMAC-SHA256 выполняет 600 000 итераций над собственной 16-байтовой солью хранилища и создаёт 32-байтовый ключ AES.
03
Хранение
Ключ хранится в памяти под замком и обнуляется при освобождении. Сторож простоя блокирует хранилище по заданному вами таймауту.
ПУТЬ ХРАНИЛИЩА
app_data_dir()/vault.dat
СЛУЖБА KEYRING
dev.artkost.2fau
ПОЛЬЗОВАТЕЛЬ KEYRING
vault-passphrase
СООБЩЕНИЕ ОБ УЯЗВИМОСТЯХ
Что-то нашли? Сообщите нам, прежде чем рассказать всему интернету.
Сообщайте об уязвимостях конфиденциально через GitHub security advisory. Мы стремимся ответить в течение 72 часов и выпустить исправление до публичного раскрытия. Код под лицензией MIT — читайте его, проверяйте и открывайте issue, если реализация расходится с этой страницей.
В ОБЛАСТИ ОХВАТА
Формат хранилища, KDF и запечатывание в twofau-core
Оболочка для компьютера, работа с keyring и поверхность IPC
Расширение браузера и его граница с WASM
Локальный мост синхронизации и семантика слияния
Вне области охвата: атаки, требующие уже скомпрометированного устройства, и отсутствие подписи кода, что отслеживается открыто.
© 2026 2FAu · Лицензия MIT
Как это работает
Безопасность
Документация
GitHub
Сделано на Rust и Tauri 2