Справка
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 показывает число непрочитанных. Всплывающие тосты можно отключить флагом «Уведомления» в настройках безопасности.