Защищённые звонки
По миру сейчас много скандалов с прослушкой граждан своих и чужих стран.
Конечно же, большинству из нас скрывать нечего. Но есть люди, которые считают делом принципа шифровать все свои сообщения, звонки. Им это важно 🙂 Поэтому, я решил попробовать настроить криптографию для телефонии нашего сервиса.
Немного теории. Если по простому, то звонок состоит из двух частей: сигнализации (SIP) и медиа/звука/видео (RTP). Классически, оба этих протокола не являются шифрованными (SIP вообще простой текст) и могут быть “подслушаны”, перехвачены. Конечно же, это не есть гуд.
Поэтому, были придуманы и поддерживаются способы подключения TLS (вместо UDP/TCP) для SIP и протокол SRTP. Они есть у нас, на нашем сервере. Таким образом, если ваш клиент поддерживает TLS и SRTP (может поддерживать и только TLS), то уже можете попробовать настроить на их использовать.
Пока это только тестирование. Например, уже известно что из-за “ошибки” в asterisk SRTP либо насильно включено, либо выключено. Не может работать “по требованию” 🙁 Это означает, что и клиент и сервер должны быть одинаково настроены для использования SRTP. Тут либо ошибка будет исправлена, либо мне придётся делать настройки включения/отключения в профиле. И если они совпадут с настройками на вашем клиенте, то будет работать 🙂
В комментариях предлагаю написать настройки для популярных клиентов: чуть позже напишу для PhonerLite и CSipSimple. Может и вы что-то напишите? Отзывы приветствуются (нужно ли оно вам?).
И конечно же, стоит понимать, что звонки “защищены” только в пределах ответственности сервиса. Если звонок приземляется в ТФОП или уходит на “чужой” сервер, то там действуют свои правила.
Так же звонок будет полностью защищён если обе стороны (даже если это два пользователя нашего сервиса) его защитили. Если защитил только один, то звонок криптован только до сервера. От сервера до второго пользователя он пойдёт “открытым”.
Да! На наших серверах данная опция не будет реализована по личным для компании соображениям!
Это крайне любопытная функция. Но что-то она у меня не срабатывает.
Linphone 3.5.2 Options>Параметры>Настройки сети>SIP(TLS) Не регистрируется. SIP(TCP) работает, хотя у редких операторов работает, чаще всего только UDP.
SRTP вообще не нашел, видимо, в этом клиенте его нет. Посмотрю как-нибудь другие клиенты.
Извиняюсь, сейчас tls и srtp совсем не работает. Я переделываю сертификаты, настраиваю https и ещё не успел всё доделать.
Надеюсь, глубоким вечером делаю.
Спасибо.
Не спешите, для меня это чисто академический интерес. И вряд ли эти возможности будут востребованы широкой публикой. Так мне кажется.
Сейчас вроде бы работает TLS. Но SRTP пока не работает – ждём исправления “ошибки” в сервере: https://issues.asterisk.org/jira/browse/ASTERISK-22675
Плюсом стал доступен сайт по протоколу https – просьба проверить. Сертификат самоподписанный, потому придётся “доверять” 🙂
Чуть позже пропишу процедуру импорта сертификата для установки доверия.
Возможно, сделаю генерация пользовательских сертификатов для доступа на сайт без логина и пароля (авторизация через сертификат) и для более строгого TLS контроля при звонках.
Но, как тут правильно написали, таких маньяков мало и вряд ли это будет востребовано 🙁
Пользовательские сертификаты, IMHO, дело полезное, хотя авторизация тут слетает достаточно редко…
Много времени прошло после дискуссии – чертовски быстро бежит время!
Попробовал включить TLS – не регистрируется. С TCP регистрируется без замечаний.
Попробовал включить принудительно режим SRTP на рекомендованном клиенте CSipSimple – регистрируется, но тест музыки по номеру 0201 не проходит.
Впрочем, SRTP это вообще “вещь в себе”: можно включить, вроде внешне все будет работать, но вот будет ли он на самом деле – вопрос. Никто гарантий не даст.
Я использую TLS в zoiper, но для этого нужно вместо домена talk37.ru использовать ruvoip.net, т.к. сертификат на него.
SRTP слишком “строг” и допускает только защищеные звонки с обеих сторон. А вот с zrtp работало прекрасно. Вот только zoiper перенес поддержку zrtp только в платную версию
В ближайших планах перейти на другую реализацию sip: канал chan_pjsip. И там работа с крипто несколько иная. Надеюсь, в лучшую сторону
Спасибо за интересный и оперативный ответ.
Черт его знает, никак не хочет и в домене ruvoip.net регистрироваться с TLS.
И ZRTP выдает ошибку 503/ Unsupported transport (PJSIP_EUNSUPTRANSPORT)
В ближайших планах перейти на “новую” реализацию SIP протокола chan_pjsip.
Предлагаю отложить этот вопрос на… Т.к. CSipSimple использует именно эту же реализацию. Думаю, там будет проще и “перспективней”
Запустил SRTP на CSipSimple, работает. TLS не хочет регистрироваться.
На Zoiper Android работает и TLS, и SRTP. Сейчас еще попробую Grandstream Wave. У Вас на форуме узнал, что есть такое чудо. А то ведь живешь в глуши и не знаешь ничего.
А вообще-то коммерческие операторы обычно для простого народа не дают SRTP, специально спрашивал у yomagic, ответили, что нет у них такого. Так что буду пользоваться Вашим сервисом, если вдруг возникнет необходимость.
Да, в Grandstream Wave тоже работает SRTP и TLS.
Спасибо за такой сильный сервис!
В blink http://icanblink.com/changelog-qt.phtml добавили zrtp хотел потестить в программе вроде не включается . Включен ли сейчас zrtp на сервере?
@1269r Попробуй в настройках домен talk37.ru сменить на ruvoip.net. Сертификат выписан на этот домен.
Я попробовал поставить blink для windows, но почему-то у меня ни в TLS, ни UDP.. никак звука не было. Пока не было времени разобраться с этим.
>ни в TLS, ни UDP.. никак звука не было
у меня такое при включеном принудительно srtp и входящем на билинк звонке, при исходящем может просто не включится шифрование но звук есть всегда…
>сменить на ruvoip.net.
улучшений не дало.
неправильно написал
при включеном принудительно srtp и входящем на билинк звонке – короткие гудки