Ключи, чаты, контакты, файлы
Identity, доверие, локальная история, outbox и файловые части находятся на устройстве. Чувствительные хранилища защищаются платформенными ключами.
Конфиденциальность · проект политики
Эта версия описывает текущее поведение beta, включая encrypted signaling, TURN и опциональный аккаунт с E2E-синхронизацией. Перед коммерческим запуском документ требует юридической сверки.
Identity, доверие, локальная история, outbox и файловые части находятся на устройстве. Чувствительные хранилища защищаются платформенными ключами.
Личные сообщения и файлы передаются в зашифрованном виде. Публичный канал по своей природе читаем участниками в радиусе/mesh.
Mailbox хранит AES-GCM envelope до 10 минут. TURN выдаёт временные credentials. При включённой синхронизации account server хранит метаданные аккаунта и ciphertext, но не ключи содержимого.
Телеметрия и выгрузка crash-отчётов по умолчанию отсутствуют. Включение в будущем потребует отдельного opt-in.
При регистрации сервер получает выбранное отображаемое имя, случайный account ID, credential ID, открытый WebAuthn COSE key, signature counter, тип/backup-флаг authenticator и заявленные transports. Приватный passkey остаётся в authenticator и серверу не передаётся.
Одноразовый challenge хранится до пяти минут. После успешного входа сервер хранит только HMAC-хэш случайного session token; сама session cookie имеет Secure, HttpOnly и SameSite=Strict. Анонимизированные HMAC-хэши IP используются для почасовых anti-abuse квот.
Recovery kit содержит случайный 256-bit secret и account ID. Secret показывается только в скачанном пользователем файле; сервер хранит scrypt verifier с индивидуальной солью. Kit позволяет один раз создать новый passkey для account console и затем автоматически погашается. Он не является ключом чатов или устройств.
Аккаунт не получает открытый текст сообщений, файлов и контактов, ChatOffline root private key, recovery secret или ключи расшифровки синхронизированной истории.
При входе по электронной почте сервер получает адрес и хранит одноразовый код только в виде HMAC-хэша с ограниченным сроком и числом попыток. Пароль аккаунта серверу не передаётся: устройство выводит из него два отдельных ключа, отправляет наружу только проверочный, а второй — которым шифруется ключ синхронизации — остаётся на устройстве. Сервер хранит лишь scrypt-verifier проверочного ключа.
Ключ синхронизации хранится на сервере зашифрованным паролем пользователя. Из него на устройстве выводятся отдельные ключи для настроек, контактов, истории и файлов. Вход в аккаунт сам по себе не расшифровывает данные: для записи нужен ещё и подтверждённый ключом устройства сеанс, а для чтения содержимого — пароль.
Сброс без пароля подтверждается письмом, откладывается на 24 часа, сопровождается уведомлением и может быть отменён из любого активного сеанса. После срабатывания он отключает устройства и удаляет зашифрованные данные синхронизации: восстановить историю без пароля невозможно.
Синхронизация выключена по умолчанию и включается отдельно для каждого вида данных. Сервер хранит только шифртекст событий и вложений: он видит их размер, время и порядковые номера, но не содержимое, не имена файлов и не список собеседников. Каждое событие подписано ключом устройства-автора; повтор с тем же идентификатором и содержимым игнорируется, а подмена содержимого или порядкового номера отклоняется.
Завершение сеанса другого устройства отзывает его и меняет ключ хранения, после чего старое устройство не может ни записывать, ни читать новые данные. Уже скачанные на него ранее копии при этом остаются у владельца того устройства.
При выборе «Пожаловаться и заблокировать» контакт блокируется на устройстве сразу. Сервер получает только выбранную причину, необратимый SHA-256-код контакта с отдельным доменом, тип разговора, платформу, язык и время. Текст сообщений, файлы, имя контакта и ключи не передаются. Анонимизированный HMAC-код сетевого адреса используется только для ограничения частоты обращений.
Квитанция и состояние отправки сохраняются внутри зашифрованного локального хранилища Web/PWA. Если сети нет, отправка автоматически повторяется при подключении не дольше 30 дней; блокировка от этого не зависит. Серверная запись жалобы удаляется не позднее чем через 90 дней; почасовые anti-abuse счётчики — после завершения следующего часа.
После отдельного действия браузер создаёт Ed25519 device key. На сервер передаются только открытый 32-byte ключ, certificate, название, роль и платформа устройства. Secondary device сначала создаёт самоподписанный десятиминутный request; root одобряет его собственной Ed25519-подписью после сверки SAS. Передача root-роли и отзыв member также требуют подписи действующего root. Неэкспортируемые рабочие копии приватных ключей сохраняются локально в IndexedDB.
Настройки шифруются на устройстве AES-GCM ключом. Сервер хранит только ciphertext, его монотонную версию и время обновления. Передача ключа между устройствами выполняется либо адресными капсулами для конкретного устройства, либо через ключ синхронизации, зашифрованный паролем аккаунта.
Panic wipe удаляет локальную идентичность и защищённые данные текущего устройства. Удаление серверного аккаунта требует повторного WebAuthn-подтверждения. После запроса действует 24-часовое окно отмены; затем account record, passkeys, sessions, device registry и ciphertext настроек удаляются каскадно.
Signaling mailbox и device pairing request — до 10 минут; WebAuthn/recovery challenge — до 5 минут; код входа по email — до 10 минут; account session — до 12 часов; сеанс устройства — до 30 минут; незавершённая загрузка вложения — до 24 часов. Recovery verifier сохраняется до использования, замены kit или удаления аккаунта. Account record, открытые ключи, ciphertext настроек, событий синхронизации и вложений сохраняются до подтверждённого удаления или сброса и завершения 24-часового окна отмены.
Bluetooth, IP-сети, STUN/TURN, WebAuthn provider и операционная система неизбежно видят часть сетевых или системных метаданных. Courier-маршрут снижает доступ к содержимому, но не устраняет весь анализ времени и близости.
Тот, кто получил доступ к почтовому ящику, может запустить сброс аккаунта и через сутки уничтожить зашифрованные данные синхронизации — прочитать их без пароля он при этом не может. Шифртекст вложений хранится в файловой системе сервера и не входит в ежедневную резервную копию базы. Доставка кодов входа зависит от корректных DNS-записей SPF, DKIM и DMARC.