Princip zabezpečení protokolem SRTP
Protože protokoly RTP a RTCP neobsahují žádné mechanismy pro zajištění integrity, autentičnosti
a důvěrnosti, byly definovány protokoly SRTP (Secure RTP) a SRTCP (Secure RTCP), které už
mají požadované mechanismy implementované.
Formát paketu protokolu SRTP je znázorněn na obrázku 1. Na obrázku je vidět, že šifrovaná je
pouze část paketu RTP, kam jsou vkládána přenášená data. Oproti paketu RTP jsou zde navíc dvě
pole – MKI a Authentication tag.
Obr. 1: Formát SRTP paketu
Pole Master Key Identifier (MKI) je nepovinné a identifikuje master key, od kterého jsou odvozeny
tajné symetrické klíče session keys (klíče sezení). Klíče sezení jsou dohodnuty mezi uživateli
hned po navázání spojení a po zbytek celé relace se jimi šifrují přenášená multimediální data.
Nejdřív si ovšem komunikující strany musí vyměnit master key, pomocí kterého si pak vygenerují všechny
potřebné klíče sezení. K výměně master key se může použít protokol SDP (protokol pro inicializaci relací).
Ten ale neposkytuje žádnou formu zabezpečení a tak je třeba navíc použít bezpečnostní mechanismy typu
TLS nebo IPsec.
Authentication tag je šifrovaný kontrolní součet hlavičky a těla RTP paketu. Je doporučený
a chrání pakety od neautorizované změny obsahu.
Na obrázku 2 je znázorněn formát paketu SRTCP. SRTCP paket je chráněný obdobně jako SRTP paket,
ale narozdíl od SRTP je zde pole Authentication tag povinné. Jinak by bylo například možné ukončit
spojení, kdyby útočník poslal paket BYE. Navíc je zde ještě pole SRTCP index, který se používá
jako čítač pořadí SRTCP paketů a slouží k zabránění opakovaným útokům. První bit v tomto poli E
se používá jako šifrovací značka (Encryption flag), která značí, jestli bylo tělo SRTCP paketu
šifrováno.
Obr. 2: Formát SRTCP paketu
Oba protokoly používají stejné postupy a algoritmy pro zajištění důvěrnosti, autentičnosti
a integrity přenášených dat.
Pro zajištění důvěrnosti přenášených dat se používá symetrická kryptografická metoda
AES-CTR (counter mode), která pracuje jako generátor pseudonáhodných klíčů. AES-CTR je právě svou
stavbou vhodný pro multimediální nepotvrzované přenosy. Algoritmus umožňuje příjemci zpracovat
přijaté pakety v nestanoveném pořadí, což je požadováno při použití real-time aplikací, kde pakety
nemusí být vždy spolehlivě doručeny. Vstupem do generátoru je inicializační vektor IV, který se
skládá z kontrolního součtu salt_key, SSRC (náhodné číslo jednoznačně identifikující zdroj) a
paket indexu. Dalším vstupem do generátoru je jeden z klíčů sezení a to šifrovací klíč (encryption key).
Výsledný pseudonáhodný klíč je pomocí operace XOR aplikován na nezabezpečený obsah paketu, viz. obr. 3.
Obr. 3: Princip šifrování obsahu paketu SRTP a SRTCP algoritmem AES-CTR
K zajištění autentičnosti přenášených dat je použít algoritmus HMAC-SHA-1. Tímto algoritmem je
vytvořen kontrolní součet z hlavičky a obsahu SRTP paketu. Tato hodnota se pak uloží do pole
authentication tag, viz. obr. 4. Vzhledem k tomu, že je při přenosu kladen důraz na co nejmenší
šířku přenosového pásma, je výsledný kontrolní součet zkrácen na 80 nebo 32 bitů.
Obr. 4: Princip zajištění autentičnosti paketu SRTP a SRTCP algoritmem HMAC-SHA-1
SRTP prakticky
KPhoneSI 1.0.2.1
Tento program umožňuje zabezpečit audio i video komunikaci pomocí protokolu SRTP, jak je naznačeno
na obrázku 5. Aby byla komunikace úspěšná, musejí mít obě komunikující strany nastaveny stejný
master key, který se při komunikaci mezi klienty nevyměňuje. KphoneSI využívá metodu přednastaveného
sdíleného klíče PSK (Pre-Shared Key), tzv. „předem sdílené tajemství“.
Obr. 5: Nastavení použití protokolu SRTP v programu KPhoneSI
Když na obou komunikujících klientech bude nastaven stejný master key, obě strany si vygenerují
i stejné klíče relace (Session Keys) a mohou si tak mezi sebou vyměňovat zašifrovaná data.
Pokud by se nastavené klíče lišily, byly by data posílány do sítě zašifrovány, ale druhá strana by
je nedokázala správně dešifrovat.
Informace, že klienti mají mezi sebou komunikovat pomocí protokolu SRTP, je obsažena při navazování
komunikace ve zprávě SIP INVITE, která přenáší i SDP protokol. Účelem SDP protokolu je
zprostředkovávání informací o mediálním toku v multimediálních relací. Ze zachycené zprávy SIP
INVITE (obr. 6) si lze všimnou, že položka Media Proto obsahuje záznam RTP/SAVP (Real-Time
Transport Protocol/Secure Audio and Video Profile), což značí použití protokolu SRTP. Pokud by měl
být pro přenos dat použit běžný protokol RTP, obsahovala by tato položka záznam RTP/AVP.
Obr. 6: Zachycený paket zprávy SIP INVITE klienta KPhoneSI
Na obrázku 7 je zobrazen jeden zachycený paket SRTP, který se liší od běžného paketu RTP tím,
že je v něm obsažena informace, že užitečná data (Payload) jsou šifrována.
Obr. 7: Zachycený paket SRTP klienta KPhoneSI
Minisip 0.7.1
Tento komunikační klient umožňuje zabezpečit přenášená multimediální data pomocí protokolu SRTP.
Pro počáteční výměnu sdíleného klíče master key má Minisip implementovaný algoritmus MIKEY
(Multimedia Internet KEYing). K výměně sdíleného klíče je použit protokol SDP, který je obsažen
ve zprávách SIP při navazování spojení. Volající klient posílá volanému klientovi ve zprávě INVITE
v SDP zprávu MIKEY Init, kde jsou kromě sdíleného klíče také informace, jaké bezpečnostní algoritmy
nabízí pro zabezpečení přenosu. Volaný klient odpovídá zprávou 200 OK, která obsahuje MIKEY Respons –
viz obr. 8.
Obr. 8: Zachycená komunikace klientů Minisip při použití protokolu SRTP
Na obrázku 9 je zobrazený zachycený paket SIP INVITE, jehož součástí je protokol SDP obsahující
zprávu MIKEY Init, z které lze vyčíst jaké informace posílá volající klient volanému při navazování
spojení. Nejzajímavější informace z hlediska zabezpečení jsou vyznačeny žlutě. Nejdůležitější
informace, která je posílána, je sdílený symetrický klíč, tzv. master key (první zvýrazněná
informace). Na obrázku je zobrazeno pouze několik prvních znaků symetrického klíče. Ve skutečnosti
má master key přibližně sto znaků. Protože je master key přenášen v otevřené podobě, je tato
komunikace náchylná na útoky typu man in the middle. Dále jsou posílány informace o tom, jakými
bezpečnostními algoritmy se budou data šifrovat a jakou délku budou mít jednotlivé šifrovací klíče
relace (session keys). Pro zajištění důvěrnosti přenášených dat bude využita symetrická metoda
AES-CM-128 a pro zajištění autentičnosti algoritmus HMAC-SHA-1. Důležitou informací jsou také čísla
SSRC, které slouží k jednoznačné identifikaci zdroje. Jak již bylo zmíněno,
čísla SSRC se využívají při tvorbě inicializačního vektoru IV, který je vstupem do generátoru
klíčů AES-CTR.
Obr. 9: Zachycená zpráva SIP INVITE klienta Minisip se zprávou MIKEY Init