Bajecny svet elektronickeho podpisu | online podpora stejnojmenne knihy z Edice CZ.NIC

8.3.3         DNSSEC

Poslední příklad zabezpečené komunikace, který si zde popíšeme, se týká fungování systému DNS (Domain Name System). Ten má v rámci Internetu na starosti překlad symbolických doménových jmen na číselné IP adresy, ale je dnes využíván i k řadě dalších účelů.

Komunikace v rámci systému DNS, mezi jeho klienty (resolvery) a servery (name servery), ale není nijak zabezpečena – což otevírá prostor pro případné útoky, vedené cestou narušení či přímo podvržení této komunikace.

Příkladem může být phishing, při kterém se útočník snaží podstrčit své oběti falešné stránky (například jeho banky apod.) a snaží se jej přimět k tomu, aby těmto falešným stránkám zadal své údaje (přihlašovací údaje či rovnou údaje o svých platebních kartách apod.).

Jednou z možností, jak phishing realizovat, je nechat uživatele kliknout na (či přímo zadat) nějakou „podobně vypadající“ URL adresu, na které se pak nachází falešné stránky. Pozornější uživatel si ale může všimnout i drobné odlišnosti v symbolické (URL) adrese a pokus o podvod odhalit. Sofistikovanější phishingové (ale i jiné) útoky se proto pokouší napadnout mechanismus DNS, který překládá mezi symbolickými doménovými jmény a číselnými IP adresami, a změnit jeho fungování. Pokud by se jim to podařilo, dopadlo by to tak, že uživatel zadá zcela správnou symbolickou (URL) adresu, ale ta je přeložena na nesprávnou (jinou) IP adresu, na které jsou pak umístěny podvodné stránky.

Samozřejmě ale existují i řešení, která fungování systému DNS zabezpečují a podobné útoky znemožňují. Zejména systém DNSSEC (DNS Security Extensions).

Princip fungování systému DNSSEC si lze představit tak, že veškerá komunikace v rámci systému DNS (mezi jeho servery) je elektronicky podepisována. Díky tomu může mít každá součást celého systému, která se na něco ptá jiné součásti – konkrétně třeba na převod mezi symbolickou (URL) adresou a odpovídající číselnou IP adresou - rozumnou jistotu, že dostala správnou odpověď, a nikoli nějakou podvrženou odpověď.  

Celá věc má ale dva drobné háčky. Prvním je ten, že DNSSEC dosud nepoužívá zdaleka celý systém DNS, ale jsou jím zabezpečeny jen některé domény (resp. jejich name servery). Situace se sice neustále zlepšuje, s tím jak jsou další a další domény zabezpečovány pomocí DNSSECu – ale i přesto je nutné počítat s tím, že jen některé odpovědi generované systémem DNS jsou tímto způsobem zabezpečeny (ty, které se týkají dotazů na domény, využívající DNSSEC).

Při odpovídání na dotazy, týkající se konkrétních domén, tak mohou v rámci DNS nastat tři různé případy, které si rovnou očíslujme:

1.       příslušná doména není zabezpečena pomocí DNSSEC (a odpověď na dotaz, týkající se této domény, tak ani nemůže být zabezpečena pomocí elektronického podpisu)

2.       příslušná doména je zabezpečena pomocí DNSSEC a odpověď na dotaz ohledně této domény je platně podepsaná (neboť elektronický podpis na odpovědi byl ověřen jako platný)

3.       příslušná doména je zabezpečena pomocí DNSSEC, ale odpověď na dotaz nemůže být považována za platnou (protože elektronický podpis na odpovědi nemohl být ověřen jako platný)

Druhý drobný háček je pak v tom, že DNSSEC skutečně zabezpečuje komunikaci jen v rámci systému DNS, mezi jeho jednotlivými servery (name servery, pokud DNSSEC podporují), a nikoli již komunikaci „směrem ven“, mezi koncovým uživatelem a „nejbližším“ DNS serverem, jehož služby tento koncový uživatel právě využívá.

