Как работает шифрование с нулевым разглашением в storage-p
Здесь — логика, на которой стоит весь продукт: где именно живут ключи, что зашифровано и что вообще способна раскрыть утечка. Разбираем модель безопасности по-честному, с технической конкретикой.
Ключи выводятся в вашем браузере
Мастер-пароль прогоняется через Argon2id прямо в браузере и превращается в ключ хранилища. Сам пароль не передаётся никогда — на сервер уходит лишь аутентификационный хэш Argon2id, по которому сервер узнаёт вас, так и не получив доступа к секрету.
Каждая запись шифруется на клиенте
Любая запись шифруется алгоритмом XChaCha20-Poly1305 ещё до того, как покинет устройство; сервер хранит nonce‖ciphertext и расшифровать его не может. Именно это на практике и означает нулевое разглашение (zero-knowledge).
При обмене сервер остаётся слепым
Одноразовые ссылки держат ключ расшифровки во фрагменте адреса, который до сервера не доходит. При передаче между пользователями запись запечатывается под публичный ключ получателя через sealed-box (X25519). В проектах работает ключ проекта, который оборачивается отдельно для каждого участника.
Эшелонированная защита на диске
Поверх клиентского шифрования база на сервере ещё раз зашифрована на диске через SQLCipher. Приложение отдаётся со строгими CSP и HSTS и не подгружает ни одного стороннего скрипта.
Что раскроет утечка — и в чём осознанный компромисс
Полный взлом сервера или базы отдаст злоумышленнику только шифротекст: ни открытых секретов, ни мастер-пароля. Сознательный компромисс здесь один — восстановления не существует, если вы забыли мастер-пароль. Поэтому держите под рукой зашифрованный бэкап.