Как Trail of Bits проверяет целостность чатов в Signal
Каждая переписка в Signal начинается одинаково: клиент запрашивает у сервера открытый ключ, связанный с номером телефона собеседника. Но как убедиться, что сервер выдал правильный ключ? Скомпрометированный сервер мог бы подсунуть чужой ключ, и тогда сообщения шифровались бы для злоумышленника, а не для настоящего адресата.
До недавнего времени единственным способом выявить подлог было сверить «номера безопасности» с собеседником лично или по доверенному каналу. Теперь Signal предложил альтернативу — Automatic Key Verification (автоматическую проверку ключей). Trail of Bits построила и обслуживает один из трёх аудиторов, на которых держится доверие к этой системе.
Как это устроено
Механизм относится к классу решений «прозрачности ключей» (key transparency): он создаёт глобально согласованную картину всех открытых ключей, привязанных к каждому номеру телефона, и тем самым затрудняет скрытую подмену. Приложение периодически само проверяет, что все ключи, хранящиеся в глобальной карте для вашей учётной записи, действительно принадлежат вашим устройствам. Если проверка не проходит или обнаруживаются лишние ключи, пользователь видит предупреждение о том, что автоматическая проверка недоступна.
Роль внешних аудиторов
Система опирается на независимых наблюдателей. Trail of Bits подтверждает, что карта «пользователь ↔ открытый ключ» глобально согласована, корректно сформирована и ничего не скрывает. Каждое новое добавление обновляет локальную копию карты, которая хранится в виде дерева Меркла. Периодически аудитор подписывает вершину этого дерева собственным секретным ключом, обязуясь подписывать только одну непротиворечивую последовательность деревьев — так клиенты получают гарантию, что видят тот же набор ключей, что и все остальные.
Клиент Signal требует подписей от всех трёх аудиторов: одного от самого Signal, одного от Cloudflare и одного от Trail of Bits, причём подписи должны быть выданы в течение последних семи дней. Если сервер не предъявит действительных подписей, автоматическая проверка завершится с предупреждением. Это значит, что даже полностью вредоносный сервер сможет поддерживать «раздвоенную» картину системы не дольше недели, прежде чем у пользователей начнут появляться тревожные сообщения.
Свой аудитор компания написала с нуля по спецификации — именно ради независимости проверки; код открыт. У Signal есть и собственная эталонная реализация.
Зачем это нужно
Включить функцию можно в «Настройки → Приватность → Дополнительно». В поддерживаемых чатах ключ собеседника проверяется через экран сверки номеров безопасности кнопкой «Проверить автоматически». Для бесед, начатых поиском по имени пользователя, функция часто недоступна; если автоматическая проверка не срабатывает, стоит вернуться к ручной сверке номеров.
Trail of Bits подчёркивает, что не получает от Signal или кого-либо ещё денег за эту работу: свободная и приватная связь для компании — общественное благо, а целостность открытых ключей — обязательный элемент любой системы сквозного шифрования.
Источник: Lobsters
Комментарии
Войдите, чтобы комментировать.