Безопасность
SafePass построен так, чтобы сервер синхронизации не мог прочитать ваши данные, даже если его взломают. Здесь коротко описано, как это работает и чего защита не покрывает.
Принципы
Сервер не доверенный
API и база данных не получают ни открытых записей, ни ключа хранилища. Они хранят шифротекст, связи ревизий и данные для входа по OPAQUE.
Пароль не передаётся
Вход работает по OPAQUE (RFC 9807): сервер проверяет пароль, не получая его и не храня ничего, по чему пароль можно восстановить без перебора.
Свой ключ на каждую версию
Для каждой ревизии записи выводится отдельный ключ с новой солью и nonce. Подмена записи, её идентификатора или ревизии обнаруживается по тегу AES-GCM.
Конфликты решает человек
Синхронизация хранит неизменяемые ревизии. Две параллельные правки сохраняются обе, пока вы явно не выберете результат.
Криптография
| Задача | Алгоритм | Параметры |
|---|---|---|
| Ключ из мастер-пароля | Argon2id v1.3 | 64 MiB памяти, 3 прохода, 4 потока |
| Шифрование записей и ключей | AES-256-GCM | Новые соль 128 бит и nonce 96 бит на каждую ревизию |
| Ключ для каждой ревизии | HKDF-SHA-256 | Привязан к ID записи и ревизии |
| Вход в аккаунт | OPAQUE | RFC 9807, без передачи пароля |
| Фраза восстановления | BIP-39, Ed25519 | 24 слова, 256 бит энтропии |
| Локальная база | SQLCipher | Ключ в защищённом хранилище ОС |
Сессии
- Токен доступа
- 15 минут, только в памяти
- Токен обновления
- 30 дней, меняется при каждом использовании
- Сессия устройства
- Не дольше 90 дней
- Смена пароля или восстановление
- Отзывает все сессии
Восстановление доступа
При создании хранилища SafePass показывает фразу из 24 слов. Она открывает ключ хранилища на новом устройстве и позволяет сбросить пароль аккаунта с подписью этой фразой. Если потерять и мастер-пароль, и фразу, данные восстановить не сможет никто, включая нас.
Чего защита не покрывает
- Заражённое или разблокированное устройство: вредоносная программа, кейлоггер, скомпрометированная ОС.
- Слабый мастер-пароль: Argon2id замедляет перебор, но не делает его невозможным.
- Сервер может не отдать данные или вернуть старую ревизию. Прочитать или незаметно подменить их он не может.
- Метаданные: время синхронизации, размер шифротекста и идентификатор аккаунта видны серверу.
Статус проверки
До выпуска нужны замеры параметров на устройствах, ревью нативных привязок на всех платформах и внешний аудит безопасности. Пока он не проведён, используйте SafePass только с тестовыми данными.
Предварительная версия. SafePass в разработке и ещё не прошёл внешний аудит безопасности. Храните в нём только тестовые данные.