# ZRTP
ZRTP (composed of Z and Real-time Transport Protocol veya Z ve gerçek zamanlı aktarma iletişim protokolü) bir şifreleme anahtar paylaşma protokolüdür. Bu protokolde, Voice over Internet Protocol (VoIP) protokolüne dayanan iki uç nokta arasında şifreleme yapabilmek için anahtarlar üzerinde anlaşma yapılmaktadır. Voice over Internet Protocol (VoIP) telefon çağrısı Real Time Transport Protocol'e dayanır. Şifreleme için  Diffie–Hellman anahtar değişimi ve  Secure Real-time Transport Protokol (SRTP)' lerini kullanır. ZRTP, Bryce Wilcox-O'Hearn, Colin Plumb, Jon Callas ve Alan Johnston yardımıyla, Phil Zimmermann tarafından geliştirildi ve 5 Mart 2006 tarihinde Bryce Wilcox-O'Hearn'nin yardımıyla, Phil Zimmermann, Jon Callas and Alan Johnston tarafından Internet Engineering Task Force (IETF)' a sunuldu ve olarak 11 Nisan 2011 tarihinde yayınladı.


## Genel bakış.
ZRTP ("Z" Phil Zimmermann'ı referans eder  ; "RTP" Real-time Transport Protokolü ) Internet Draft dokümanlarinda "Real-time Transport Protokolü (RTP) medya akışı(diğer bazı sinyal protokolleri, örneğin "Session Initiation Protocol (SIP)," kullanılarak kurulmuştur) içerisinde hat üzerindeki çağrı kurulumu sırasında Diffie-Hellman anahtar değişimi gerçekleştirme ile anahtar paylaşma protokolü" olarak tanımlanır. Bu, anahtar ve güvenli RTP (SRTP) oturumnu sağlayacak tuz(salt) üretimi için paylaşılan bir gizlilik üretir. ZRTP'nin özelliklerinden bazıları anahtar yönetimi için SIP sinyalizasyonuna dayanmaması ya da hiçbir sunucuda olmamasıdır. Diğer VoIP istemcisi ZRTP'yi destekliyorsa, otomatik algılamalı (auto-sensing) opportunistic encryption'ı destekler.
Bu protokol, önceden paylaşılan gizliliğine(shared secret) veya bir açık anahtar altyapısına (PKI) veya sertifika yetkililerine ihtiyaç duymaz, aslında her oturum kurulumunda geçici bir Diffie–Hellman anahtarı üretilir : Bu durum, Trusted-Third-Party yaratma ve sürdürme karmaşasına yol açar.
Bu anahtarlar(STRP oturumları için üretilen oturum anahtarı veparametreler) eğer varsa önceden paylaşılan gizlilikleri ile birlikte oturum gizliliği üretimine katkıda bulunur.Bu  man-in-the-middle (MiTM) saldırılarına karşı korur ve saldırgan iki uç nokta arasında ilk oturumda bulunamaz.
ZRTP; sinyalizasyon protokollerinde, H.323, Jingle ve  dağıtılmış hash tablosu sistemlerinde kullanılabilir. Tüm anahtar paylaşımları RTP medya akışı üzerinden sağlandığı için ZRTP sinyalizayson katmanından bağımsızdır.
ZRTP/S, ZRTP protokolü uzantısı, dar bant bitstream-odaklı bir protokol olduğu için ve iki uç nokta arasında bit akışı içindeki tüm önemli anlaşmaları gerçekleştirdiği için her tür  GSM, UMTS, ISDN, PSTN, SATCOM, UHF/VHF radio içeren telefon şebekesi üzerinde çalışabilir.
Alan Johnston tarafından isimlendirilen ZRTP, RTP paketlerinin başlık uzantısı eklenerek oluşturulmasına dayandığı için RTP 'nin bir çeşidi olarak gosterilir. Daha sonraki taslaklarda, sözdilimsel olarak ayırt edilebilmesi için paket formatı değistirilmiştir. Bu değişiklik, ZRTP'yi  pseudo-acronym hale getirmiştir.


## Kimlik Doğrulama.
Kullanılan Diffie–Hellman anahtar değişimi  man-in-the-middle saldırılarına karşı korumayı sağlamamaktadır. Saldırganın gerçekten ilk oturumda bulunmadığını kanıtlamak için, "Short Authentication String" (SAS) metodu kullanılır : iletişim tarafları uç noktalarda görüntülenen paylaşılan değerleri kontrol eder. Her iki taraftaki değer eşleşmiyorsa,  man-in-the-middle saldırısı bildirisi yapılır. SAS, Diffie-Hellman değerlerinin hash hallerini anahtar değişiminin doğrulanması için kullanılır. SAS değeri ZRTP'nin her iki uç noktalasında işlenmiş haldedir. Kimlik doğrulama için, SAS değeri sesli bağlantı üzerinden açık şekilde partnere iletilecek şekilde okunur.Her iki taraftaki değer eşleşmiyorsa,  man-in-the-middle saldırısı bildirisi yapılır. DH değişiminde hash kullanımı, saldırganlara sadece bir kez tahmin edilebilecek doğru SAS üretebilme kısıtlamasını getirir bu da SAS değerinin kısa seçilebileceği anlamına gelir.


### Anahtar Sürekliliği.
ZRTP, anahtar sürekliliğini baz alarak, MitM saldırıları için ikinci katmanda kimlik doğrulamayı sağlar. Bazı anahtarlar daha sonraki aramalarda kullanılmak ve DH ortak anahtar ile karıştırılmış halde tutulmak üzere önbellekte hashlenmiş halleriyle bulunur. Bu durum anahtar sürekliliğine SSH'a benzer bir özellik vermiştir. Ilk çağrıda MitM saldırısı gözlemlenmediyse, sonraki çağrılarda saldırı yapılmaması için önlemler alınır. Yani SAS kullanılmasa bile, ilk çağrılarda MitM saldırısı olmadığı için genellikle çoğu MitM saldırısının durdurulabildiği anlamına gelir.


## Çalışma Alanları.
  - ZRTP protokolü Windows, Linux, Mac OS X, iPhone, Symbian, BlackBerry OS, Android platformlarında uygulanır ve kullanılır.
  - ZRTP protokolü C, C++, Java dillerinde yazılır ve ygulanır.
  - ZRTP protokolü  WiFi, UMTS, EDGE, GPRS,Satellite IP modem, GSM CSD, ISDN medyalarında başarılı bir şekilde kullanılır.


## Uygulama.
ZRTP uygulamaları :
  - GNU ZRTP (Twinkle ve SFLphone için kullanıldı).
  - GNU ZRTP4J (Jitsi'de kullanıldı).
  - ortp (Linphone için kullanıldı).
  - libzrtp (FreeSWITCH için kullanıldı).
  - RedPhone ve Signal (ZRTP'yi Android ve iOS üzerinde şifrelenmiş arama için kullandı).
  - CSipSimple (Android OS için kullanılan ücretsiz bir uygulama, ZRTP'yi tamamen destekler).
ZRTP'nin ticari uygulaması RokaCom'da, PrintWave içindeki PrivateGSM, ve daha çok Sılent Phone'da(Phil Zimmermann tarafından kuruldu) mevcut. Draytek ZRTP'yi VoIP yazılım ve donanımı açısından destekler.