Безопасность данных
BlackMark использует модель zero-knowledge (слепое хранилище) для чувствительных данных пользователя. Это означает, что ключи шифрования генерируются и хранятся только на стороне клиента; сервер не может расшифровать содержимое хранилища.
Компоненты
| Файл | Назначение |
|---|---|
static/vault.js |
Криптографическая логика: генерация ключа, шифрование, расшифровка, взаимодействие с API. |
static/vault_ui.js |
Интерфейс хранилища: настройка, разблокировка, сохранение и восстановление снимков. |
app.py |
Backend-эндпоинты для хранения и получения зашифрованных данных. |
Ключевые принципы
- Ключ у пользователя. Мастер-ключ шифрования генерируется в браузере и не покидает его в открытом виде.
- Recovery key. При настройке выдаётся резервный ключ для восстановления доступа.
- Шифротекст на сервере. Сервер хранит только зашифрованные данные и не имеет доступа к ключам.
- Флаг активации. Интерфейс хранилища отображается только если
window.VAULT_ENABLED === true.
Технические детали
Криптография в static/vault.js:
- AES-GCM с 256-битным ключом.
- Ключ извлекается из пароля через PBKDF2 с солью и 150 000 итераций.
- Случайный IV (инициализирующий вектор) для каждой операции шифрования.
Backend-эндпоинты
GET /api/vault/status— статус хранилища.POST /api/vault— сохранить зашифрованную запись.GET /api/vault— список записей.GET /api/vault/<id>— получить запись.DELETE /api/vault/<id>— удалить запись.POST /api/vault/keys— сохранить обёрнутый ключ.GET /api/vault/keys— получить обёрнутые ключи.POST /api/vault/reset— полный сброс хранилища.
Что хранится в хранилище
По умолчанию — снимок localStorage текущей сессии: черновики форм, локальные настройки и промежуточные данные. Содержимое зашифровывается перед отправкой.
Ограничения и риски
- Потеря пароля и recovery key равнозначна потере данных в хранилище.
- Аккаунт, оплата и основные функции сервиса не зависят от хранилища.
- Для работы шифрования требуется современный браузер с поддержкой Web Crypto API.
Пароли
При регистрации и сбросе пароля действуют следующие требования:
- минимум 10 символов;
- символы минимум из трёх из четырёх групп: строчные латинские, заглавные латинские, цифры, спецсимволы;
- пароль не должен совпадать с логином или содержать его;
- пароль не должен входить в локальный список распространённых/утекших паролей.