Безопасность

Что BlokNet защищает сегодня — и чего мы не обещаем

Эта страница описывает текущую реализацию по коду проекта, а не желаемую архитектуру будущей версии.

Коротко: защищённые заметки используют AES-256-CBC, но операция шифрования и расшифрования выполняется серверным PHP-приложением. Поэтому текущая версия не является end-to-end или zero-knowledge системой.

Защищённые заметки

Для заметки можно включить шифрование и указать отдельный ключ. Приложение создаёт случайный IV и шифрует текст алгоритмом AES-256-CBC. В базе хранится зашифрованное содержимое и признак шифрования.

Ключ не хранится вместе с заметкой в таблице, однако он передаётся серверному приложению в момент шифрования и расшифрования. Это важное отличие от клиентского E2E-шифрования.

Пароли учётных записей

Пользовательские пароли проверяются через password_verify() и создаются с помощью bcrypt-хэширования. Исходный пароль не должен храниться в открытом виде.

Сессии

После входа создаётся отдельный токен сессии. Сервер проверяет его перед доступом к личному кабинету и привязывает действия к конкретному пользователю.

Что стоит улучшить дальше

  • Перенести шифрование защищённых заметок полностью в браузер через Web Crypto API.
  • Использовать AEAD-режим, например AES-GCM, вместо CBC.
  • Ввести CSRF-защиту во всех изменяющих запросах и единый безопасный слой сессий.
  • Провести отдельный аудит хранения секретов, SMTP и серверной конфигурации.
  • После этого отдельно проверять, можно ли корректно заявлять end-to-end / zero-knowledge.

Сообщить о проблеме

Если вы нашли уязвимость или подозрительное поведение, напишите на support@bloknet.app с шагами воспроизведения. Не публикуйте пользовательские данные и рабочие ключи.