Даже мощное сквозное шифрование не защитит беседу, если защищённое соединение случайно перенаправит пользователя на злоумышленника. Информация останется зашифрованной, однако ключ будет принадлежать мошеннику, выдающему себя за настоящего собеседника. Signal создал дополнительную функцию для распознавания подобной подмены прежде, чем нежелательный человек получит возможность участвовать в диалоге.
Мессенджер Signal завоевал признание среди представителей дипломатии, защитников прав человека и информационных деятелей благодаря применению сквозного шифрования. Для проверки защищённости соединения приложение создаёт номера защиты, являющиеся криптографическими отпечатками ключей конкретной переписки. Участники могут произвести сравнение кодов самостоятельно или воспользоваться сканированием QR-кода, чтобы убедиться в использовании необходимых ключей для защиты.
Однако риск сохранялся на уровне единого реестра профилей. Агрессор имел шанс переделать данные об открытом ключе и представить собственный аккаунт в виде чужого. В ситуации классической атаки «человек посередине» переписка сохранила бы шифрование, но была бы отправлена не истинному получателю.
Signal представил инструмент Automatic Key Verification (AKV) для выявления подобных подделок. Для этого требуется перейти в профиль товарища, открыть раздел с номером защиты и кликнуть на кнопку автоматического подтверждения. Появление зелёной галочки гарантирует совпадение открытого ключа контакта с записью в системе прозрачности ключей Signal.
За этой простой функцией стоит сложная инфраструктура, основанная на открытом сервере для обеспечения прозрачности ключей. Сервер фиксирует все открытые ключи: любое создание аккаунта, изменение номера телефона или логина, а также пересоздание профиля приводят к добавлению записи в журнал. Совокупность трансформаций сохраняется в структуре дерева логов, а множество префиксных деревьев образуют систему для поиска.
Программа независимо обращается к этой системе и достаёт наиболее новую информацию о ключе требуемого партнёра. Новизна записи всё ещё не гарантирует её корректность, поэтому Signal привлёк сторонних экспертов для аудита. Проверкой работает система Cloudflare и организация Trail of Bits.
Специалисты изучают поисковую систему и убеждаются в отсутствии незаметных модификаций. По завершении успешной верификации специалист подписывает ответ сервера, гарантируя, что оба участника беседы получили одинаковую информацию о ключах. Эта защита предотвращает повреждённому серверу скрыто доставлять собеседникам различные версии записей, что необходимо для проведения атаки «человек посередине».
Внешний аудит не в состоянии выяснить, корректно ли первоначально введены данные в журнал. Эту задачу решает постоянная проверка. Каждый участник тестирует запись партнёра и свою, а система Signal постоянно контролирует свои данные автоматически. Проверка ключа партнёра запускается через опцию автоматического подтверждения в области номера защиты.
Оба метода взаимодополняют друг друга. Экспертная проверка гарантирует идентичность информации для обоих пользователей, тогда как систематическая проверка помогает обнаружить неправильную информацию. Любое противодействие потребует переделки открытого ключа и связанного номера защиты, что сразу обнаружится при проверке.
Полностью избавить участников от самостоятельных действий функция AKV не способна. Для получения полной уверенности в том, кто вам отвечает, Signal советует производить проверку перед началом общения. Приложение независимо валидирует номер телефона и название профиля обладателя аккаунта, но для проверки другого человека нужно его контактное число.
AKV будет работать, если Signal располагает телефонным номером собеседника или обнаруживает аналогичную запись в контактах устройства. Коммуникация исключительно через логин без данных номера телефона не даст возможности проверить соответствующий контакту ключ. Это ограничение повлияет на тех, кто специально скрывает свои контактные номера.
Функцию проверки посредством независимых экспертов можно деактивировать. При отказе от AKV Signal рекомендует произвести ручное сравнение номера защиты или QR-кода. Такой подход требует большего количества операций, однако даёт возможность подтвердить ключ непосредственно при встрече лично либо через иной надёжный метод связи.
