Princip zabezpečení protokolovou sadou IPsec
Namísto použití protokolu SRTP nebo ZRTP lze k zabezpečení přenosu multimediálních dat použít sadu
protokolů IP security (IPsec), které zabezpečují komunikaci na úrovni síťové vrstvy, tj. zabezpečují
jednotlivé IP datagramy. Tyto protokoly jsou nezávislé na vyšších protokolech TCP/UDP.
IPsec vznikl jako součást IPv6, ale později byl navržen i pro IPv4. IPsec definuje dva režimy
zabezpečení IP datagramů:
- Transportní režim
- Tunelovací režim
Transportní režim
Je z těchto dvou režimů méně bezpečný. Šifruje pouze datovou část IP datagramu.
IP datagram je rozšířen o bezpečnostní záhlaví, které je vloženo mezi záhlaví IP datagramu
a záhlaví vyšší vrstvy (TCP/UDP). Bezpečnostní hlavička pak určuje, jak je datová část IP datagramu
zabezpečena. IPsec v transportním režimu se používá k ochraně komunikace v rámci jedné sítě.
Princip zabezpečení transportním režimem je zobrazen na obrázku 1, žlutá barva značí zabezpečenou
část IP datagramu.
Obr. 1: Transportní režim
Tunelovací režim
V tunelovacím režimu je zapouzdřen a chráněn celý IP datagram. Celý původní IP datagram se zabezpečí
a vloží do nového IP datagramu, v němž za novým IP záhlavím následuje bezpečnostní záhlaví.
V případě tunelu tak existují dvě IP záhlaví, vnitřní (původní – IP1) a vnější (nové – IP2).
Tunelovací režim primárně chrání provoz mezi sítěmi s nedůvěryhodnou cestu. Princip zabezpečení
tunelovacím režimem je zobrazen na obrázku 2, žlutá barva značí zabezpečenou část IP datagramu.
Obr. 2: Tunelovací režim
Protokoly IPsec
Bezpečnostní záhlaví určuje, jaká část IP datagramu je zabezpečená a jaké metody jsou pro zabezpečení
použity. Existují dva protokoly pro zabezpečení IP datagramů:
Protokol AH (Authentication Header) zajišťuje autentizaci odesílatele a příjemce, integritu dat
v hlavičce a ochranu proti opakování relace. Jeho služby jsou však omezené pouze na záhlaví IP
datagramu, ale nezajišťují už šifrování přenášených dat. V případě zabezpečení protokolem AH je
bezpečnostní záhlaví AH vloženo za IP záhlaví (obr. 3).
Obr. 3: Vložení záhlaví protokolu AH do IP datagramu
Protokol ESP (Encapsulating Security Payload) nejenže zajišťuje autentizaci odesílatele a příjemce
a integritu dat v záhlaví IP datagramu, ale navíc umožňuje šifrovat přenášená data. Protokol ESP
vkládá do IP datagramů kromě zabezpečovacího záhlaví ESP i zápatí ESP (obr. 4).
Obr. 4: Vložení záhlaví a zápatí protokolu ESP do IP datagramu
SPI (Security Parameter Index)
Aby mohl příjemce přijatý konkrétní IP datagram dešifrovat, musí znát jaké šifrovací algoritmy,
nebo jaké šifrovací klíče má použít. K tomuto účelu slouží pole SPI, které je vloženo v záhlaví
protokolu AH i ESP. Protože protokol IP je datagramová služba, musí být pole SPI obsaženo v každém
datagramu. Konkrétnímu spoji je přiřazeno číslo – index SPI. Index SPI je ukazatelem do databáze,
ve které jsou pro konkrétní spoj uvedeny použité šifrovací klíče. Ovšem index SPI není dostačující.
Kromě SPI indexu je ještě potřeba uvést IP adresu příjemce a použitý protokol (AH nebo ESP). Tato
trojice se nazývá Security Association (SA) a je základem protokolu IPsec – tj. ukazatelem do databáze
parametrů jednotlivých SA je trojice: SPI, protokol (AH nebo ESP) a IP adresa příjemce. Jednotlivé SA
jsou uloženy v centrální databázi zvané Security Assocciation Database (SAD). Pro každý směr
komunikace je třeba mít jiné SA.
ISAKMP/IKE
Databáze SAD je naplněna buď ručně, nebo dynamicky pomocí protokolu ISAKMP (Internet Security
Association And Key Management Protokol). ISAKMP zajišťuje bezpečnou výměnu parametrů SA a privátních
klíčů mezi partnery v prostředí IPsec. Výměna klíčů je zajištěna pomocí protokolu IKE (Internet Key
Exchange), který řeší mnoho problémů týkajících se výměny klíčů. Komunikace ISAKMP se skládá ze dvou
fází.
V první fázi si protokol ISAKMP vytvoří bezpečností kanál mezi partnery IPsec, tj. stanoví se ISAKMP
SA, aby byl chráněn proces výměny a dohod. Bezpečnost v první fázi je zaručena pomocí nesymetrického
algoritmu RSA.
Ve druhé fázi se vytváří jednotlivá SA pro protokoly AH či ESP, tj. naplní se databáze SAD, aby
mohly mezi sebou komunikovat konce spojení. Výměna těchto informací je chráněna pomocí bezpečnostní
asociace ISAKMP SA vytvořené v rámci fáze 1. Tajný symetrický klíč je vyměněn za použití
Diffiho-Hellmanova algoritmu.
K ochraně uživatelských dat přenášených mezi oběma partnery IPsec se používá šifrovací algoritmus
DES nebo 3DES (jen u protokolu ESP). Integrita dat je zajištěna pomocí hashovacích algoritmů MD5
nebo SHA (u protokolu AH i ESP).
IPsec prakticky
Jak již bylo zmíněno v kapitole, lze zabezpečit přenášené RTP a signalizační pakety pomocí sady
protokolů IPsec. Aby byla zabezpečena mediální komunikace mezi klienty, musí IPsec podporovat obě
komunikující strany. Pro zabezpečení signalizačních paketů je také nutné, aby IPsec byl nastaven i
na straně SIP serveru. Protože bezplatné SIP servery zabezpečení pomocí IPsec nepodporují, byl
nainstalován vlastní SIP server, konkrétně OpenSER v1.2.0, na kterém byly vytvořeny dva uživatelské
účty. Jako komunikační klienti byly použity programy Twinkle. Protože se všechny tři počítače
nacházely v jedné síti byl zvolen transportní režim s protokolem ESP. IP adresa serveru byla
192.168.2.134 a IP adresy klientů 192.168.2.189 a 192.168.2.175.
Pro podporu IPsec musí být na všech počítačích nainstalován balíček ipsec-tools, jehož součástí je
i program setkey, pomocí něhož mohou bít modifikované parametry databází SAD a SPD. Setkey čte
své příkazy ze souboru, pokud je volán ve tvaru setkey –f /etc/setkey.conf. Konfigurační soubor
/etc/setkey.conf, který byl použit na počítači se serverem SIP, je ukázán na obrázku 5.
Obr. 5: Nastavení konfiguračního souboru setkey.conf na straně serveru
Příkaz spdadd přidává bezpečnostní politiky do databáze SPD. Tyto politiky definují jaké pakety
budou chráněny technologií IPsec a jaké protokoly a klíče se mají použít. Příkaz vyžaduje zdrojové
a cílové IP adresy paketů, které budou chráněny, protokol a port užívaný pro ochranu (any – veškerá
komunikace) a užívanou politiku (-P). Politika specifikuje směr (in/out), aplikovanou akci
(ipsec/discard/none), protokol (ah/esp/ipcomp), mód (transport) a úroveň (use/require).
Na straně klientů byl konfigurační soubor podobný, akorát musel být mírně upraven, aby zohlednil
změnu směru paketů. K tomu stačilo v konfiguračním souboru vhodně pozměnit IP adresy a indexy SPI.
Po té co byly konfigurační soubory na všech PC nakonfigurovány, byly načteny pomocí příkazu
setkey –f /etc/setkey.conf do databázích SAD a SPD.
Správnost konfigurace byla ověřena úspěšnou komunikací mezi klienty. Na straně jednoho klienta s
ip adresou 192.168.2.189 byl spuštěn Wireshark. Ze zachycených paketů si lze všimnout, že byly
zabezpečeny jak signalizační pakety (komunikace se SIP serverem – 192.168.2.134), tak i RTP pakety
(komunikace s druhým klientem 192.168.2.175) – viz obr. 6. Z obrázku je také vidět, že kdyby
případný útočník zachytil komunikaci, nebude mít možnost z ní cokoliv vyčíst.
Obr. 6: Zachycená komunikace se zabezpečením IPsec