WallyMates

Безопасность и шифрование

Приватность в WallyMates — не один переключатель в настройках, а несколько независимых уровней защиты, каждый под свою угрозу: перехват на сервере, кража телефона, MITM-атака во время звонка, синхронизация с веб-версией.

Сквозное шифрование один на один — Static X3DH

Личные чаты шифруются собственной реализацией Static X3DH (тройной Diffie-Hellman обмен на основе идентификационного ключа, подписанного pre-key и эфемерного ключа — упрощённая, «SESAME-lite» схема многоустройственных сессий по мотивам подхода Signal) с AES-256-GCM. Ключ шифрования выводится отдельно для каждой пары устройств — без цепочки Double Ratchet и без одноразовых pre-key, более простая модель, чем классический Signal-протокол, но сервер так же никогда не видит содержимое и не получает ни одного из ключей.

Сквозное шифрование в группах — Sender Key

Групповую переписку нельзя эффективно шифровать так же, как один на один — пришлось бы отдельно шифровать каждое сообщение для каждого участника. Вместо этого WallyMates использует схему Sender Key (v5): каждый участник генерирует собственный ключ AES-256 для конкретной группы и распространяет его другим участникам, зашифровав персонально через тот же сквозной зашифрованный канал, что и обычные личные сообщения, — сервер видит только зашифрованные блоки, не сам ключ. Сами сообщения в группе после этого шифруются быстрым AES-256-GCM этим общим ключом — без повторного согласования ключа на каждое сообщение. Протокол побитово совместим между Android и Windows — одна и та же схема распространения и шифрования ключей на обеих платформах.

Проверка звонков — защита от MITM

Голос и видео в звонке защищены отдельно (см. раздел «Звонки»), но остаётся вопрос: как убедиться, что звоните именно тому человеку, а не кому-то, кто подменил соединение? Во время звонка приложение показывает «отпечаток звонка» — последовательность из 96 эмодзи, вычисленную из долгосрочных идентификационных ключей обоих собеседников. Если сравнить эту последовательность вслух и она совпадает — подмена исключена: злоумышленнику понадобился бы приватный ключ собеседника, которого нет даже у сервера. Это та же идея, что «код безопасности» в Signal или WhatsApp, и алгоритм идентичен на Android и Windows.

Синхронизация с веб-версией

Веб-мессенджер (web.worldmates.club) — отдельный случай: чтобы показать историю переписки в браузере, сообщения дополнительно перешифровываются ключом Web Sync (AES-128) и хранятся в базе данных в зашифрованном виде. Это осознанный компромисс: без него веб-версия просто не смогла бы показывать историю чатов.

Если приватность переписки критична — пользуйтесь мобильным приложением или секретными чатами, а веб-версию оставляйте для разовых разговоров.

Локальное хранилище

Защита аккаунта