Зарегистрироваться
Zero-knowledge · при штатной работе клиента сервер не получает пароли

Безопасность и модель угроз

Подробное, честное описание того, какие данные сервер safekom.ru получает, а какие не получает в штатном client-side потоке — для технических специалистов, аудиторов и всех, кто хочет проверить, а не просто поверить.

1. Модель угроз: что сервер видит

Zero-knowledge не значит «сервер вообще ничего не знает». Мы прямо перечисляем, что сервер технически способен увидеть, даже при полностью честной работе кода:

  • Email — используется для входа и связи, хранится в открытом виде.
  • Название хранилища — не шифруется в текущей версии: это осознанный компромисс в пользу простоты. Содержимое записей внутри хранилища зашифровано полностью, но само название сейфа сервер видит.
  • Факт существования и структура шаринга — кто с кем какое хранилище расшарил, сколько в нём записей, когда они создавались/менялись (метаданные, не содержимое).
  • IP-адрес и User-Agent — используются для rate-limit и отображения активных сессий, хранятся в базе в открытом виде. Жёсткой привязки токена к User-Agent нет.
  • Гостевые ссылки — сервер видит факт создания, срок действия, число просмотров — но не расшифрованное содержимое записи и не ключ доступа (он живёт только в URL-фрагменте у получателя, никогда не отправляется на сервер).

Если сервер (или база данных целиком) будет скомпрометирован, злоумышленник получит эти метаданные — но не пароли, не мастер-ключ, не приватные ключи участников, не содержимое ни одной записи. Мы считаем важным проговорить это прямо, а не оставлять как подразумеваемую гарантию.

2. Что сервер не получает при штатной работе клиента

  • Мастер-пароль — никогда не покидает браузер ни в открытом, ни в обратимом виде. На сервер уходит только производный authHash, из которого восстановить пароль нельзя.
  • Ключи расшифровки — приватный ключ пользователя (ECDH P-256) хранится на сервере только в виде, зашифрованном мастер-ключом; ключ сейфа (vault key) передаётся между участниками только зашифрованным под их публичные ключи. Это описание штатного client-side потока, а не гарантия против XSS/RCE или скомпрометированного клиента.
  • Содержимое записей — логины, пароли, заметки, URL — зашифрованы AES-256-GCM ключом сейфа ещё до отправки на сервер. Сервер хранит только шифротекст.
  • Содержимое гостевых ссылок — перешифровано отдельным одноразовым ключом, который никогда не передаётся серверу — только получателю, в URL-фрагменте (fragment не отправляется в HTTP-заголовках).

3. Криптографические примитивы

Задача Примитив
Деривация ключа из пароля Argon2id (hash-wasm)
Шифрование записей сейфа AES-256-GCM (Web Crypto API)
Обмен ключами при шаринге ECDH P-256 (Web Crypto API) + AES-256-GCM
Обёртка приватного ключа пользователя AES-256-GCM (Web Crypto API)
2FA TOTP, RFC 6238
Аварийный бэкап Тот же стек: Argon2id + AES-256-GCM с отдельным recovery-ключом

Вся криптография выполняется на клиенте через встроенный Web Crypto API браузера и WASM-реализацию Argon2id (hash-wasm) — общедоступные, независимо аудированные реализации, а не собственный код шифрования.

4. Что происходит при разных сценариях компрометации

  • Утечка базы данных целиком. Злоумышленник получает email, названия сейфов, метаданные шаринга и активности, зашифрованные блобы записей. Не получает: пароли, ключи, содержимое записей.
  • Компрометация сервера (RCE). Теоретически позволяет читать данные будущих запросов «на лету» до шифрования на клиенте — этот риск не устраняется zero-knowledge архитектурой полностью, только снижается: он требует активной, направленной атаки на инфраструктуру, а не просто кражи базы.
  • Кража сессионного токена. Токен передаётся только в заголовке Authorization: Bearer (не в cookie — это снижает классический CSRF-риск), живёт ограниченное время. Активные сессии можно просмотреть и отозвать в настройках. Он может дать доступ к API в пределах сессии, но не раскрывает мастер-пароль; XSS/компрометация клиента остаются отдельными рисками.
  • Физический доступ к разблокированному устройству. Смягчается опциональным PIN на конкретное хранилище — второй слой поверх обычной сессии.

5. Приглашение к независимому аудиту

Мы не проводили формальный внешний аудит безопасности на момент публикации этой страницы. Мы приглашаем исследователей безопасности изучить архитектуру и код и сообщить о находках по адресу security@safekom.ru. Мы обязуемся:

  • Подтвердить получение отчёта в течение 3 рабочих дней.
  • Не предпринимать юридических действий против исследователей, действующих добросовестно и не нарушающих данные пользователей.
  • Публично поблагодарить за существенные находки (по согласованию с исследователем).

Формальной bug bounty-программы с денежным вознаграждением пока нет — это responsible disclosure канал. См. также Политику конфиденциальности и Условия использования.

6. Кто разрабатывает Сэйфком

Сэйфком разрабатывает Алексей Михайлов — backend-разработчик, изучающий веб-безопасность систематически (OWASP Top 10/WSTG, STRIDE, MITRE ATT&CK) и проводящий аудиты соответствия 152-ФЗ и security code review как отдельную практику. Подробнее об экспертизе — на lex-go.ru.

Есть вопросы по архитектуре?

Написать нам

Подвал сайта

Сэйфком комплексная безопасность
  • ИП Михайлов А.И.
  • ИНН 230209848654
  • ОГРНИП 324237500003571

Заявка

Оставьте контакты — перезвоним в течение 15 минут и подберём решение под вашу задачу.

© 2026 Сэйфком. ИП Михайлов А.И. Все права защищены.