ZRTP
ZRTP („Z“ jako odkaz na jeho hlavního tvůrce Philla Zimmermanna a RTP jako Real-time Transport Protocol) je v informatice kryptografický protokol, který zajišťuje dohodu a výměnu klíčů pro šifrování mezi dvěma koncovými body při použití ve VoIP (Voice over Internet Protocol) telefonii založené na komunikaci v reálném čase pomocí RTP protokolu. Pro výměnu klíčů se používá Diffie-Hellmanova metoda a pro šifrování je pak použit SRTP (Secure Real-time Transport Protocol). ZRTP vyvinuli Phil Zimmermann, Bryce Wilcox-O'Hearn, Colin Plumb, Jon Callas a Alan Johnston. Dne 5. března 2006 tvůrci odeslali Internet Engineering Task Force (IETF) návrh specifikace ZRTP, který byl publikován 11. dubna 2011 jako RFC 6189.

ZRTP je popsán jako protokol dohody výměny klíčů metodou Diffie-Hellman při navázání hovoru v reálném čase (RTP), který byl navázán pomocí jiného signalizačního protokolu např. SIP (Session Initiation Protocol). Tím se vytvoří sdílený tajný klíč, který se pak používá pro generování klíčů a soli pro bezpečnou RTP (SRTP) komunikaci. Jednou z funkcí ZRTP je, že se nespoléhá na SIP signalizaci pro správu klíčů a na všechny servery vůbec. Podporuje příležitostné šifrování pokud druhý VoIP klient také podporuje ZRTP .

Tento protokol nevyžaduje předchozí sdílené tajemství a ani se nespoléhá na infrastrukturu veřejných klíčů (PKI) nebo na infrastrukturu certifikačních autorit. Klíče jsou ve skutečnosti Diffiho-Hellmanovou metodou generovány při každém vytvoření relace, což umožňuje vytváření a udržování důvěryhodné třetí strany která nemůže být obejita.

Generované klíče přispívají k tajemství relace, protože z nich je poté odvozen samotný klíč relace a další parametry pro SRTP. To zajišťuje ochranu před MITM (man-in-the-middle) útoky tak dlouho, dokud útočník nebude schopen prolomit komunikaci při vytváření relace mezi dvěma koncovými body.

ZRTP může být použit s libovolným signalizačním protokolem (např. SIP, H.323, Jingle). Je také nezávislý na signalizační vrstvě, protože všechny jeho klíčové operace jsou přenášeny prostřednictvím RTP médií.

ZRTP/S (rozšíření protokolu ZRTP) může být přenášeno na jakékoliv telefonní síti včetně GSM, UMTS, ISDN, PSTN, satcom, UHF/VHF, protože je úzkopásmově orientovaným protokolem a provádí všechny klíčová jednání uvnitř bitového toku mezi dvěma koncovými body.

Alan Johnston pojmenoval tento protokol jako ZRTP, protože při jeho návrhu byla nejprve upravena hlavička protokolu RTP. Tímto způsobem vznikl původní ZRTP jako modifikace RTP. Později byl formát paketu změněn, aby byl syntakticky rozeznatelný od RTP. S ohledem na tuto změnu, ZRTP je nyní pseudozkratka.

Ověření pravosti 
 SAS
Výměna klíčů Diffiho-Hellmanovou metodou sama o sobě neposkytuje ochranu proti MITM (man-in-the-middle) útoku. Aby bylo zajištěno, že se útočník nenachází při vytváření relace (v tuto dobu ještě žádné sdílené tajemství neexistuje), je použita metoda SAS (Short Authentication String). Obě komunikující strany ústně ověří sdílenou hodnotu zobrazenou na obou koncových bodech. Pokud se hodnoty neshodují, je indikován MITM útok. SAS se používá pro ověření výměny klíčů, což je v podstatě kryptografický hash dvou Diffie-Hellman hodnot. Hodnota SAS je uložena v obou koncových bodech. K provedení autentizace je zapotřebí obou stran, aby si potvrdily tuto hodnotu. Pokud se hodnoty na obou stranách neshodují, jedná se pravděpodobně o útok man-in-middle. V opačném případě je tento útok vyloučen a spojení se považuje za bezpečné. Použitím Diffiho-Hellmanovy metody výměny klíčů je útočník omezen v tom smyslu, že musí v krátkém čase uhádnout správnou hodnotu SAS, což není pravděpodobné. SAS může být poměrně krátká. Například 16bitový SAS poskytuje útočníkovi pouze jednu šanci z 65536.
 Kontinuita klíče
ZRTP poskytuje druhou vrstvu autentizace proti MITM útoku, založenou na formě klíčové kontinuity. To se provede tak, že se zapamatuje otisk klíče pro použití v následujícím hovoru, který se smíchá s DH (Diffie-Hellman) sdíleným klíčem, což je vlastnost analogická s SSH. Není-li MITM přítomen při sestavení první relace, je od následných relací odstřižen. Proto i když se SAS nepoužije, většina MITM útoků se zastaví, protože MITM nebyl přítomen při sestavení první relace.

Použití 
 ZRTP může být použito na následujících platformách: Windows, Linux, Mac OS X, iPhone, Symbian, BlackBerry OS, Android
 ZRTP je implementováno v následujících jazycích: C, C++, Java
 ZRTP lze používat při přenosu přes následující média: WiFi, UMTS, EDGE, GPRS, Satellite IP modem, GSM, ISDN

Implementace 
ZRTP je implementován jako GNU ZRTP a je používán v Twinkle a SFLphone programu. Jako GNU ZRTP4J je použit v Jitsy (SIP komunikátor). Také je implementován v ortp pro použití v Linphone. Komerční implementace jsou dostupné od společnosti PrivateWawe a Silent Phone from Silent Circle, což je společnost založená Phillem Zimmermannem.

Reference 

VoIP protokoly