Справка

Dead Cat — платформа для безопасного хранения и обмена данными с клиентским шифрованием

О платформе

Dead Cat — платформа для безопасного хранения и обмена данными. Контент статей, файлов и личной базы ключей шифруется на устройстве пользователя; сервер хранит только зашифрованные данные.

Ключи шифрования никогда не покидают ваше устройство. Даже владелец сервера не может прочитать зашифрованный контент.

Публичные страницы статей, файлов и профилей могут отдаваться с сервера (SSR) анонимно — без доступа к вашей cookie-сессии.

Шифрование

Платформа использует три уровня криптографии:

  • AES-256-GCM — симметричное шифрование контента статей, файлов и сообщений
  • RSA-OAEP — асимметричный обмен ключами при установке сессии и в Secret-чатах
  • PBKDF2 — вывод ключа из пароля для защиты личной базы ключей (150K итераций на мобильных, 600K на десктопе)

Перед любым запросом к API выполняется обмен ключами: браузер генерирует AES-ключ сессии, шифрует его RSA-публичным ключом сервера и отправляет на сервер. Все последующие запросы шифруются этим ключом сессии.

Ключи

Мастер-ключ — основной AES-256 ключ. Задаётся во вкладке «Сессия» иконки ключа в шапке. Нужен для шифрования статей и файлов, открытия личной базы и Secret-чатов. «Запомнить» сохраняет на устройстве только этот ключ (зашифрованным паролем); «Восстановить» подставляет его обратно, без окна при загрузке страницы.

База ключей — зашифрованное хранилище дополнительных AES-ключей на сервере, вкладка «База» того же меню. Открывается паролем базы и мастер-ключом. Выбранные ключи и поиск по заметке используются для автоматической расшифровки статей. Сохранение и обновление идут на сервер напрямую.

Генератор — случайный AES-256 ключ или вывод из пароля через PBKDF2 во вкладке «Сессия» (и дублируется в настройках кабинета).

Статьи

Статьи пишутся в Markdown с использованием встроенного редактора на базе Tiptap. Поддерживаются таблицы, изображения, ссылки, подсветка кода и другие расширения.

При публикации можно включить клиентское шифрование: контент шифруется выбранными AES-ключами по цепочке (каждый ключ последовательно шифрует результат предыдущего). Для расшифровки нужны все те же ключи в обратном порядке.

Доступ к статье может быть публичным (доступна всем), приватным (только выбранным пользователям и группам) или по ключу.

В режиме чтения картинки в тексте и обложку можно открыть на весь экран (клик / Enter).

Мессенджер

Отдельная страница /messenger (пункт «Мессенджер» в шапке). Deep-link: ?chat= и ?secret= — выбранный чат сохраняется после обновления страницы.

Два режима обмена сообщениями:

  • Обычные чаты — передача через WebSocket (основной канал) или HTTP (резервный). Сообщения шифруются ключом сессии. Текст, вложения, превью ссылок; изображения открываются в лайтбоксе.
  • Secret-чаты — end-to-end шифрование. Перед обменом выполняется handshake: RSA для обмена AES-ключом, затем шифрование сообщений. Даже сервер не может прочитать содержимое.

Файлы

Файлы загружаются напрямую в S3. Небольшие файлы — одним PUT (`upload-file`), в том числе зашифрованные DCE2. Крупные (оценка тела больше 5 MiB) или с флагом «всегда multipart» идут частями: init → URL на каждую часть → complete с массивом ETag. Шифрование само по себе multipart не включает.

Раздел /files — список и управление; /files/upload — загрузка (также из меню «Разделы»). На странице загрузки у каждого файла свои доступ, шифрование, ключи и способ передачи; «Ко всем» копирует настройку вкладки на очередь. Ключи по умолчанию — выбранные в сессии (иконка ключа). DCE2: plaintext нарезается на чанки, шифруется на устройстве (mode 1 — цепочка; mode 2 — PBKDF2; mode 3 — HMAC на чанк). Если шифрование включено, а ключи не собрались, файл открытым текстом не уходит. Старые DCE1 и legacy читаются. Доступны сжатие и настройка доступа.

Группы и связи

Группы могут быть открытыми (доступны через поиск) и закрытыми (по приглашению). Участники имеют роли: Владелец, Админ, Модератор, Участник. Во вкладке «Приглашения» принимаются или отклоняются входящие запросы в группу.

Связи — типы отношений между пользователями: home cat, cat, dog, dead dog. Задаются из меню пользователя или модалки «Новая связь» по UUID (вкладки «Все» / «Связи» в кабинете).

Аккаунт

Регистрация доступна только по одноразовой ссылке-приглашению, которая действует 24 часа. Создать инвайт может авторизованный пользователь в настройках.

В личном кабинете (/dashboard): профиль, группы, пользователи, настройки. Мессенджер — /messenger, файлы — /files и /files/upload. База ключей — во вкладке «База» иконки ключа в шапке.

Уведомления — колокольчик в шапке (после входа): список событий с сервера (например приглашение в группу). Можно отметить прочитанными или удалить; badge показывает число непрочитанных. Всплывающие тосты можно отключить флагом «Уведомления» в настройках безопасности.