Threat Model

Границы вместо обещаний

Что ChromVoid защищает, а что — нет. Ограничения зафиксированы в этой модели угроз.

Что защищает ChromVoid

ChromVoid предназначен для хранения паролей, OTP, заметок и других секретов в модели угроз, где возможны физический доступ, принуждение, сетевые атаки и офлайн-анализ.

Эта модель работает только при заданных условиях: хранение в зашифрованном виде, сильные учётные данные и хост, который не снимает состояние открытого vault вживую.
Показать детали

Критические активы и метаданные

АктивОписаниеПоследствия компрометации
Секреты в vaultПароли, ключи, TOTP seeds, файлыПолная компрометация связанных аккаунтов
Vault passwordПароль для открытия vaultДоступ ко всем секретам этого vault
Master keyКлюч управления хранилищемBackup/restore, pairing и erase; не даёт доступа к данным vault
Device private keyКлюч Noise Protocol для текущего хостаКомпрометация транспортного канала
Session keysКлючи активной Noise-сессииРасшифровка текущего трафика

Чувствительные метаданные

МетаданныеЗащита
Количество vaultСкрыто за счёт Plausible Deniability
Количество записей в vaultСкрыто до unlock: каталог зашифрован
Время последнего доступаЧастично видимо: timestamps файловой системы
Размер хранилищаВидим: общий размер чанков
Структура директорийНе раскрывается: используется плоская структура чанков

Границы доверия

ChromVoid проектируется как zero-trust система: компоненты не получают доверие по умолчанию, а доступ выдаётся через capability grants. Remote RPC/data payloads защищаются Noise на утверждённых transport paths, а local Tauri IPC остаётся внутри границы приложения.

Trust boundaries and transport zones diagram
Показать детали

Зоны доверия и уровни

ЗонаУровень доверияОбоснование
Core ZoneRoot of trustCore содержит доменную логику и криптографические операции
Client Zone (Tauri)ВысокоеКод поставляется вместе с приложением, но остаётся уязвимым к malware на хосте
Browser ExtensionСреднееРаботает в изолированном browser context, но зависит от ограничений браузера и extension runtime
СетьНулевоеСеть считается недоверенной и потенциально скомпрометированной
Физический доступ к устройствуПринятый рискФизический доступ к разблокированному устройству находится вне модели защиты

Режимы работы

  • Local mode: Rust Core встроен в Desktop/Mobile
  • Mobile host: телефон выступает как source of truth (Secure Enclave/TEE); Mobile MVP использует WSS Relay + Noise, а WebRTC/USB остаются отдельными spec-gated путями
  • Desktop + Extension: browser extension подключается к Desktop Gateway по localhost; секреты остаются в Desktop-приложении
  • Network remote: paired-клиенты следуют утверждённой WebRTC/WSS policy; payload data защищается end-to-end через Noise

Криптография

ChromVoid использует публично специфицированные примитивы и не добавляет собственные криптоалгоритмы. Параметры и места применения зафиксированы в Threat Model, ADR и transport/storage спецификациях.

Показать детали

Примитивы и места применения

ПримитивГде используетсяКонтур
ChaCha20-Poly1305AEAD для шифрования чанков vaultХранилище
Argon2idMemory-hard KDF для вывода ключей из vault passwordХранилище
BLAKE3Хэширование, stretched_salt и вспомогательные ключевые материалыХранилище
Noise Protocol (XX/IK/XXpsk0)End-to-end защищённая сессия поверх USB, WebRTC и WSSТранспорт
X25519DH-обмен ключами в Noise handshakesТранспорт

Архитектура хранилища

ChromVoid использует chunk-based storage: данные лежат в зашифрованных чанках около 16 KB. Каждый чанк шифруется отдельно. Запись идёт через write-temp-rename + fsync, чтобы снизить риск частично записанных данных при сбое.

Показать детали

Механики хранилища

  • Каждый чанк шифруется отдельно — sync работает с изменёнными чанками, а не со всем vault
  • AAD = имя чанка — шифротекст не пройдёт проверку при подстановке под другое имя чанка
  • write-temp-rename + fsync — запись сначала уходит во временный файл, затем заменяет целевой чанк
  • Sharded catalog — домены разнесены по внутренним namespace
  • Delta sync — только изменённые чанки передаются

Усложнение офлайн-подбора

Если у атакующего есть копия файлов хранилища, ChromVoid разделяет данные vault и дополнительный секрет для derivation. Данные хранилища (chunks) лежат в файловой системе. Storage pepper хранится отдельно, например в OS keystore, и участвует в derivation ключа.

Суть: копии папки с chunks недостаточно, чтобы сразу проверять кандидаты passphrase офлайн.
Важно: это не заменяет сильную passphrase. Argon2id + storage pepper повышают стоимость офлайн-атаки, но не дают абсолютной гарантии.

Plausible Deniability

ChromVoid поддерживает модель decoy-vault + hidden-vault: decoy-пароль открывает правдоподобное хранилище, а другие пароли открывают скрытые vault без явного сигнала «неверный пароль». На уровне storage ChromVoid сокращает метаданные о числе vault и не хранит явный список их границ за счёт flat-chunk схемы.

Показать детали

Ограничения модели

  • Зависит от класса атаки: single-snapshot или multi-snapshot анализ
  • Носитель и файловая система могут оставлять следы прошлых записей
  • OPSEC пользователя: правдоподобность decoy-vault, регулярность использования и объяснимость структуры
  • Не скрывает факт установки ChromVoid и общий объём данных
Ограничения зафиксированы в Threat Model, чтобы не расширять Deniability за пределы проверяемых условий.

Классы противников

