Protokół Skype'a

Protokół Skype to zastrzeżona sieć telefonii internetowej używana przez firmę Skype . Specyfikacje protokołu nie zostały upublicznione przez Skype'a, a oficjalne aplikacje korzystające z protokołu mają zamknięte źródła .

Sieć Skype nie jest zgodna z większością innych sieci Voice over IP (VoIP) bez odpowiedniej licencji Skype. Podejmowano liczne próby zbadania lub inżynierii wstecznej protokołu w celu ujawnienia protokołu, zbadania bezpieczeństwa lub dopuszczenia nieoficjalnych klientów.

20 czerwca 2014 r. Microsoft ogłosił wycofanie starego protokołu Skype. W ciągu kilku miesięcy od tej daty, aby nadal korzystać z usług Skype, użytkownicy Skype'a musieli aktualizować aplikacje Skype wydane w 2014 roku, a użytkownicy nie mogli logować się do starszych wersji Skype'a (klientów). Nie ogłoszono, czy SmartTV i telefony sprzętowe z wbudowaną funkcją Skype będą nadal działać bez przerw. Nowy protokół Skype — Microsoft Notification Protocol 24 — obiecano lepsze przesyłanie wiadomości w trybie offline i lepszą synchronizację wiadomości między urządzeniami Skype. Wycofanie weszło w życie w drugim tygodniu sierpnia 2014 r.

Architektura peer-to-peer

Skype był pierwszą siecią telefonii IP peer-to-peer . Sieć zawiera trzy rodzaje jednostek: supernody , zwykłe węzły i serwer logowania. Każdy klient utrzymuje pamięć podręczną hosta z adresem IP i numerami portów osiągalnych superwęzłów. Katalog użytkowników Skype jest zdecentralizowany i rozproszony między superwęzłami w sieci. Supernody są pogrupowane w sloty (9-10 superwęzłów), a sloty są pogrupowane w bloki (8 slotów). [ potrzebne źródło ]

superwęzłem mógł stać się każdy klient z dobrą przepustowością, bez ograniczeń ze względu na zaporę ogniową lub translację adresów sieciowych (NAT) i odpowiednią mocą obliczeniową. Stanowiło to dodatkowe obciążenie dla tych, którzy łączyli się z Internetem bez NAT, ponieważ Skype używał ich komputerów i połączeń internetowych jako stron trzecich do dziurkowania UDP (aby bezpośrednio połączyć dwóch klientów za NAT) lub całkowicie przekazywać połączenia innych użytkowników. W 2012 roku Microsoft zmienił projekt sieci i przejął kontrolę nad wszystkimi superwęzłami jako hostowanymi serwerami w centrach danych. W tamtym czasie Microsoft bronił tego posunięcia, mówiąc, że „wierzy, że takie podejście przyniesie natychmiastowe korzyści w zakresie wydajności, skalowalności i dostępności dla setek milionów użytkowników, którzy tworzą społeczność Skype”. W tamtym czasie istniały pewne obawy dotyczące wpływu zmiany na prywatność, co wydaje się być potwierdzone ujawnieniem programu PRISM w czerwcu 2013 r.

Skype nie obsługuje protokołu IPv6 , co znacznie zmniejszyłoby złożoność związaną ze wspomnianą strukturą komunikacji IPv4.

Supernody przekazują komunikację w imieniu dwóch innych klientów, z których oba znajdują się za zaporami ogniowymi lub translacją adresów sieciowych „jeden do wielu”. Bez przekazywania przez superwęzły dwóch klientów z zaporą ogniową lub problemami z translacją NAT nie byłoby w stanie nawiązywać ani odbierać połączeń od siebie nawzajem. Skype próbuje skłonić obie strony do bezpośredniego wynegocjowania szczegółów połączenia, ale czasami suma problemów po obu stronach może uniemożliwić nawiązanie bezpośredniej rozmowy.

Problemy z zaporami ogniowymi i NAT mogą być następujące:

  • Zewnętrznych numerów portów lub adresów IP nie można wyprowadzić, ponieważ NAT je przepisuje
  • Używany firewall i NAT uniemożliwiają odebranie sesji
  • UDP nie nadaje się do użytku z powodu problemów z NAT, takich jak przekroczenie limitu czasu
  • Zapory sieciowe blokują wiele portów
  • TCP przez NAT typu „wiele do jednego” jest zawsze domyślnie „tylko na zewnątrz” — dodanie ustawień przekierowania portów do routera NAT może umożliwić odbiór sesji TCP

