ПРОТОКОЛ SRTP/ZRTP

Автор: 7.02.2014

Оптимальным с точки зрения производительности является SRTP (RFC 3711), позволяющий шифровать (AES) медиапоток и обеспечивать проверку подлинности (HMAC-SHA-1) информации. Однако этот протокол не обеспечивает защиту процесса аутентификации, и необходимо дополнительно использовать сторонние инструменты вроде TLS/SSL. Связку SRTP + TLS/SSL можно легко организовать на Asterisk (с 1.8), FreeSWITCH (wiki.freeswitch.org/wiki/SRTP). SIP-коммутаторе OpenSIPS и других подобных решениях.

honda 350x262 ПРОТОКОЛ SRTP/ZRTP

ХОНДА АККОРД

Кроме того, Asterisk и FreeSWITCH поддерживают протокол ZRTP, который специально разработан для VoIP Филиппом Циммерманном, создателем PGP (отсюда и первая буква Z в названии). Протокол обеспечивает безопасную аутентификацию и обмен данными, стандартизирован в RFC 6189. Во время инициализации ZRTP-звонка используется метод обмена ключами Диффи — Хеллмана, для аутентификации применяется SAS (Short Authentication String). Весь разговор шифруется, причем пара ключей генерируется для каждого сеанса автоматически, что очень удобно, так как позволяет легко встроить этот механизм в уже существующие продукты и не требуется инфраструктура PKI.
В дополнение к SRTP, в канальном драйвере chan_sip из состава Asterisk 11 реализована поддержка безопасного транспортного протокола DTLS-SRTP, предназначенного для передачи мультимедийных RTP-потоков с использованием шифрования, которая может быть задействована для абонентов, использующих WebRTC и SIP.
Конечно, с SRTP и ZRTP должны уметь работать и клиенты (софтофоны и аппаратные): Linphone (TLS, SRTP, ZRTP), Jitsi (TLS, SRTP, ZRTP), Blink (TLS, SRTP), MicroSIP (TLS, SRTP). Некоторая информация доступна на страничке bit.lv/16GnONC. Сам Циммерманн предложил собственный софтофон Zfone (zfoneproiect.com). работающий по ZRTP (есть версии для Windows, Linux и OS X). В настоящее время Zfone находится в состоянии бета, но уже два года по техническим причинам его нельзя скачать с официального сайта.

НАСТРОЙ КА SRTP + TLS/SSL В ASTERISK
Сервер Asterisk поддерживает TLS между серверами и сценарий клиент — сервер. Для активации TLS достаточно прописать в настройках (sip. conf) всего несколько команд: tcpenable=yes tcpbindaddr=0.0.0.0 t lscertfile=/et с/asterisk/cert/a sterisk.pem tlscafile=/etc/asterisk/cert/ca.crt tlsprivatekey=/var/lib/asterisk/keys/voip. example org.key tlsclientmethod=tlsv1

Проверяем подключение:
$ openssl s_client host localhost port 5061
В настройках клиента ставим transport=tls.
RSA-ключи, используемые для шифрования, можно сгенерировать при помощи команды openssl genrsa и специальных скриптов astgenkey (astgenkey -n keyname) или ast_tls_cert (копируют ключи в /van/lib/astenisk/keys). Последние не всегда доступны в пакетах или специальных дистрибутивах вроде Elastix, взять их можно на SVN-сервере (bit.lv/HzOcQ8).
Теперь подключение безопасно и подсмотреть регистрационные данные нельзя, хотя сами переговоры не шифруются. Штатный для Asterisk протокол IAX2, как и SIP, можно настроить на поддержку шифрования SRTP (AES128). Для этого необходимо добавить всего одну строку в конфиг iax. conf или sip. conf: encryption=ves
Перезапускаем настройки sip reload/iax2 reload, затем проверяем, загружен ли модуль:
CLI> module show like res_srtp.so
Команда iax show peers должна показать метку (E) напротив подключенных клиентов, означающую, что шифрование активно. В журналах появится запись вида encrypt_frame: Encoding.