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.

Transportní režim
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.

Tunelovací režim
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
  • protokol ESP

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).

Vložení záhlaví protokolu AH do IP datagramu
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).

Vložení záhlaví a zápatí protokolu ESP do IP datagramu
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.

Nastavení konfiguračního souboru setkey.conf na straně serveru
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.

Zachycená komunikace se zabezpečením IPsec
Obr. 6: Zachycená komunikace se zabezpečením IPsec


© 2010, Vošec - Petr Otoupalík