![]() Specializovaný týdeník o výpočetní technice |
|
![]() |
Seriál o bezpečnosti a informačním soukromí |
Část 41 - CW 7/98
KERBEROSJaroslav Dočkal
Kerberos je prostředek pro zajištění autentizace přístupu k aplikacím v sítích otevřených systémů; název byl převzat z antické mytologie, ve které trojhlavý pes Kerberos hlídal vchod do podsvětí. Proč se stal Kerberos ve světě bezpečnostních technologií tak známým? Dvě mouchy jednou ranou Kerberos byl vytvořen jako příspěvek MIT (Massachusetts Institute of Technology) v rámci světoznámého projektu Athena, na kterém práce probíhaly v letech 1983 až 1991. Plní dva základní cíle -- zajišťuje autentizaci klientů v síti a zároveň slouží pro distribuci klíčů. Použita je zde "pull" varianta centrální distribuce klíčů -- viz obr. 1, kde centrum distribuce klíčů je označeno jako KDC (Key Distribution Center). Metody typy "pull" jsou přitom vhodnější pro sítě LAN, zatímco metody typu "push" pro prostředí sítí WAN. Kerberos vychází z Needham-Schroederova modelu autentizace a distribuce klíčů. Tradiční modely autentizace s KDC však mají jeden praktický problém: Klientův klíč pro komunikaci s KDC bývá při častých požadavcích na služby kešován v paměti počítače a může se tak stát předmětem útoku. V případě úspěchu má útočník možnost využívat přístupu ke službám do další aktualizace klíčů. Pokud např. aktualizace klíčů probíhá 1x za rok a uživatel žádá o službu v průměru 10x za den, je klíč použit zhruba 3650x za rok a jeho vyzrazení může mít celoroční následky. Proto je u Kerbera v rámci KDC oddělena autentizace od poskytování služeb. Autentizaci zde zajišťuje autentizační server (dále AS), poskytování služeb tzv. Ticket Granting Server (dále TGS). Uživatel A na základě svého otevřeného požadavku obdrží od autentizačního serveru klíč KA,TGS pro komunikaci s TGS zašifrovaný klíčem KA,AS pro vzájemnou komunikaci A s AS a dále lístek (Ticket) s oprávněním k této komunikaci. Pokud např. bude uživatel operovat s heslem 1x za měsíc, není ho problém uchránit a navíc vyzrazení obdrženého klíče KA,TGS nemůže mít delší následky než po jeden měsíc. Kerberos se umí vypořádat i s útoky přehráváním. Používá k tomu metodu časových razítek; razítko z doby i je značeno jako Ti, kde i=1,2,3,...). Počítá se s tím, že jeden AS má na starost více TGS. Takovéto administrativní domény s právě jedním AS a obvykle více TGS se zde nazývají říše (realms). Každý uživatel Kerbera (společnost, organizace) si vytváří svou "říši". AS a TGS bývají umístěny na jediném serveru a tvoří KDC; mohou na něm být dokonce společně s aplikacemi, ale to z bezpečnostních důvodů není vhodné. Každý uživatel, klientský i serverový program (v terminologii Kerbera principál) si musí dlouhodobě vést své heslo, s jehož pomocí čte zprávu od KDC. Naopak v KDC je databáze klíčů o položkách: · jméno principála, · kryptografický klíč, · verze klíče (kdyby byl současně uložen starý a nový klíč), · expirační doba klíče, · datum poslední modifikace, · principál, který naposledy modifikoval záznam, · maximální doba života klíče (dále L).
Jak to funguje? Cílem každého klienta (dále A) je získat · klíč pro relaci se serverem B - budeme ho označovat jako KA,B, · oprávnění ke spuštění aplikace na serveru B, lístek - TicketA,B = {KA,B,A,T4,L}. TGS poskytují klientům lístky s povolením používat síťovou službu resp. aplikaci pouze po předložení lístku s potvrzením o jejich autentizaci - TicketA,TGS = {KA,TGS,A,TGS,T2,WA,L} kde WA je adresa pracovní stanice, kterou používá klient A. Sledujme na obr. 2 a 3 postup autentizace klienta A u AS a vyžádání si u TGS služby na serveru B. Klient A v 1. kroku žádá AS o svou autentizaci, která mu umožní komunikaci s konkrétním TGS. AS si ověří, zda má o něm ve své databázi záznam a pokud ano, pošle mu lístek opravňující obracet se na TGS - 2. krok. Zároveň mu pošle heslo pro styk s TGS, ale zašifrované tajným klíčem klienta A. Pokud by se chtěl nějaký jiný klient představovat jako A, nevyluštil by odpověď, protože nezná příslušný klíč KA,AS. Ve 3. kroku klient A posílá svůj požadavek na server TGS, tj. uvede údaje o svém požadavku (kdo je, z které pracovní stanice se obrací) a tyto údaje posílá zašifrované klíčem pro tajnou komunikaci s TGS, který obdržel od AS (tato část zprávy se označuje jako autentikátor). Dále uvede předmět svého zájmu - server B (případně specifikuje požadovanou službu) a nakonec předá lístek o své verifikaci, a to aniž by ho mohl přečíst či přepsat (klíč pro komunikaci mezi AS a TGS nezná). Ve 4. kroku TGS předá klientovi A klíč relace zašifrovaný klíčem pro vzájemnou komunikaci; klient A dosáhl svého prvního cíle. TGS mu zároveň předá lístek s oprávněním na využití služeb serveru B, zašifrovaný klíčem pro vzájemný styk mezi TGS a aplikačním serverem. Klient A s lístkem nemůže dělat nic jiného, než ho v 5. kroku předat serveru B s tím, že mu k němu opět přiloží svůj autentikátor. Server B v rámci lístku obdrží klíč relace. Údaj o klientovi A získává dvakrát; může porovnat, zda žadatel je tentýž, pro kterého byl lístek vystaven. Poslední, 6. krok je volitelný a slouží k prokázání identity serveru vůči klientovi. U rozsáhlých sítí může docházet k neefektivním přenosům při komunikaci s KDC. Proto byla pro tyto sítě navržena koncepce master a slave KDC; master KDC vedou autoritativní kopie databází principiálů a tyto jsou pak poskytovány slave KDC. Je-li KDC více, mohou být uspořádány víceúrovňově v rámci stromové struktury. Nasazení Kerbera má smysl pokud se vhodně upraví všechny aplikace dané sítě. Tento proces dostal název kerberizace a je založen na použití jednoduchých autentizačních funkcí na straně klienta i serveru.
Nic není dokonalé První tři verze Kerbera nebyly použity mimo MIT a upadly v zapomenutí. Verze 4 se naproti tomu poměrně rozšířila. Její vývoj byl ukončen v roce 1992 a v roce 1993 byla jako standard pro Internet specifikována verze 5 (viz RFC 1510). Verze 4 a 5 si nyní na trhu konkurují; verze 4 je jednodušší a výkonnější, verze 5 má vyšší funkcionalitu. Verze 4 má následující omezení: · Protokolové prostředí tvoří sada TCP/IP. · Pro šifrování je použit DES. · Není možná autentizace typu uživatel - uživatel, tak potřebná pro systémy s X Window. · Lístky jsou nepřenositelné ze systému na systém. · Lístek se vztahuje k síťové adrese, což působí problémy u počítačů s více síťovými rozhraními. · Maximální doba platnosti lístku je dána počtem pětiminutových intervalů, které lze zaznamenat v jedné slabice (21,25 hodin). · V rámci pětiminutových intervalů není zajištěna ochrana proti přehrávání. · Neexistuje ochrana proti útokům na systémové hodiny. · Na TGS může libovolný klient klást požadavky a tak si vytvářet slovníky typu dotaz - odpověď a získávat materiál pro pozdější kryptoanalýzu. · Protože je Kerberos založen na autentizaci vycházející ze znalosti tajemství, bude tu vždy jistá teoretická možnost útoků typu Trojského koně. · Heslo relace se během ní vícenásobně opakuje, což může být předmětem útoků. Tato omezení odstranila verze 5: · Protokolové prostředí není omezeno pouze na protokol IP, lze použít libovolný síťový protokol. · Může být použita libovolná symetrická šifra. To je dáno doplněním jádra Kerbera do GSS-API. · Je možné zvolit digitální podepisování zpráv. · Kódování zpráv je standardní, tj. v souladu se základními pravidly abstraktní symbolické notace ASN.1. · Místo s dobou platnosti lístku se zde pracuje s dobami zahájení a ukončení služby. To umožňuje vyžádat si službu na pozdější dobu. · Přijaté zprávy jsou v pětiminutových intervalech uloženy v cache pamětech a tím je zajištěna ochrana proti útokům přehráváním. · Je zde možnost autentizace typu uživatel - uživatel. · Je možná autentizace mezi říšemi (příliš se ale nepoužívá). Verze 5 přinesla i zcela nové protokolové vlastnosti: · Lístky jsou obnovitelné (lze jednou prodloužit dobu jejich platnosti). · Lístky jsou přenositelné; je-li třeba (např. v případě výpadku serveru), TGS přenese lístek na jiný server. · Je zde přípustná delegace přístupových práv - aplikační server přenese lístek na jiný server (např. pro potřebu tisku po provedeném výpočtu). · Byly doplněny mechanismy pro autorizaci a účetnictví. · Byla doplněna možnost autentizace na principu vlastnictví tajemství. · Je doplněna možnost náhodného generování klíčů v rámci jedné relace. Zdálo by se, že není o čem přemýšlet a na verzi 4 je třeba zapomenout. Je ovšem otázkou, zda jsou vždy silnější možnosti verze 5 nezbytné a zda práce s ní nebude příliš náročná. Verze 4 zahrnuje cca 60 000 instrukcí jazyka C, verze 5 je třikrát obsáhlejší.
Po čem sáhnout? Kerberos se v praxi přeci jen šířeji prosadil, a to na rozdíl od konkurenčních produktů (NetSP, SPX, TESS, SESAME atd.). Je to především pro jeho vyzrálost. Problémem pro všechny bezpečnostní produkty přicházející z USA zůstávají exportní omezení kryptografických technologií. V našich podmínkách lze dnes postupovat trojím způsobem: Obrátit se na některou z mála firem, které tuto technologii poskytují a nechat tento problém na ní. Např. firma Hewlett-Packard i u nás nabízí DCE pro počítače řady 9000 vybavené Kerberem verze 5. Anebo si kryptografické funkce doplnit do systému Bones, což je freewarová verze 4 Kerbera, která neobsahuje kryptografické funkce (stáhnout si ji lze z ftp serveru ftp.finet.fi). Poslední možností je vše si naprogramovat s využitím GSS-API. Je paradoxem, že největší nadějí pro budoucnost Kerbera jsou právě Windows NT 5.0, která počítají s Kerberem verze 5. Skeptici dnes říkají "Ale co z toho Kerbera zbyde ?" a je na Microsoftu, aby je přesvědčil.
| COMPUTERWORLD - seriál o bezpečnosti | COMPUTERWORLD | IDG CZ homepage | |