Princip zabezpečení protokolem ZRTP

ZRTP protokol byl navržen v roce 2006. Rozšiřuje protokol SRTP tím, že k němu přidává mechanismy pro počáteční výměnu symetrického klíče master key. Konkrétně pro výměnu symetrického klíče používá algoritmus Diffie-Hellmana. Tento algoritmus je založený ta tom, že si obě strany komunikace vygenerují svůj soukromý a veřejný klíč. Veřejný klíč pak pošlou druhému uživateli, který z něho pomocí matematických operací odvodí symetrický klíč, kterým bude šifrovat a dešifrovat posílaná data. Následující popis objasňuje podstatu algoritmu Diffie-Hellmanama mezi uživatelem A a uživatelem B:

  • Oba uživatelé se dohodnou na dvou veřejných parametrech M a N, kde M je prvočíslo.
  • Uživatel A si vygeneruje náhodný soukromý klíč x a vypočítá veřejný klíč X = Nx mod M, který odešle uživateli B.
  • Uživatel B si vygeneruje náhodný soukromý klíč y a vypočítá veřejný klíč Y = Ny mod M, který odešle uživateli A.
  • Uživatel B obdrží od uživatele A jeho veřejný klíč Y, ze které vypočte symetrický klíč KYX = Yx mod M,
  • Uživatel A obdrží od uživatele B jeho veřejný klíč X, ze které vypočte symetrický klíč KXY = Xy mod M,
  • protože platí KYX = KXY = K, mohou uživatelé A a B další vzájemnou komunikaci šifrovat pravě tímto klíčem.

ZRTP prakticky

X-Lite 2.0 s použitím protokolu ZRTP(Zfone)

Komunikace probíhala mezi dvěma klienty X-Lite 2.0. K zabezpečení přenosu RTP paketů byl použit program Zfone. Zfone sám osobě neslouží ke komunikaci, ale stará se pouze o zabezpečení přenášených dat, které zabezpečuje pomocí protokolu ZTRP. Podmínkou pro zašifrování komunikace je samozřejmě nainstalovaný Zfone na obou počítačích, mezi kterými komunikace probíhá. Na obrázku 1 je zobrazeno, jaké možnosti zabezpečení Zfone nabízí. Přenášená data lze šifrovat symetrickou šifrou AES-128 nebo AES-256. Program umožňuje zvolit velikost pole auhentication tag, tj. délku kontrolního součtu hlavičky, která je standardně nastavena na 32 bitů. Pro počáteční výměnu symetrického klíče si lze zvolit mezi Diffie-Hellmannovými algoritmy DH-3072 a DH-4096.

Nastavení parametrů zabezpečení programu Zfone
Obr. 1: Nastavení parametrů zabezpečení programu Zfone

Princip algoritmu Diffie-Hellmana byl již vysvětlen výše. Jak je vidět z obrázku 2 původní Diffie-Hellmannův algoritmus je náchylný na útok typu Man in the middle. Z toho důvodu používá ZRTP mechanismus SAS (Short Authentication String), který tuto zranitelnost napravuje. Při první komunikaci je SAS vypočten jako hash sdíleného symetrického klíče. Každá strana si spočítá hodnotu SAS na své straně komunikačního řetězce a pak si navzájem vypočtenou hodnotu sdělí. Pokud jsou vypočtené hodnoty SAS stejné, tak s velkou pravděpodobností není kanál předmětem útoku.

Útok typu Man in the Middle
Obr. 2: Útok typu Man in the Middle

Dalším prvkem zvyšujícím odolnost proti MitM útokům je tzv. kontinuita klíčů. Obě strany si uchovávají hashe z klíčů použitých v daném hovoru a v příštím hovoru vypočítají nový hash z předchozího hashe a z nového sdíleného symetrického klíče. Tento postup zajistí, že pokud nebyl MitM útok vedený v prvním hovoru, nemůže být úspěšný ani v žádném dalším. Čím větší je délka SAS, tím těžší je pro útočníka SAS odhalit a útočník může pouze odhadovat jaké SAS má odeslat. Zfone nabízí nastavení velikosti SAS na 32 bitů nebo 256 bitů a k vytvoření hashe používá funkci SHA-256.

