Хочу поделится небольшим мануалом по активации ZRTP на Freeswitch. ZRTP — криптографический протокол согласования ключей шифрования, используемый в системах передачи голоса по IP-сетям (VoIP). ZRTP описывает метод получения ключей по алгоритму Диффи — Хелмана для организации Secure Real-time Transport Protocol (SRTP). Преимущество ZRTP над SRTP (SDES) в том что для шифрования трафика используется динамически генерируемые ключи и они каждый раз меняются.
Для начала соберем Freeswitch с поддержкой ZRTP. Для этого зайдем в каталог с исходниками и выполним следующие команды:
1 2 3 4 5 |
git pull ./bootstrap.sh ./configure --enable-zrtp make make install |
Далее после установки идем в файл /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml и прописываем там:
1 |
<param name="rtp-enable-zrtp" value="true"/> |
Обязательно нужно рестартануть сервис Freeswitch. Все готово.
Проверяем на примере софтфона Blink. В настройках аккаунта в разделе Media опцию RTP Options выбираем в ZRTP.
Далее открываем консоль Freeswitch и пробуем делать вызов. Должны увидеть похожее на это:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
2009-05-22 23:12:57 [DEBUG] switch_rtp.c:1037 switch_rtp_create() Starting timer [soft] 1 bytes per 10ms 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: START SESSION INITIALIZATION. sID=44. 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: ZID=343865343930656366336534. 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: Loading User's profile: 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: allowclear: ON 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: autosecure: ON 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: disclose_bit: OFF 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: TTL: 4294967295 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: SAS schemes: 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() B256 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() B32 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: Ciphers: 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() AES3 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() AES1 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: PK schemes: 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() DH3k 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() DH2k 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() Mult 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: ATL: 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() HS32 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: Hashes: 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() S256 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() 2009-05-22 23:12:57 [DEBUG] switch_rtp.c:472 zrtp_logger() [ zrtp main]: Session initialization - DONE. sID=44. |
Если во время звонка такие записи есть, то все ок, наш голос шифруется и не доступен для прослушивания.