Lze se na to dívat také tak, že DNSSEC zabezpečuje fungování celého systému DNS „zevnitř“, aniž by se měnil konkrétní způsob jeho fungování směrem ven, ke koncovým uživatelům. Ti tak mohou profitovat z přínosů DNSSEC (vyšší bezpečnosti), aniž by pro to museli sami cokoli dělat či měnit na své straně.

Jenže: informace o důvěryhodnosti odpovědi (ve smyslu tří výše uvedených možností) by se hodila i koncovému uživateli. I on by ji mohl využít k tomu, aby se snáze vyvaroval některým potenciálním nástrahám a úskalím či přímo útokům. Jak ale požadované informace ze systému DNS dostat ven?

Určité řešení již existuje, byť je dostupné jen pro některé aplikace. Konkrétně pro browser Firefox, v podobě dodatečně instalovaného softwarového modulu (plug-in modulu), z dílen laboratoří CZ.NICu. Jmenuje se příznačně: DNSSEC validátor, a je ke stažení zdarma v rámci standardní nabídky doplňků a rozšíření browseru Firefox, nebo přímo z jeho vlastních stránek, na adrese http://dnssec-validator.cz.

Pro obrázek ve větší kvalitě klikněte na odkaz pod číslem obrázku v legendě

Nabídka DNSSEC validátoru pro prohlížeč Mozilla Firefox

Obrázek 8 - 23: Nabídka DNSSEC validátoru pro prohlížeč Mozilla Firefox

Na následující trojici obrázků pak vidíte, jak tento modul indikuje tři výše popsané situace, týkající se dotazu na doménu, která není zabezpečena pomocí DNSSEC či která zabezpečena je (a dotaz je platně podepsán, nebo naopak platně podepsán není).  

Pro obrázek ve větší kvalitě klikněte na odkaz pod číslem obrázku v legendě

Indikace, že doména servis24.cz není zabezpečena pomocí DNSSEC

Obrázek 8 - 24: Indikace, že doména servis24.cz není zabezpečena pomocí DNSSEC

Pro obrázek ve větší kvalitě klikněte na odkaz pod číslem obrázku v legendě

Doména mojedatovaschranka.cz je zabezpečena a poskytnuté údaje jsou platně podepsané

Obrázek 8 - 25: Doména mojedatovaschranka.cz je zabezpečena a poskytnuté údaje jsou platně podepsané

Pro obrázek ve větší kvalitě klikněte na odkaz pod číslem obrázku v legendě

Doména nic.cz je zabezpečena ale poskytnuté údaje nejsou platně podepsané

Obrázek 8 - 26: Doména nic.cz je zabezpečena ale poskytnuté údaje nejsou platně podepsané

Zastavme se podrobněji u třetí ukázky, příznačně symbolizované červeným klíčkem. Zde plug-in zjistil (v důsledku uměle navozené chyby), že podpis na odpovědi, týkající se domény nic.cz (jinak zabezpečené prostřednictvím DNSSEC) byl opatřen elektronickým podpisem, který ale nemohl být ověřen jako platný.

Toto zjištění může, ale také nemusí, znamenat že skutečně došlo k nějakému útoku a uživatel byl ve skutečnosti zaveden na jiné webové stránky, na podvržené IP adrese.

Plug-in DNSSEC validátor ale chrání uživatele ještě jiným způsobem, a to tím, že sám kontroluje správnost převodu symbolického doménového jména (jména domény) na číselnou IP adresu – a pokud i zde zjistí nějakou odlišnost, upozorní na to uživatele.

Takovouto situaci lze vidět na následujícím obrázku. Je na něm příklad s URL adresou, zahrnující doménu rhybar.cz. Ta je provozována sdružením CZ.NIC pro demonstrační účely (jako právě zde), aby se na ní daly předvádět účinky zabezpečení pomocí DNSSEC. Je totiž záměrně „poškozena“, tak aby odpovědi na dotazy k této doméně vykazovaly neplatný podpis, a díky tomu mohla být uživateli „podstrkována“ jiná IP adresa, než jaká by správně měla. Všimněte si proto poněkud odlišné hlášky DNSSEC validátoru v tomto případě, kdy upozorňuje i na pravděpodobné podvržení IP adresy.

