Функция Bitwarden «Вход через устройство» — удобная штука: нажал уведомление, подтвердил, и ты авторизован без пароля. Но для подтверждения нужен полный клиент Bitwarden с загруженным хранилищем. Я создал Vault Approver — минималистичное Flutter-приложение, которое делает ровно одно: подтверждает запросы на вход на self-hosted Vaultwarden серверах. Без доступа к хранилищу, без сохранённых паролей — только биометрия и одно нажатие.
- Зачем нужен Vault Approver
- Как работает Vault Approver
- Архитектура безопасности Vault Approver
- Технический стек
- Быстрый старт
- Почему open source критичен для security-приложений
- Часто задаваемые вопросы
- Vault Approver работает с официальным Bitwarden?
- Может ли приложение получить доступ к паролям?
- Что если потерять телефон?
- Есть Android-версия?
Зачем нужен Vault Approver
Self-hosted Vaultwarden — золотой стандарт управления паролями: вы контролируете данные, сервер, правила. Но «Вход через устройство» имеет UX-проблему: официальный мобильный клиент Bitwarden загружает всё хранилище ради одного подтверждения. Это лишняя поверхность атаки. Vault Approver убирает всё лишнее: Face ID → запрос → проверка fingerprint-фразы → подтвердить. Приложение никогда не открывает хранилище, не хранит мастер-пароль, а модель безопасности полностью end-to-end с RSA-2048-OAEP шифрованием.
Как работает Vault Approver
- Разовая настройка: URL сервера + email + мастер-пароль. Приложение вычисляет ключи через Argon2id, сохраняет user key в Keychain/Keystore за биометрией, пароль стирает
- Уведомления в реальном времени: SignalR WebSocket с MessagePack подключается к серверу. При запросе «Вход через устройство» — мгновенный push
- Биометрическая разблокировка: Face ID или Touch ID при каждом запуске — без PIN, без упрощений
- Верификация по фразе: 5-словная EFF фраза из публичного ключа запрашивающего предотвращает спуфинг
- Подтверждение в одно нажатие: RSA-2048-OAEP шифрует user key публичным ключом запрашивающего. Сервер не видит ваших ключей
Архитектура безопасности Vault Approver
- Мастер-пароль не хранится: вводится один раз при настройке, используется для деривации ключей, затем стирается
- Device Keychain/Keystore: user key зашифрован случайным biometric storage key, защищён Secure Enclave (iOS) или Android Keystore
- E2E шифрование: полная Bitwarden-совместимая криптоцепочка — Argon2id KDF, HKDF-SHA256, AES-256-CBC
- Нет доступа к хранилищу: приложение вызывает только
/api/auth-requests— физически не может прочитать пароли - Нулевой сбор данных: ноль аналитики, ноль телеметрии, ноль облака
Тот же подход defense-in-depth, который я рекомендую для корпоративной ИТ-архитектуры.
Технический стек
- Flutter + Dart: кросс-платформа (iOS в App Store, Android в бете)
- State management: Riverpod 2.x
- Криптография: PointyCastle 4.x + cryptography 2.x — полная Bitwarden-совместимая реализация
- Real-time: SignalR WebSocket + MessagePack + polling fallback
- Безопасность: local_auth, flutter_secure_storage
- Локализация: English + Русский с переключателем в приложении
Быстрый старт
- Установить: Vault Approver в App Store (бесплатно, 20.9 MB)
- Подключить: URL вашего Vaultwarden сервера
- Авторизоваться: Email + мастер-пароль + опционально 2FA/TOTP
- Биометрия: Face ID или Touch ID
- Готово: запросы «Вход через устройство» приходят мгновенно
Android-версия в открытой бете — APK на GitHub.
Почему open source критичен для security-приложений
Security-приложение без возможности аудита — это risk. Vault Approver под MIT-лицензией, полностью открыт на GitHub. Каждая строка криптокода доступна для проверки. Для организаций с чувствительными данными это обязательное требование.
Нужна помощь с настройкой self-hosted Vaultwarden? Бесплатная консультация →
Часто задаваемые вопросы
Vault Approver работает с официальным Bitwarden?
Разработан для Vaultwarden, использует стандартный Bitwarden API. Может работать с официальными серверами, но основное тестирование — на Vaultwarden.
Может ли приложение получить доступ к паролям?
Нет. Vault Approver взаимодействует только с endpoint auth-requests. Нет UI хранилища, нет списка паролей, нет возможности расшифровать учётные данные.
Что если потерять телефон?
User key защищён биометрией устройства. Без вашего лица/отпечатка ключ не извлечь. Настройте Vault Approver на новом устройстве с мастер-паролем.
Есть Android-версия?
В открытой бете. Можно собрать из исходников или скачать APK с GitHub. Google Play — после завершения бета-тестирования.