Princip výměny symetrického klíče mezi uživateli a ověření hodnoty SAS
Obr. 3: Princip výměny symetrického klíče mezi uživateli a ověření hodnoty SAS

Pomocí programu Wireshark byla zachycena multimediální komunikace, která je zobrazena na obrázcích 4 a 5. Jak je vidět na obrázku 5, program Zfone zabezpečuje pouze vlastní multimediální komunikaci. Signalizace protokolu SIP byla sítí přenášena v otevřené podobě a nebyla nijak zabezpečena.

Zachycené pakety ZRTP
Obr. 4: Zachycené pakety ZRTP

Zachycená komunikace klientů X-Lite při použití protokolu ZRTP
Obr. 5: Zachycená komunikace klientů X-Lite při použití protokolu ZRTP

Po navázání komunikace mezi klienty bylo několik prvních RTP paketů přeneseno bez zabezpečení. Během této doby se obě komunikující strany dohodly na použitých šifrovacích algoritmech, vyměnily si veřejné klíče pomocí algoritmu Diffie-Hellmana a došlo k ověření hodnoty SAS.

Nejdříve se uskutečnila výměna Hello paketů (obr. 6), ve kterých byly přenášeny informace o nastavených bezpečnostních parametrech v programu Zfone. Příjem Hello paketů byl potvrzen druhou stranou komunikace paketem HelloACK. Následovala výměna několika Commit paketů (obr. 7), ve kterých došlo k ujednání použitých bezpečnostních algoritmů pro zabezpečený přenos RTP paketů. Z obrázku lze vyčíst, že se komunikující strany dohodly, že pro šifrování multimediálních dat použijí algoritmus AES-128, k výměně symetrického hesla algoritmus DH-4096, velikost SAS bude 256 bitů a jako hashovací funkce k výpočtu SAS bude použita SHA-256.

Poté, co se komunikující strany dohodly na bezpečnostních parametrech, došlo k výměně paketů DH, které obsahovaly veřejné klíče uživatelů. Když měly obě strany k dispozici veřejné klíče druhých stran, vypočítaly si tajný symetrický klíč a hodnotu SAS, kterou pak ve formě hashe poslaly druhé straně ve zprávě Confirm. Skutečnost, že se obě hodnoty SAS shodovaly, si obě strany sdělily ve zprávě Conf2ACK.Po úspěšné výměně symetrického klíče byly všechny následující RTP pakety šifrovány jako ZRTP.

Zachycený Hello ZRTP paket programu Zfone
Obr. 6: Zachycený Hello ZRTP paket programu Zfone

Zachycený Commit ZRTP paket programu Zfone
Obr. 7: Zachycený Commit ZRTP paket programu Zfone

Twinkle 1.0.1

Twinkle umožňuje zabezpečit přenášená mediální data protokolem ZRTP. Jak je vidět na obrázku 8, uživatel může pouze zapnout nebo vypnout použití protokolu ZRTP, ale už mu není dovoleno nastavit jednotlivé bezpečnostní parametry (např. zvolit použitou šifrovací metodu), jak tomu bylo možné u programu Zfone.

Nastavení použití protokolu ZRTP v programu Twinkle
Obr. 8: Nastavení použití protokolu ZRTP v programu Twinkle

Jaké bezpečnostní mechanismy Twinkle používá lze zjistit ze zachyceného Commit ZRTP paketu (obr 9). Šifrování RTP paketů je prováděno algoritmem AES-256, k výměně symetrického klíče je použit algoritmus DH-4096, velikost SAS je 32 bitů a jako hashovací funkce k ověření SAS je použita SHA-256. Princip výměny symetrického klíče je stejný, jako byl popsaný u programu Zfone. Informace, že klienti mají použít k zabezpečení dat protokol ZRTP, je obsažena při navazování komunikace v protokolu SDP, který je přenášen ve zprávě SIP INVITE (obr. 10).

Zachycený Commit ZRTP paket programu Twinkle
Obr. 9: Zachycený Commit ZRTP paket programu Twinkle

 Zachycený paket zprávy SIP INVITE klienta Twinkle
Obr. 10: Zachycený paket zprávy SIP INVITE klienta Twinkle


© 2010, Vošec - Petr Otoupalík