Modul Pro Generování Voip Datového Toku End-To-End Šifrovaných Messengerů
Total Page:16
File Type:pdf, Size:1020Kb
Masarykova univerzita Fakulta informatiky Modul pro generování VoIP datového toku end-to-end šifrovaných messengerů Bakalářská práce Ondřej Charbulák Brno, jaro 2020 Masarykova univerzita Fakulta informatiky Modul pro generování VoIP datového toku end-to-end šifrovaných messengerů Bakalářská práce Ondřej Charbulák Brno, jaro 2020 Na tomto místě se v tištěné práci nachází oficiální podepsané zadání práce a prohlášení autora školního díla. Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Ondřej Charbulák Vedoucí práce: Mgr. Adam Janovský i Poděkování Rád bych poděkoval svému vedoucímu Mgr. Adamovi Janovskému za veškeré rady a skvělé vedení bakalářské práce. Dále bych chtěl poděkovat Mgr. Jakubovi Čuperovi, Ph.D., a všem svým kolegům za cenné připomínky, vstřícnost a podporu při tvorbě této práce. ii Shrnutí Tato práce se zabývá kódováním hlasu a jeho následným přenosem po síti pomocí paketů. Tento jev je zkoumán u několika populárních mobilních aplikací umožňujících hovor prostřednictvím VoIP (Voice over Internet Protocol). Cílem práce je zjistit, zda jsou tyto aplikace zranitelné útokem podle autorů C. V. Wright et al. (IEEE S&P 2008, Spot me if you can). Součástí práce je návrh a implementace nástroje packetizer, jehož vstupem je zvolený hlasový korpus, výstupem jsou soubory obsahující délky paketů a fonémy náležící těmto paketům. iii Klíčová slova VoIP, C++, WhatsApp, Skype, audio kodek, Opus, Silk, hlasový kor- pus TIMIT iv Obsah 1 Úvod 1 2 Definice základních pojmů 3 2.1 Padding ............................3 2.2 Pulzně kódová modulace ...................3 2.3 Variable bitrate ........................4 2.4 Constant bitrate ........................4 2.5 Discontinuous transmission .................6 3 Výběr messengerů 7 3.1 Požadované vlastnosti messengerů ..............7 3.2 Chytání a analýza paketů ...................7 3.3 Kandidátní messengery ....................8 3.3.1 Telegram . .8 3.3.2 WhatsApp . .9 3.3.3 Facebook Messenger . 11 3.3.4 Signal . 12 3.3.5 Skype . 13 3.3.6 Viber . 14 3.4 Shrnutí ............................ 15 4 TIMIT Korpus 17 4.1 Formát WAV ......................... 17 4.1.1 Hlavička RIFF . 18 4.1.2 Hlavička NIST . 18 4.1.3 Formát a zpracování TIMIT .WAV souborů . 18 4.2 Textové soubory ........................ 19 4.2.1 Soubory .WRD . 19 4.2.2 Soubory .TXT . 19 4.2.3 Soubory .PHN . 19 4.2.4 Zpracování textových souborů . 19 5 Kodek Silk a jeho využití v aplikaci Skype 21 5.1 Kodek Silk ........................... 21 5.2 Nastavení kodeku Silk ..................... 21 5.3 Výchozí hodnoty pro Skype .................. 22 v 6 Kodek Opus a jeho využití v aplikaci WhatsApp 23 6.1 Kodek Opus .......................... 23 6.2 Nastavení kodéru Opus .................... 23 6.3 Výchozí hodnoty pro WhatsApp ............... 24 6.3.1 Hlavička Opus paketu . 24 6.3.2 Tvorba nestandardních paketů . 25 7 Návrh a implementace nástroje packetizer 27 7.1 Programy encoder_skype a encoder_whatsapp ..... 27 7.1.1 Příklad výstupu s parametrem -j 0 ....... 28 7.1.2 Příklad výstupu s parametrem -j 1 ....... 28 7.2 Použití a výstup programu packetizer ........... 28 7.3 Použité technologie ...................... 29 8 Závěr 30 Bibliografie 31 A Elektronická příloha 35 B Nástroj packetizer 36 B.1 Možnosti programu encoder_skype ............ 36 B.2 Možnosti programu encoder_whatsapp .......... 36 B.3 Možnosti programu packetizer .............. 38 B.4 Příklady výstupů programu packetizer .......... 40 B.4.1 Výstup pro Skype ve výchozím nastavení . 40 B.4.2 Výstup pro WhatsApp ve výchozím nastavení . 45 B.5 Příklad výstupu programu encoder_skype ......... 45 B.6 Příklad výstupu programu encoder_whatsapp ....... 46 vi Seznam tabulek vii Seznam obrázků 2.1 Graf s hodnotami audio vzorků. Na ose X je čas v sekundách, na ose Y je hodnota vzorku 4 2.2 Graf s velikostmi paketů o délce 20 ms. Na ose X je čas v sekundách, na ose Y velikost paketu v bajtech. 5 3.1 Ukázka paketů Telegramu 9 3.2 Ukázka paketů WhatsAppu 10 3.3 Ukázka RTP hlavičky WhatsApp paketu 11 3.4 Graf reprezentující počet přijatých paketů Facebook Messengeru za jednotku času (V jednom směru) 12 3.5 Ukázka paketů Signalu 13 3.6 Ukázka paketů Skypu 14 3.7 Ukázka paketů Viberu 15 viii 1 Úvod VoIP (Voice over Internet Protocol) je technologie, která umožňuje pře- nos digitalizovaného hlasu po síti, jež využívá protokolu IP. V dnešní době existuje celá řada mobilních aplikací, které prostřednictvím VoIP umožňují bezpečnou komunikaci. V důsledku širokého použití této technologie se i její bezpečnost stala často zkoumaným tématem. V mi- nulosti byla objevena celá řada útoků, jako je například man-in-the- middle attack, spam through Internet telephony (SPIT), nebo Denial of Service (DoS) [1, kap. 3, 4]. Aplikace pro zaručení bezpečnosti hovoru typicky implementují end-to-end šifrování, díky kterému je obsah pře- nášených dat znám jen koncovým uživatelům, pro ostatní jsou tato data viditelná pouze v zašifrované podobě. Aby bylo možné přenášet hlas po síti, je nutné jej nejprve převést do vhodné podoby. K tomuto účelu bylo navrženo několik audio kodeků, jako je například Opus (kap. 6.1) nebo Silk (kap. 5.1), jejich výstupem jsou pakety. Jelikož by byl přenos hovoru v nekomprimované podobě značně neefektivní, tyto kodeky mají za cíl produkovat co nejmenší ob- jem dat tak, aby zároveň byla udržována určitá kvalita daného hovoru. Takové kodeky mají typicky ztrátovou kompresi, krom toho mohou využívat různých technik, jak dále snížit množství přenášených dat. Jednou z těchto technik je variable bitrate, zkráceně VBR, kterému se věnuje kapitola 2.3. V roce 2008 autoři článku Spot me if you can [2] ukázali, že kódování, jehož součástí je VBR, se dá zneužít. Autorům se povedlo na základě délky zašifrovaných paketů určovat původní mluvené fráze, a to s prů- měrnou přesností 50 procent, v určitých situacích až 90 procent [2]. V takových případech se šifrování paketů stává zcela neúčinné. Autoři nejdříve ukázali, že každý foném odpovídá určité přenosové rychlosti, což je přímý důsledek použití VBR. Autoři dále popsali, jak vytvořit a použít Skrytý Markovův model1 pro hledání frází v zašifrovaných paketech. Pro využití jejich techniky je potřeba následující: ∙ znalost jazyka zkoumané konverzace ∙ příslušná zašifrovaná data 1. Angl. Hidden Markov Model (HMM) 1 1. Úvod ∙ data potřebná k vybudování Skrytého Markovova modelu, tě- mito daty jsou dvojice délka paketu a foném Cílem této práce bylo zanalyzovat populární messengery2 podpo- rující VoIP hovory, určit, jaký kodek používají, a vybrat z nich takové messengery, na které lze aplikovat výše popsaný útok. Výsledkem této práce je implementace nástroje packetizer, pomocí kterého je možné vytvořit trénovací data pro strojové učení. Účelem tohoto strojového učení je rozpoznávat fráze na základě délek po sobě jdoucích zašif- rovaných VoIP paketů. Vstupem nástroje je vybraný hlasový korpus a výstupem je datová sada, jejíž položky jsou délka paketu a foném, případně fonémy v paketu obsažené. Implementace strojového učení není předmětem této práce. Následující kapitola vysvětluje několik důležitých pojmů, včetně již zmíněného VBR. V kapitole 3 se věnuji analýze několika popu- lárních messengerů, které podporují VoIP hovory. Na základě této analýzy jsou zvoleny messengery vhodné pro útok popsaný v článku [2]. Kodeky vybraných messengerů jsou popsány v kapitolách 5.1 a 6, v těchto kapitolách se rovněž zabývám jejich konkrétním nastavením pro dané aplikace. Kapitola 4 je věnována zpracování korpusu TIMIT3 , a to jak audio nahrávek, tak i příslušných fonetických přepisů. Kapi- tola 7 se zabývá implementací nástroje packetizer, popisuje způsob použití, formát výstupu a možnosti rozšíření. V závěru je shrnuta použitelnost pro budoucí strojové učení a jeho očekávané výsledky. 2. Z angl. messaging applications - aplikace podporující okamžité zasílání zpráv (instant messaging). 3. Celým názvem DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus, viz https://catalog.ldc.upenn.edu/LDC93S1 2 2 Definice základních pojmů V této kapitole jsou definovány pojmy, které jsou používány napříč touto prací. Pro tvorbu následujících příkladů byl vždy použit audio soubor SA2.WAV z korpusu TIMIT. Tento soubor je součátí elektronické přílohy (viz příloha A). 2.1 Padding Padding1 je zarovnání délky přenášených dat na určitou velikost. To- hoto zarovnání bývá dosaženo vložením dodatečných bajtů do pů- vodní zprávy. Bajty mohou být vloženy na úrovni kodeku, to podpo- ruje mimo jiné i Opus [3, kap. 3.2.5.]. Padding může být přidán během šifrování, nebo samostatně v rámci použitého protokolu. Příkladem protokolu, který podporuje padding je RTP2 [4, kap. 5.]. 2.2 Pulzně kódová modulace Pulzně kódová modulace, zkráceně PCM3 je metoda nekomprimova- ného ukládání audio signálu v digitální podobě. Pro popis PCM se používají dva základní parametry, jedním je vzorkovací frekvence4, která udává počet uložených vzorků za jed- notku času, typicky za 1 sekundu. Jednotkou je hertz [Hz] a běžně jsou používány hodnoty od 8 kHz do 48 kHz. Druhým parametrem je bitová hloubka5, která udává, kolik bitů je použito na uložení jednoho vzorku audia. Typicky je použito 8, 16, nebo 24 bitů na jeden vzorek. Jednotlivé vzorky odpovídají hodnotám signálu v daném čase, hodnoty blízko nuly reprezentují ticho, u hodnot blížícím se amplitudě je tomu naopak. Na obrázku 2.1 je graf sestavený z jednotlivých vzorků souboru SA2.WAV. Ticho na začátku a pauzy mezi jednotlivými slovy se zde projevují hodnotami blízko nuly. 1. Česky „výplň“. 2. Real-time Transport Protocol 3. Z angl. pulse-code modulation. 4. Angl. sample rate 5. Angl. bit depth 3 2. Definice základních pojmů Obrázek 2.1: Graf s hodnotami audio vzorků. Na ose X je čas v sekun- dách, na ose Y je hodnota vzorku 2.3 Variable bitrate Audio kodek, jenž podporuje variable bitrate (VBR), dokáže složitější části audia kódovat vyšší přenosovou rychlostí a méně složité naopak nižší. Výsledkem jsou různě velké pakety. Rozdíl mezi velikostmi pa- ketů je nejvíce znatelný, když je porovnáno zakódované ticho s řečí.