Protokół

Sygnalizacja jest szyfrowana przy użyciu RC4 ; jednak metoda ta tylko zaciemnia ruch, ponieważ klucz można odzyskać z pakietu. Dane głosowe są szyfrowane za pomocą AES .

Interfejs programowania aplikacji (API) klienta Skype otwiera sieć dla programistów. Interfejs API Skype umożliwia innym programom korzystanie z sieci Skype w celu uzyskiwania informacji z „ białych stron ” i zarządzania połączeniami.

Kod Skype jest zamkniętym źródłem , a protokół nie jest znormalizowany. Części klienta korzystają z Internet Direct (Indy) , biblioteki komunikacyjnej gniazd typu open source. [ potrzebne źródło ]

8 lipca 2012 r. badacz z Beninu, Ouanilo Medegan, opublikował artykuły i kod koncepcyjny będący wynikiem jego inżynierii wstecznej klienta Skype.

Wykrywanie protokołu

Wiele firm zajmujących się sieciami i bezpieczeństwem twierdzi, że wykrywa i kontroluje protokół Skype dla aplikacji korporacyjnych i operatorów. Chociaż specyficzne metody wykrywania stosowane przez te firmy są często zastrzeżone, test chi-kwadrat Pearsona i charakterystyka stochastyczna z klasyfikatorami Naive Bayes to dwa podejścia, które zostały opublikowane w 2007 roku.

Warstwa zaciemniania

Algorytm szyfrowania RC4 służy do zaciemniania ładunku datagramów.

  1. kod CRC32 publicznego źródłowego i docelowego adresu IP oraz identyfikator pakietu Skype
  2. Wektor inicjalizacji warstwy zaciemniania Skype'a (IV).

XOR tych dwóch 32-bitowych wartości jest przekształcany na 80-bajtowy klucz RC4 przy użyciu nieznanego mechanizmu klucza.

Godne uwagi nadużycie RC4 w Skype można znaleźć w strumieniach TCP (nie ma to wpływu na UDP). Pierwsze 14 bajtów (z których 10 jest znanych użytkownikowi, ponieważ składają się z skrótu nazwy użytkownika i hasła) jest poddawanych operacji XOR ze strumieniem RC4. Następnie szyfr jest ponownie inicjowany w celu zaszyfrowania reszty strumienia TCP.

TCP

Pakiety TCP:

TCP Skype Uruchom pakiet TCP

Pakiet Skype Init TCP zawiera

  • ziarno (4 bajty)
  • init_str string 00 01 00 00 01 00 00 00 01/03

Datagramy niskiego poziomu

Prawie cały ruch jest szyfrowany. Każde polecenie ma dołączone parametry na liście obiektów. Listę obiektów można skompresować.

 / Lista obiektów ... -| Enc -> Cmd -> Encod ^ \ Lista skompresowana ... -|  Frag |  |  |---<---------------|  Potwierdź  
 dalej 
 -> Przekazano..Wiadomość 

Listy obiektów

Obiektem może być liczba, ciąg znaków, adres IP:port lub nawet inna lista obiektów. Każdy obiekt ma identyfikator. Ten identyfikator określa, który parametr polecenia jest obiektem.

 Obiekt: Numer IP:Port Lista numerów Ciąg Klucz RSA 
 Lista obiektów Lista Rozmiar (n) Obiekt 1 . .  Obiekt nr  

Kompresja pakietów

Pakiety mogą być kompresowane. Algorytm jest odmianą kompresji arytmetycznej , która używa liczb rzeczywistych zamiast bitów.

Zagadnienia prawne

Inżynieria wsteczna protokołu Skype poprzez sprawdzanie/deasemblację plików binarnych jest zabroniona przez warunki umowy licencyjnej Skype. Jednak prawo Unii Europejskiej zezwala na inżynierię wsteczną programu komputerowego bez uzyskania zgody autora dla celów interoperacyjności. W Stanach Zjednoczonych ustawa Digital Millennium Copyright Act zapewnia ochronę oprogramowania do inżynierii wstecznej w celu zapewnienia współdziałania z innym oprogramowaniem. Istnieją również precedensy prawne w Stanach Zjednoczonych, gdy inżynieria wsteczna ma na celu interoperacyjność formatów plików i protokołów.

Ponadto niektóre kraje wyraźnie zezwalają na kopiowanie programów do celów inżynierii wstecznej.

Notatki

Linki zewnętrzne