Введение

Протокол согласования ключа VoIP ZRTP (состоящий из Z и протокола Real time Transport Protocol) — это криптографический протокол согласования ключей для установления ключей шифрования между двумя конечными точками в голосовом вызове по IP-телефонии (VoIP), основанном на протоколе Real time Transport Protocol. Он использует обмен ключами Диффи — Хеллмана и протокол Secure Real time Transport Protocol (SRTP) для шифрования. ZRTP был разработан Филом Циммерманом при участии Брайса Уилкокса О’Херна, Колина Пламба, Джона Калласа и Алана Джонстона и был представлен в Internet Engineering Task Force (IETF) Циммерманом, Калласом и Джонстоном 5 марта 2006 года и опубликован 11 апреля 2011 года как .

Обзор

ZRTP ("Z" – отсылка к его создателю, Циммерману; "RTP" – протокол передачи в реальном времени) описывается в черновике интернет-стандарта как "протокол согласования ключей, выполняющий обмен ключами Диффи-Хеллмана во время установления соединения непосредственно в потоке мультимедиа протокола реального времени (RTP), который был установлен с использованием другого протокола сигнализации, например, протокола инициирования сеанса (SIP). Это генерирует общий секрет, который затем используется для генерации ключей и соли для сеанса Secure RTP (SRTP)". Одной из особенностей ZRTP является то, что он не зависит от сигнализации SIP для управления ключами и не требует использования серверов вообще. Он поддерживает оппортунистическое шифрование, автоматически определяя поддержку ZRTP другим VoIP-клиентом. Этот протокол не требует предварительно известных общих секретов и не опирается на инфраструктуру открытых ключей (PKI) или центры сертификации; на самом деле, эфемерные ключи Диффи-Хеллмана генерируются при каждом установлении сеанса, что позволяет избежать сложности создания и поддержания доверенной третьей стороны. Эти ключи участвуют в генерации секрета сеанса, из которого выводятся ключ сеанса и параметры для сеансов SRTP, а также ранее известные общие секреты (при наличии). Это обеспечивает защиту от атак типа "человек посередине" (MiTM), при условии, что злоумышленник не присутствовал на первом сеансе между двумя конечными точками. ZRTP может использоваться с любым протоколом сигнализации, включая SIP, H.323, Jingle и распределенные хеш-таблицы. ZRTP независим от уровня сигнализации, поскольку все согласования ключей происходят через поток мультимедиа RTP. ZRTP/S, расширение протокола ZRTP, может работать в любых устаревших телефонных сетях, включая GSM, UMTS, ISDN, PSTN, SATCOM, UHF/VHF радио, поскольку это узкополосный протокол, ориентированный на битовый поток, и выполняет все согласования ключей внутри этого потока между двумя конечными точками. Алан Джонстон назвал протокол ZRTP, потому что в его ранних черновиках он основывался на добавлении расширений заголовков к пакетам RTP, что делало ZRTP вариантом RTP. В более поздних черновиках формат пакета был изменен, чтобы синтаксически отличить его от RTP. В связи с этим изменением ZRTP теперь является псевдоакронимом.

Аутентификация

Обмен ключами Диффи — Хеллмана сам по себе не обеспечивает защиты от атаки «человек посередине». Чтобы убедиться в отсутствии злоумышленника в первой сессии (когда общих секретов еще нет), используется метод короткой строки аутентификации (SAS): стороны, участвующие в обмене, устно сверяют общее значение, отображаемое на обоих концах соединения. Если значения не совпадают, это указывает на атаку «человек посередине». Существует теоретическая атака на протокол ZRTP, заключающаяся в создании синтезированных голосов обеих сторон для прочтения ложного SAS, известного как «Rich little attack», однако данный тип атак не считается серьезной угрозой безопасности протокола. SAS используется для аутентификации обмена ключами, который по сути является криптографическим хешем двух значений Диффи — Хеллмана. Значение SAS отображается на обеих конечных точках ZRTP. Для проведения аутентификации это значение SAS зачитывается вслух собеседнику по голосовому каналу связи. Если значения на обоих концах не совпадают, это указывает на атаку «человек посередине»; если они совпадают, вероятность атаки «человек посередине» крайне мала. Использование хэш-фиксации в обмене Диффи — Хеллмана ограничивает атакующего одной попыткой для генерации правильного SAS, что позволяет использовать достаточно короткие SAS. Например, 16-битный SAS предоставляет злоумышленнику лишь один шанс из 65536 остаться незамеченным.

Непрерывность ключевых слов

ZRTP обеспечивает второй уровень аутентификации для защиты от атак типа «человек посередине» (MitM), основанный на принципе сохранения ключа. Это достигается путем кэширования некоторой хешированной информации о ключе для использования в последующих сеансах связи, которая смешивается с общим секретом DH, полученным в текущем сеансе, обеспечивая тем самым свойства непрерывности ключа, аналогичные SSH. Если злоумышленник, осуществляющий атаку MitM, отсутствует в первом сеансе, он не сможет участвовать в последующих. Таким образом, даже если SAS никогда не используется, большинство атак MitM предотвращаются, поскольку злоумышленник не присутствовал при первом сеансе связи.