Pro obrázek ve větší kvalitě klikněte na odkaz pod číslem obrázku v legendě

Signalizace neplatného podpisu a pravděpodobně podvržené IP adresy

Obrázek 8 - 27: Signalizace neplatného podpisu a pravděpodobně podvržené IP adresy

Pro správné a plnohodnotné fungování DNSSEC validátoru na počítači uživatele ale musí být splněna jedna důležitá podmínka: sám tento validátor musí komunikovat se systémem DNS prostřednictvím takového DNS serveru, který podporuje DNSSEC a je dostatečně důvěryhodný.

Nezapomínejme na požadavek důvěryhodnosti DNS serveru: pokud by tento DNS server byl napaden útočníkem, mohl by uvést v omyl i DNSSEC validátor, který by pak hlásil „vše v pořádku“ i tam, kde by to v pořádku nebylo.

Samotný DNSSEC validátor pochopitelně dokáže rozpoznat, když je nucen komunikovat s takovým serverem, který sám DNSSEC nepodporuje. Potom se dokáže vyjádřit jen k tomu, zda příslušná doména jako taková je zabezpečena pomocí DNSSEC, ale již nedokáže vyhodnocovat správnost jednotlivých odpovědí na dotazy (skrze platnost podpisu na nich).

Způsob, jakým DNSSEC validátor tuto situaci signalizuje, vidíte na následujícím obrázku.

Pro obrázek ve větší kvalitě klikněte na odkaz pod číslem obrázku v legendě

DNSSEC validátor signalizuje, že doména je zabezpečena pomocí DNSSEC, ale on nedokáže hodnotit jednotlivé odpovědi

Obrázek 8 - 28: DNSSEC validátor signalizuje, že doména je zabezpečena pomocí DNSSEC, ale on nedokáže hodnotit jednotlivé odpovědi

Čím je ale určeno to, s jakým DNS serverem validátor právě spolupracuje a skrze něj i vyhodnocuje platnost odpovědí?

To záleží na jeho nastavení, kde mu lze použité DNS servery předepsat. Možnosti jsou následující[19]:

·         „načíst ze systému“: zde DNSSEC validátor bude pracovat s těmi samými DNS servery, jako operační systém počítače, na kterém browser běží. Ty mohou, ale také nemusí DNSSEC podporovat

·         „DNSSEC validující resolvery“: zde lze zvolit servery (resolvery), které provozuje sdružení CZ.NIC (nebo organizace OARC), a které DNSSEC podporují

·         „vlastní“: zde lze zadat konkrétní IP adresu DNS serveru, který má být používán. V úvahu připadá (například) vlastní DNS server, firemní DNS server s podporou DNSSEC atd.

Pro obrázek ve větší kvalitě klikněte na odkaz pod číslem obrázku v legendě

Nastavení používaných DNS serverů

Obrázek 8 - 29: Nastavení používaných DNS serverů

Aby DNSSEC validátor dokázal odhalit i podvržené IP adresy, je vhodné jej nastavit na druhou či třetí možnost (a nikoli na první) – protože pak dostává přeložené IP adresy ze dvou různých zdrojů a může je porovnávat.


[19] Ve Firefoxu je najdeme přes správce doplňků v Možnostech příslušného plug-inu.



© Jiří Peterka, 2011, profil na Google+
Valid HTML 4.01 Transitional Ověřit CSS!
3A2E
5665
6E6F
7661
6E69
2E3A
0D0A
5475
746F
206B
6E69
6875
2076
656E
756A
6920
7376
6520
7A65
6E65
2049
7265
6E65
2C20
7379
6E6F
7669
204A
6972
696D
7520
6120
6463
6572
6920
4576
652E
0D0A
5620
5072
617A
652C
204C
5032
3031
3020
4A69
7269
2050
6574
6572
6B61