Вопросы
Частые вопросы
Что будет, если я потеряю ключ восстановления?
Доступ к аккаунту будет утрачен окончательно. Сервер не хранит ваш
приватный ключ и не может подтвердить, что номер принадлежит вам.
Придётся зарегистрировать новый ID. Сохраните ключ там, где не
потеряете его вместе с телефоном.
Как проверить, что переписку правда никто не читает?
Откройте карточку собеседника — там шесть групп по пять цифр. Это
отпечаток ваших ключей, посчитанный одинаково у обоих. Продиктуйте
их голосом или сверьте при встрече: совпали — между вами никого нет.
Проверка нужна именно потому, что ключи раздаёт сервер и теоретически
мог бы подсунуть свой. Заметить подмену может только человек, и
сервер в этом разговоре не участвует. Если код собеседника изменился,
вместо него появится предупреждение — обычно это переустановка
приложения, но так же выглядит и подмена.
Что будет, если телефон украдут?
Прочитанную переписку вор не откроет: ключи, которыми она была
зашифрована, стёрты сразу после прочтения. Но пока сервер помнит
устройство, новые сообщения продолжат приходить туда.
Поэтому в настройках есть список ваших устройств и кнопка «забыть».
Она действует немедленно. То, что уже получено на украденном
телефоне, останется там — стереть его оттуда невозможно.
Как приложение обновляется?
Само. Раз в несколько часов оно спрашивает сервер о выложенной
сборке и, если та новее, предлагает скачать и установить —
с проверкой контрольной суммы файла. Установку подтверждаете вы,
переписка и настройки сохраняются. В настройках есть кнопка
«Проверить обновления» для проверки прямо сейчас.
Можно ли пользоваться с двух устройств?
Да. Введите один и тот же ключ восстановления на втором устройстве.
Одновременно поддерживается до пяти сессий, самая старая вытесняется.
Но старая переписка на новое устройство не переедет.
Это не недоделка, а прямое следствие прямой секретности: каждое
сообщение шифруется ключом, который живёт только на том телефоне,
где его прочитали, и стирается сразу после. Ключ восстановления
переносит вашу личность, а не прочитанное — иначе его перенёс бы и
посторонний, завладевший бумажкой. Новые сообщения приходят на оба
устройства.
Закрепления чатов между устройствами тоже не ездят, но по другой
причине: это ваш взгляд на список, а не содержимое переписки.
Как работает связь через Bluetooth?
Если интернета нет, приложение находит рядом другие устройства
с Q-Ку и передаёт сообщение через них. Посредник передаёт конверт
дальше, не открывая его: шифрование в этом пути такое же, как через
сервер. А чтобы стать посредником, нужно криптографическое
подтверждение от адресата — назначить себя чужим «шлюзом»
произвольно нельзя.
Поиск соседей включается, только когда сети нет: пока связь есть,
телефон лишь объявляет о себе — это в разы дешевле для батареи, и
соседу без сети этого достаточно, чтобы нас найти.
Честные ли очки в играх?
Проверяемые. Вместе со счётом уходит запись партии, и устройство
соперника переигрывает её тем же движком: сошлись счёт и длина —
результат засчитан, нет — зачёркнут. Случайность берётся из общего
сида, поэтому партия повторяется в точности. Личный рекорд хранится
только на устройстве: посчитанный на своём же телефоне, он ничего
не доказывает.
Приложения нет в Google Play — это безопасно?
Файл собирается из исходного кода этого проекта и подписывается
ключом разработчика. Сверьте SHA-256 скачанного файла с суммой,
опубликованной выше. Устанавливайте APK только с этого сайта.
Можно ли развернуть свой сервер?
Да, это основной сценарий. Сервер разворачивается одной командой
в Docker вместе с Nginx и автоматическим TLS. Инструкция —
в файле deploy/README.md репозитория.
Какие данные видит сервер?
Содержимое переписки — не видит: сообщения приходят к нему уже
зашифрованными, и ни одного приватного ключа у него нет.
Видит он то, без чего доставка невозможна: ваш ID (номер телефона),
отображаемое имя, аватар, публичные ключи, время последней
активности, состав групп и метаданные сообщений — кто кому и когда
написал и какой длины было сообщение. Доставленные сообщения из
очереди удаляются, недоставленные хранятся ограниченное время.
Исключение одно и оно по устройству игры: партия в мафию. Роли
закрытые, ведущим работает сервер — значит, он обязан знать
содержимое. Такая партия помечена незашифрованной прямо в
интерфейсе.