ZRTP
ZRTP — криптографическийпротокол согласования ключей шифрования, используемый в системах передачи голоса по IP-сетям (VoIP). ZRTP описывает метод получения ключей поалгоритму Диффи — Хелмана для организации Secure Real-time Transport Protocol (SRTP). ZRTP осуществляет согласование ключей в том же потокеRTP, по которому установлена аудио/видео связь, то есть не требует отдельного канала связи. Разработан Филипом Циммерманом (Phil Zimmermann, авторPretty Good Privacy), Джоном Калласом (Jon Callas) и Аланом Джонстоном (Alan Johnston) в 2006 году. Описание протокола было подано вIETF 5-го марта 2006.
Описание
[править |править код]ZRTP предлагается как способ согласования ключей шифрования с использованием метода Диффи — Хеллмана через медиа поток, устанавливаемый протоколомRTP (Real-time Transport Protocol), который образуется после инициализации вызова, используя любой тип сигнализации, например — Session Initiation Protocol (SIP). Во время посыла звонка создаётся публичный ИД, используемый при создании ключей, которыми будет шифроваться медиа поток разговора. Таким образом ключ действителен только в течение одного разговора, образуя таким образом сессию SecureRTP (SRTP). При разрыве соединения ключ и весь криптографический контекст уничтожается, что обеспечиваетсовершенную прямую секретность (PFS).Таким образом существует потенциал встраивания этого механизма в уже существующие программныеVoIP программные продукты, шлюзы и ИП телефоны.
Протокол не требует заранее сгенерированных ключей, или поддержки инфраструктуры обмена ключей (PKI), или центра сертификации (СА). Это избавляет от сложностей создания структуры авторизации, основанной на доверенной поддержке, которая, например, применяется в шифрованииSSL. Главной целью организации шифроканала, будь то голосовая сессия, или https соединение с интернет-банком — избежать возможности присутствияЧеловека_посередине (man in the middle), обеспечивая единую криптозащиту между любыми двумя точками в мире ИП.
ZRTP может теоретически применяться совместно с любыми сигнальными протоколами, использующимиRTP для передачи медиа потока, включаяSIP,H.323,SCCP,MGCPUnistim иJingle, так как в теории ZRTP не зависит от сигнализации, осуществляя обмен ключей в медиа сессии RTP. Таким образом ZRTP может стать открытым стандартом де-факто в мире IP-телефонии.
Аутентификация
[править |править код]SAS
[править |править код]Сам по себе алгоритм обмена ключамиДиффи — Хелмана не может обеспечить защиту от присутствиячеловека посередине (man in the middle). Для аутентификации ZRTP использует Short Authentication String (SAS) "короткую строку аутентификации", являющуюся сокращённым представлением криптографического хеша полученных ключей Диффи — Хелмана. Значения SAS вычисляются на каждой стороне соединения, абоненты передают их друг другу голосом для сверки. Если значения не совпали, то с большой уверенностью можно предположить присутствиеЧеловека_посередине. Использование алгоритмаДиффи — Хелмана даёт потенциальномуЧеловеку_посередине всего одну попытку сгенерировать правильную SAS при попытке атаки. Так как SAS получается из старших 32 битов хеша и имеет две формы представления (16-битную B256 в видепары слов из списка PGP, и 20-битнуюB32 в виде четырёх символов), она является очень короткой, вероятность необнаружения атаки при использовании SAS в формате B256 равна 1/65536. Применение SAS в формате B32 понижает вероятность необнаружения атаки в 16 раз (по сравнению с B256), до 1/1048576.
Непрерывность ключевого материала
[править |править код]Вторым уровнем защиты ZRTP от атак «человек посередине» является непрерывность ключевого материала. Хеш ключевой информации предыдущего вызова подмешивается к параметрам алгоритма Диффи - Хеллмана при следующем вызове (между этими же абонентами), что придаёт протоколу ZRTP сходство с SSH. Если "человека посередине" не было при первом вызове, он исключается из всех последующих.
Открытый стандарт
[править |править код]- Софт-клиентTwinkle используетGNU ccRTP и проектGNU ZRTP для использования ZRTP в разработках. Все перечисленные пакеты поддерживают открытую лицензиюGPL.
- Jitsi в настоящее время имеет поддержку ZRTP с использованием внешней библиотеки ZRTP4J lib.
- PJSIP — кроссплатформенный стек для open source разработок в области VoIP, ожидается его выход с полной поддержкой ZRTP в первом квартале 2009 года. Заявлена поддержка вLinux,Windows,OSX,Symbian,Windows Mobile.
- PhonerLite - ZRTP библиотека собственной разработки.
- Поддержка ZRTP может быть экспериментально добавлена вAsterisk с помощьюнабора патчей, разработанных в рамках проекта Zfone. При этом для работы протокола используется libZRTP.
- Поддержка ZRTP была добавлена в основной кодFreeSWITCHc 05 апреля 2012
Коммерческое использование
[править |править код]- Авторская разработка самого Филипа Циммермана —Zfone, доступный дляMac OS X,Windows, иLinux. Бесплатна в течение бета-тестирования, но планируется в дальнейшем распространение только коммерческих небесплатных копий, уже демонстрировалась в Москве Филипом Циммерманом.
- KHAMSA SA в качестве PrivateGSM — первое внедрение ZRTP поGSM (без использованияVoIP) для платформыSymbian OS, соответственно — только для смартфонов. Дополнительные расширения ZRTP/S позволяют расширить применение ZRTP в сетяхISDN,ТФОП и спутниковой телефонии. Использует библиотеку libZRTP разработанную Циммерманом.
- UM Labs выпустила шлюз с SIP Security Controller, который обеспечивает безопасные зашифрованные соединения между устройствами, поддерживающими ZRTP, сетями VoIP с коммерческими или бесплатными ИП-АТС, которые не поддерживают ZRTP или другую шифрозащиту.
- M5T ZRTP SAFE — отдельная независимая разработка стека ZRTP.