Архитектура безопасности

Сервер не видит открытый текст и ключ

Модель построена вокруг zero-knowledge передачи: браузер шифрует секрет до отправки, а ключ помещается только во фрагмент URL после #.

Ключ во фрагменте

Фрагмент URL не отправляется браузером на сервер, поэтому сервер не получает ключ расшифровки.

AES-256-GCM

Шифрование и расшифровка выполняются через WebCrypto без самописных криптографических примитивов.

Argon2id для фразы

Парольная фраза выводит ключ-обертку локально и не передается вместе с запросом.

Только шифротекст

В базе нет plaintext и нет клиентского ключа. Шифротекст дополнительно защищен серверным at-rest ключом.

Минимум логов

События содержат id, время, тип действия и хеш IP. Содержимое секрета в события не пишется.

Аудит перед продакшеном

Для публичного платного запуска нужен внешний аудит криптографии и гонок burn-after-read.

Что видит сервер

`ciphertext`, `iv`, TTL, лимит просмотров, флаг парольной фразы, технические события. Сервер не получает открытый текст, парольную фразу или ключ из фрагмента ссылки.