Протокол Skype — это собственная сеть интернет-телефонии, используемая Skype . Спецификации протокола не были опубликованы Skype, а официальные приложения, использующие этот протокол, имеют закрытый исходный код .
Сеть Skype несовместима с большинством других сетей передачи голоса по IP (VoIP) без надлежащего лицензирования Skype. Были предприняты многочисленные попытки изучить или перепроектировать протокол, чтобы раскрыть его, исследовать безопасность или разрешить неофициальным клиентам.
20 июня 2014 года Microsoft объявила об прекращении поддержки старого протокола Skype. В течение нескольких месяцев с этой даты, чтобы продолжить использование сервисов Skype, пользователям Skype пришлось обновить приложения Skype, выпущенные в 2014 году, и пользователи не могли войти в старые версии Skype (клиенты). [1] [2] Не было сделано никаких заявлений о том, будут ли SmartTV и аппаратные телефоны со встроенными функциями Skype продолжать работать без перебоев. Новый протокол Skype — Microsoft Notification Protocol 24 — обещал улучшить обмен сообщениями в автономном режиме и улучшить синхронизацию сообщений на устройствах Skype. Прекращение поддержки вступило в силу на второй неделе августа 2014 года. [3]
Skype был первой одноранговой сетью IP-телефонии. [4] Сеть содержит три типа объектов: суперузлы , обычные узлы и сервер входа. Каждый клиент поддерживает кэш хоста с IP-адресами и номерами портов доступных суперузлов. Каталог пользователей Skype децентрализован и распределен между супернодами сети. Суперноды группируются в слоты (9–10 супернод), а слоты группируются в блоки (8 слотов). [ нужна цитата ]
Раньше суперузлом мог стать любой клиент с хорошей пропускной способностью, отсутствием ограничений из-за брандмауэра или трансляции сетевых адресов (NAT) и достаточной вычислительной мощностью. Это налагало дополнительную нагрузку на тех, кто подключался к Интернету без NAT, поскольку Skype использовал их компьютеры и подключения к Интернету в качестве третьих лиц для пробивания отверстий UDP (для прямого подключения двух клиентов, обоих за NAT) или для полной ретрансляции вызовов других пользователей. В 2012 году Microsoft изменила структуру сети и взяла под свой контроль все суперузлы в виде размещенных серверов в центрах обработки данных. [5] В то время Microsoft защищала этот шаг, заявляя, что они «считают, что этот подход дает немедленные преимущества в производительности, масштабируемости и доступности для сотен миллионов пользователей, составляющих сообщество Skype». [6] В то время существовала некоторая обеспокоенность по поводу последствий изменения для конфиденциальности, [7] что, похоже, подтвердилось с раскрытием программы наблюдения PRISM в июне 2013 года. [8] [9]
Skype не поддерживает использование протокола IPv6 , [10] что значительно снизило бы сложность, связанную с вышеупомянутой структурой связи IPv4.
Суперузлы ретранслируют сообщения от имени двух других клиентов, оба из которых находятся за брандмауэрами или трансляцией сетевых адресов «один ко многим». Без ретрансляции через суперноды два клиента с проблемами брандмауэра или NAT не смогут совершать или принимать вызовы друг от друга. Skype пытается заставить обе стороны напрямую согласовать детали соединения, но иногда сумма проблем на обоих концах может помешать установлению прямого разговора.
Проблемы с межсетевыми экранами и NAT могут быть:
Сигнализация шифруется с помощью RC4 ; однако этот метод только запутывает трафик, поскольку ключ можно восстановить из пакета. Голосовые данные шифруются с помощью AES . [11]
Интерфейс прикладного программирования (API) клиента Skype открывает сеть разработчикам программного обеспечения. API Skype позволяет другим программам использовать сеть Skype для получения информации « белых страниц » и управления вызовами.
Код Skype имеет закрытый исходный код , а протокол не стандартизирован. [12] Части клиента используют Internet Direct (Indy) , библиотеку связи сокетов с открытым исходным кодом. [ нужна цитата ]
8 июля 2012 года исследователь из Бенина Уанило Медеган опубликовал статьи и доказательство концептуального кода, результаты своего обратного проектирования клиента Skype. [13]
Многие сетевые и охранные компании заявляют, что могут обнаруживать и контролировать протокол Skype для корпоративных и операторских приложений. Хотя конкретные методы обнаружения, используемые этими компаниями, часто являются запатентованными, критерий хи-квадрат Пирсона и стохастическая характеристика с помощью наивных байесовских классификаторов — это два подхода, которые были опубликованы в 2007 году. [14]
Алгоритм шифрования RC4 используется для сокрытия полезной нагрузки дейтаграмм.
XOR этих двух 32-битных значений преобразуется в 80-байтовый ключ RC4 с использованием неизвестного механизма ключей.
Заметное неправильное использование RC4 в Skype можно обнаружить в потоках TCP (UDP не затрагивается). Первые 14 байт (10 из которых известны пользователю, поскольку состоят из хеша имени пользователя и пароля) подвергаются операции XOR с потоком RC4. Затем шифр повторно инициализируется для шифрования остальной части потока TCP. [15]
TCP-пакеты:
TCPTCP-пакет инициализации Skype
TCP-пакет Skype Init содержит
Практически весь трафик шифруется. Каждая команда имеет свои параметры, добавленные в список объектов. Список объектов может быть сжат.
/Список объектов... -| Enc -> Cmd -> Кодировать ^ \ Сжатый список... -| Фрагмент | | |------------------<---------------| Подтверждаю
NAck
Переслать -> Переадресовано..Сообщение
Объектом может быть число, строка, IP-порт или даже другой список объектов. Каждый объект имеет идентификатор. Этот идентификатор определяет, каким параметром команды является объект.
Объект: Число IP:Порт Список номеров Нить RSA-ключ
Список объектов Размер списка (n) Объект 1 . . Объект н
Пакеты можно сжимать. Алгоритм представляет собой вариант арифметического сжатия , в котором вместо битов используются вещественные числа.
Реверс-инжиниринг протокола Skype путем проверки/дизассемблирования двоичных файлов запрещен условиями лицензионного соглашения Skype. Однако закон Европейского Союза разрешает реконструировать компьютерную программу без получения разрешения от автора в целях совместимости. [16] В США Закон об авторском праве в цифровую эпоху обеспечивает защиту программного обеспечения для обратного проектирования в целях обеспечения совместимости с другим программным обеспечением. [17] [18] В США также имеются юридические прецеденты, когда реверс-инжиниринг направлен на обеспечение совместимости файловых форматов и протоколов. [19] [20] [21]
Кроме того, в некоторых странах специально разрешено копирование программы для целей обратного проектирования. [22]
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка )