0
Рейтинг

Добавляем шифрование и push в обычный SIP

Блог компании Mobile OneИнформационная безопасностьРазработка мобильных приложенийAsteriskСмартфоны


Привет Хабр! В этой статье мы хотели бы осветить несколько проблем SIP при использовании на мобильном устройстве, о которых как правило не знают или не догадываются пользователи.

Одна из главных проблем — если вы пользуетесь каким-либо SIP провайдером ( или собственной IP АТС ) на смартфоне, то с уверенностью в 99% можно сказать что ваши данные незашифрованы.

Наверное многие делали простую вещь — снифили трафик от SIP устройств, чтобы найти причину какой-либо неработоспособности VOIP соединения.

На практике это означает что и все ваши переговоры по SIP могут быть также легко заснифены, восстановлены и прослушаны на стороне мобильного клиента и сделать это довольно легко.


О том что эта проблема существует, нам говорит и Википедия:

«Безопасность соединения

Многие потребительские реализации IP-телефонии не поддерживают криптографическое шифрование, несмотря на то, что наличие безопасного телефонного соединения намного проще внедрить в рамках IP-технологии, чем в традиционных телефонных линиях. В результате, при помощи анализатора трафика относительно несложно установить прослушивание IP-звонков, а при некоторых ухищрениях даже изменить их содержание.»


Такая проблема возникает из-за стремления сделать универсальным SIP клиента, хотя практически во всех популярных софтфонах возможность шифрования заявлена.

Но кроме самого софтфона, шифрование должен поддерживать и SIP сервер и вот тут и находится корень проблемы — провайдеры разные, используют разные решения и для того чтобы поддержать весь зоопарк SIP устройств своих клиентов, шифрование на сервере как правило выключают.

Еще одна проблема, которая тоже достаточно часто встречается — блокирование самого протокола SIP.

Это могут быть и блокировки на уровне как отдельно взятого провайдера, так и на уровне национальных операторов — например SIP блокируется властями ОАЭ, Китая и ряда других стран.

Еще одна общеизвестная проблема, связанная с использованием SIP на мобильных устройствах — стандартные VOIP софтфоны, будучи постоянно запущенными, значительно расходуют батарейку смартфона.

Это происходит потому что большинство IP АТС представляют собой обычный SIP сервер, который требует периодической регистрации клиента, т. е. приложение на телефоне должно быть всегда онлайн и соответственно IP АТС всегда ждет регистрационного пакета от приложения.
Если в течении определенного времени от приложения не придет регистрационный пакет, то IP АТС считает что клиент оффлайн и уже никто внутри АТС не сможет сделать звонок на такого клиента.

Поэтому такие приложения должны находиться всегда онлайн и соответственно значительно расходуют батарейку мобильного устройства.

Так сложилось исторически, когда клиентские SIP устройства были в основном десктопными IP телефонами или VOIP шлюзами и соответственно проблемы экономить батарейки не существовало.
Хуже всего сейчас пользователям iOS — дело в том, что начиная с 11 версии Apple вообще убрал возможность своим приложениям быть всегда онлайн и соответственно старые приложения для SIP уже не работают на новых версиях iOS. Это продиктовано политикой Apple минимизировать расход батареи для всех приложений.

Существуют несколько выходов из ситуации с батареей.

Основная мысль — переводить приложение в оффлайн, т. е. «усыплять» приложение и будить его по пушу именно в то время, когда приходит входящий звонок.

Собственно, так и делают все популярные мессенджеры с проприеретарными протоколами — WhatsApp, Viber, Телеграм и другие, когда идет входящий аудио или видео звонок — они пушем будят приложение, оно запускается и после этого способно принимать звонки.

Первое решение — создать свой сервер, свою IP АТС и написать своего собственного клиента под две платформы (iOS и Андроид), который бы и делал вышеописанные действия.

В принципе, так и делают некоторые крупные VOIP провайдеры (например МТТ) или производители софта для VOIP серверов — у них есть свои SIP клиенты для мобильных устройств, которые работают в пуш режиме.

Проблема в том что такие клиенты могут работать только с этим провайдером или с одной определенной АТС, соответственно если вы пользуетесь своей офисной IP АТС и одновременно другими провайдерами IP телефонии, то такое решение вам не подойдет.

Второй способ — купить универсального SIP клиента, который умеет делать пуш.
Почему такие решения стоят денег?

Потому что SIP клиент с пушем — это не просто написать отдельное приложение и выложить его в стор.

Для этого необходимо создать и поддерживать отдельный сервер, который и будет слать регулярные регистрационные пакеты на вашу IP АТС, а уже сам сервер и будет работать непосредственно с приложением — будить его при вызове.

Т.е. для создания нужна целая инфраструктура и именно поэтому такие универсальные решения платные.

Но как быть с вышеупомянутыми проблемами с шифрованием и блокировкой SIP?

Есть универсальное решение — M1 Messenger, который в том числе может работать в качестве SIP клиента с пуш режимом, и одновременно обеспечивает шифрование на стороне клиента и защиту от блокировок.

SIP трафик «заворачивается» в шифрованный трафик мессенджера (TLS) и уже не распознается DPI провайдеров как VOIP.

Все это работает на абсолютно любом SIP сервере — будь то офисный Астериск или какой-либо другой провайдер с виртуальными номерами — везде на стороне клиента будет зашифрованный трафик и пуш режим.

Итак, скачиваем мессенджер для Андроид или для iOS, регистрируемся (обратите внимание что для регистрации НЕ требуется номер телефона).

В общем меню находим вкладку Подключения SIP:


Добавляем свой существующий SIP-аккаунт.

Name — это имя вашего провайдера (в нашем примере это будет Zadarma)
User — здесь надо указать ваш SIP логин
Domain — адрес вашего VOIP провайдера.
Если провайдер или ваша IP АТС использует свой порт, то можно
указать его через двоеточие, например:sip.voipprovider.com:5060
Auth — ваш SIP логин (тот же что и в разделе User)
Password — ваш пароль к SIP аккаунту


В мессенджер можно добавить до 8 таких учетных записей. При исходящем наборе номера будет предложен выбор через какого провайдера делать звонок.

Можно завести в мессенджер несколько номеров — как офисных, так и других городов и стран и быть всегда доступным для входящих звонков, не опасаясь большого разряда батареи смартфона.

Так как мессенджер поддерживает пуш, то приложение в режиме ожидания спит и не расходует батарейку смартфона.

Таким образом, можно быть всегда на связи для входящих звонков по SIP — с DID виртуального или офисного номера например (сейчас SIP из-за проблем с питанием как правило используют только для исходящих звонков).

Надеемся что новые возможности M1 Messenger расширят сферу применения такого удобного и популярного протокола коммуникаций, как SIP.
Теги:астерискvoipiphoneip-телефонияsip-телефонияsip клиентsipмессенджерымессенджерM1 Messenger
Хабы: Блог компании Mobile One Информационная безопасность Разработка мобильных приложений Asterisk Смартфоны
+3
11,2k 45
Комментарии 141

Похожие публикации

Лучшие публикации за сутки