Что означает сквозное шифрование
Когда вы отправляете сообщение в KolChat, ваше устройство зашифровывает его еще до отправки в сеть. Ключи для расшифровки и чтения есть только на устройствах участников этого чата. Наши серверы передают зашифрованные данные дальше, но не имеют к ним ключей.
Сквозное шифрование включено по умолчанию для личных и групповых чатов, голосовых сообщений, фотографий, файлов и обычных звонков. Допустим, Анна в Санкт-Петербурге отправляет со своего iPhone договор в формате PDF Дмитрию в Алматы. Ни KolHive, ни кто-либо в сети не сможет прочитать ее сообщение или открыть файл.
Публикации в открытых каналах устроены иначе. Поскольку открытый канал может читать любой человек, записи в нем хранятся на нашем сервере и не защищены сквозным шифрованием.
Что видят и чего не видят наши серверы
Для доставки сообщений и работы групп нашим серверам нужны данные маршрутизации. При этом у них никогда нет доступа к содержимому ваших зашифрованных чатов и звонков.
| Что видит наш сервер | Чего наш сервер никогда не видит |
|---|---|
| Кто, с кем и когда общается | Текст сообщений |
| Названия, фотографии и списки участников групп | Фотографии, файлы и голосовые сообщения |
| IP-адреса устройств | Звук и видео звонков, а также расшифровки встреч |
| Зашифрованный шифротекст при передаче | Ваши ключи шифрования и поисковые запросы |
Как устроено шифрование
В основе защиты KolChat лежит архитектура протокола Signal. Для запуска сессии используется алгоритм X3DH, для каждого сообщения применяется двойной храповик (Double Ratchet), а для групповых чатов работают ключи отправителя (Sender Keys). Мы написали собственную реализацию на чистом Dart по открытым спецификациям, а не использовали библиотеку libsignal.
В криптографии применяются стандартные примитивы: X25519, Ed25519, HKDF-SHA256, HMAC-SHA256, AES-256-GCM и SHA-256/512. У каждого вашего устройства есть собственные ключи, а ключ аккаунта подписывает сертификат каждого устройства.
Когда вы прикрепляете фотографию или документ, устройство перед загрузкой шифрует файл по частям с помощью AES-256-GCM. Каждый файл получает собственный случайный ключ, который никогда не передается на наш сервер, а зашифрованные транзитные копии удаляются через 30 дней. О хранении файлов вне чатов читайте в статье о том, как KolHive защищает ваши файлы.
На вашем устройстве чаты хранятся в отдельной для каждого аккаунта зашифрованной базе данных, где каждая запись защищена алгоритмом AES-256-GCM. Ключ находится в защищенном хранилище вашей операционной системы, а в браузере используется неизвлекаемый ключ Web Crypto. Поиск по сообщениям, как по точным словам, так и по смыслу, выполняется только на вашем устройстве после однократной загрузки языковой модели. Поисковые индексы, векторы и запросы никогда не отправляются на наши серверы.
Проверка собеседников и устройств
Когда вы добавляете новый телефон или компьютер, вы подтверждаете вход со своего старого устройства. Для этого нужно ввести код с экрана нового устройства, чтобы подтвердить, что оно принадлежит вам. Подробная инструкция есть в руководстве по переносу KolChat на новый телефон.
Вы также можете убедиться в отсутствии перехвата между вами и собеседником, сверив коды безопасности. Например, Ольга в Риге и Илья в Новосибирске могут продиктовать друг другу свои коды безопасности во время звонка. Если числа совпадают, соединение никто не перехватывает.
Если собеседник переустановит приложение или сменит телефон, в чате появится уведомление о смене кода безопасности. Если ранее вы подтверждали код безопасности этого контакта, KolChat заблокирует отправку ему сообщений, пока вы не примете новый код.
Защита звонков и ссылок на встречи
Аудиозвонки, видеозвонки и демонстрация экрана с компьютера защищены сквозным шифрованием. На телефоне вы также можете перезвонить собеседнику прямо из системного списка недавних вызовов.
Когда позволяет сеть, звонки идут напрямую между устройствами. Если прямое соединение невозможно, ретрансляционный сервер передает зашифрованный медиапоток, но не может его открыть. Поскольку медиапоток защищен сквозным шифрованием, подключение по обычной телефонной линии, запись на стороне сервера и серверное сведение звука недоступны.
Когда вы создаете ссылку на встречу, ключ шифрования помещается в конец адреса после символа #. Браузеры никогда не отправляют серверу часть ссылки после знака #, даже когда гости подключаются через браузер. Организатор может использовать зал ожидания, закрыть доступ к встрече, установить пароль, удалить участников или передать права соорганизатору.
Как работают функции ИИ и жалобы на чаты
Использование ИИ в KolChat необязательно, и вы сами выбираете, какая модель будет отвечать. Провайдеру отправляются только выбранные вами сообщения, по одному запросу за раз и только после нажатия кнопки отправки. Если вы запустите локальный ИИ через Ollama или LM Studio, все данные останутся на вашем устройстве. Подробности приведены в статье о том, как выбрать модель ИИ.
Диалоги с ИИ в KolChat цитируют сообщения со сквозным шифрованием, поэтому они не сохраняются в истории ИИ вашего аккаунта на нашем сервере. Они синхронизируются только между вашими собственными устройствами по каналу со сквозным шифрованием, а наш сервер лишь хранит и пересылает шифротекст. В KolChat нет рекламы, и ваши сообщения не используются для показа рекламы или обучения ИИ.
Если вы отправляете жалобу на чат из-за нарушений, ваше устройство пересылает нам последние пять сообщений из этого чата. Мы получаем эти пять сообщений только в момент отправки жалобы.
Исчезающие сообщения и удаление у всех
Вы можете настроить таймер исчезающих сообщений для отдельного чата или задать значение по умолчанию для всех новых чатов. Доступные варианты: выключено, 24 часа, 7 дней или 90 дней. Таймер передается внутри зашифрованного сообщения, и каждое устройство удаляет запись по собственным часам.
Вы также можете удалить сообщение у всех участников чата. Команда на удаление отправляется как зашифрованное сообщение, и устройства получателей выполняют ее только в течение 60 часов после отправки исходного сообщения.
Чего эта функция не делает
- Реализация шифрования еще не проходила независимый аудит безопасности.
- Постквантовая защита шифрования пока не реализована.
- Нашему серверу видны метаданные: кто, с кем и когда общается, IP-адреса устройств, а также названия, фотографии и списки участников групп.
- Шифрование не может помешать собеседнику сохранить копию или сделать снимок экрана отправленного вами сообщения.
Частые вопросы
Может ли KolChat читать мои сообщения?
Нет. Личные и групповые сообщения, голосовые заметки, фотографии, файлы и звонки зашифровываются на вашем устройстве до отправки, а ключей у нашего сервера никогда не бывает. Мы можем прочитать только записи в открытых каналах и последние пять сообщений из чата, на который вы сами отправили жалобу.
Как защита KolChat связана с протоколом Signal?
KolChat построен по архитектуре протокола Signal и использует X3DH, Double Ratchet и Sender Keys со стандартными криптографическими примитивами. Мы написали собственную реализацию на чистом Dart по открытым спецификациям, не используя библиотеку libsignal. Учитывайте, что наше шифрование еще не проходило независимый аудит и пока не включает постквантовую защиту.
Зашифрованы ли аудио- и видеозвонки?
Да. Аудиозвонки, видеозвонки и демонстрация экрана с компьютера по умолчанию защищены сквозным шифрованием. Звонки соединяют устройства напрямую, когда это позволяет сеть, либо проходят через ретранслятор, который не может открыть зашифрованный медиапоток.
Что происходит при отправке жалобы на чат?
При отправке жалобы ваше устройство пересылает нашей команде последние пять сообщений из этого чата для проверки. Без вашей жалобы никакие сообщения не отправляются, а более старые записи в переписке остаются для нас нечитаемыми.
Бесплатно для iPhone, Android, Mac, Windows и Linux.
Скачать KolChat