В Threat Model ChromVoid противники разделены по ресурсам, мотивации и типичным атакам: от случайной кражи устройства до атак государственного уровня. Уровень угрозы определяет режим работы и ограничения, которые нужно учитывать.

Показать детали

Профили противников

ПротивникРесурсыМотивацияТипичные атаки
Скрипт-киддиНизкиеЛюбопытствоПубличные эксплойты, фишинг
КиберпреступникСредниеФинансовая выгодаMalware, кража учётных данных
Государственный противникВысокиеРазведка0-day, supply-chain атаки, принуждение (rubber-hose)
ИнсайдерСредниеДоступ, конфликт интересов или давлениеСоциальная инженерия, физический доступ

Сценарии атак

Ниже — практические сценарии из Threat Model. Для каждого указаны атакующий, его цель, вектор и механизм ChromVoid; результат считается только в пределах описанных условий и ограничений.

Remote transport data-path diagram
Показать детали
Скопированное хранилище
АтакующийЧеловек с копией файлов vault, бэкапа или диска
Цель атакующегоПолучить содержимое vault офлайн
Вектор атакиКопирует зашифрованные данные и пытается подобрать учётные данные или проверить кандидаты без штатного unlock-пути
МеханизмДанные хранятся зашифрованными; unlock зависит от vault password, Argon2id и storage pepper, который не должен лежать рядом с одной копией хранилища.
Офлайн-копия не становится открытым vault. Остаются видимыми размер, структура хранения, timestamps и риски слабого пароля или раскрытого storage pepper.
Принуждение к раскрытию
АтакующийЧеловек или организация, требующие показать содержимое vault
Цель атакующегоПолучить доказательство, что других секретов нет
Вектор атакиПользователя заставляют разблокировать ChromVoid, показать данные или передать пароль
МеханизмDeniability использует controlled disclosure: decoy-пароль открывает правдоподобный vault, а скрытые поверхности не отображаются как отдельный список vault.
Сценарий снижает явные признаки скрытых данных, но не отменяет риски OPSEC, live-наблюдения, повторных снимков устройства и анализа носителя.
MITM на удалённом пути
АтакующийСетевой наблюдатель, relay или посредник между клиентом и хостом
Цель атакующегоПрочитать RPC, подменить хост или внедрить команды
Вектор атакиПерехватывает WebRTC/WSS/USB transport, повторяет сообщения или пытается выдать себя за paired peer
МеханизмRemote path проходит через Noise с аутентификацией paired-ключей; transport readiness не открывает dashboard, пока vault на хосте не разблокирован.
Неспаренный или подменённый peer должен получить отказ до доступа к секретам. Relay остаётся transport-слоем и не становится source of truth.
Malware на разблокированном хосте
АтакующийВредоносный процесс, keylogger, screen capture или расширение на уже скомпрометированном устройстве
Цель атакующегоСнять секреты во время открытой сессии
Вектор атакиНаблюдает ввод, экран, clipboard, память процесса или UI после unlock
МеханизмChromVoid ограничивает хранение секретов в браузере, использует короткоживущие grants и разделяет browser/desktop/host роли.
Это не защита от полностью скомпрометированного live-host. В таком состоянии граница Threat Model уже нарушена; нужны OS-hardening, hygiene и закрытие vault вне рабочей сессии.

Что мы НЕ защищаем

Ниже — границы Threat Model. Эти сценарии остаются вне защиты ChromVoid или требуют отдельной OPSEC за пределами vault.

  • Компрометация хоста во время разблокировки: если ОС заражена и читает экран, клавиатуру или память при открытом vault, данные считаются под высоким риском.
  • Слабые пароли: KDF замедляет подбор, но не превращает слабый пароль в сильный.
  • Социальная инженерия и ошибки пользователя: перенос секретов в заметки, скриншоты, чаты или другие внешние каналы остаётся вне защиты vault.
  • Физический доступ к разблокированному устройству с открытым vault: software-only защита не предотвращает прямой просмотр данных или извлечение секретов из памяти.
  • Компрометация supply chain ОС хоста, firmware или аппаратной части устройства находится вне области этой Threat Model.

Рекомендации

Практические настройки, которые уменьшают риск офлайн-подбора, компрометации открытого vault и ошибок OPSEC.

  • КритичноИспользуйте отдельную длинную passphrase: 5+ случайных слов или 20+ символов из password manager
  • ВажноДержите decoy-vault правдоподобным: добавьте объяснимые записи и периодически обновляйте их
  • ВажноДля Desktop/Extension предпочитайте localhost; для Mobile host — прямое USB-подключение, когда это возможно
  • КритичноВключите auto-lock при бездействии и блокировку vault при sleep/lock экрана
  • КритичноЗапишите master password / recovery secret на бумаге и храните отдельно от устройства
  • ВажноДелайте зашифрованные backup-копии и проверяйте восстановление после каждого существенного изменения vault
  • РекомендацияОбновляйте ChromVoid после релиза security fixes и проверяйте release notes перед обновлением

Проверяемость

Архитектура, Threat Model и протокольные контракты опубликованы рядом с продуктом. Проверка строится не на обещании «безопасно», а на схемах, границах доверия и спецификациях.

  • Схемы Core, транспорта и границ доверия
  • Публичный репозиторий и спецификации протоколов
  • OpenAPI-спецификация

Responsible Disclosure

Сообщайте об уязвимостях приватно: через security@chromvoid.com или GitHub Security Advisories, без публичного PoC до фикса или согласованного disclosure.

  • Не публикуйте PoC, exploit steps и детали воспроизведения до фикса или согласованного disclosure
  • Отправьте отчёт на security@chromvoid.com или через GitHub Security Advisories
  • Мы подтвердим получение и будем обновлять статус по мере разбора
security@chromvoid.com