![]() Specializovaný týdeník o výpočetní technice |
|
![]() |
Seriál o bezpečnosti a informačním soukromí |
Část 37 - CW 51-2/97
Identita a autentizaceRadim Peša, David Rohleder
Je půlnoc. Jdeme temným lesem. Najednou se na cestě proti nám objeví podivná postava. Krev nám leknutím ztuhne v žilách, ale překonáme strach a zeptáme se: "Kdo je to?" Odpověď může znít: "Já jsem hajný Robátko." Tím nám noční přízrak prozradil svou totožnost identifikoval se. Ale protože je temná noc a krajem se potulují podivná stvoření, chceme se přesvědčit: "To by mohl říct každý, proč bychom ti měli věřit?" "Copak nevidíte vedle mě mého věrného přítele jelena Větrníka? Takový je jenom jediný na celém široširém světě." Již jsme klidní, máme záruku, že postava ve tmě je opravdu hajný Robátko autentizace skončila (každý přece ví, že jelen Větrník by nešel do lesa s nikým jiným než s hajným Robátkem). To byl příklad identifikace a autentizace v praxi, tentokrát v praxi pohádkové. Vraťme se ale zpět do oblasti informačních technologií. Je zřejmé, že pro jakoukoli rozumnou komunikaci je potřeba, aby komunikující subjekty měly možnost zjistit, s kým vlastně komunikují. A právě proces, který umožní rozpoznání subjektu a přiřazení jeho identifikátoru, se nazývá identifikace. Může mít různé podoby: uživatel zadá u terminálu své přihlašovací jméno, v žádosti o službu uvede žadatel své identifikační číslo. Proces ověření, zda udávané jméno opravdu přísluší danému subjektu, se nazývá autentizace. Uživatel například prokáže znalost tajného hesla nebo je ověřen otisk jeho palce. Rozhodnutí, jaká práva subjektu náleží, označujeme autorizace. Problematiku autentizace v prostředí IT lze rozdělit do 3 skupin: autentizace uživatelů, vzájemná autentizace počítačů, autentizace zpráv. Autentizace uživatelů Jedná se o ověření totožnosti uživatele, který žádá službu od počítačového systému. Typickým příkladem je autentizace při výběru peněz z bankomatu. Metody používané pro implementaci autentizace uživatele můžeme rozdělit podle používaných postupů do následujících 4 skupin:
Úvodní pohádkový příklad s hajným Robátkem by se dal zařadit do kategorie uživatel něco má. Problematiku autentizace uživatele popsal 12. díl našeho seriálu, proto se jí nebudeme tentokrát více zabývat. Vzájemná autentizace počítačů Autentizující se subjekty jsou vzájemně propojeny počítačovou sítí (případně obecnou komunikační sítí). Chtějí spolu komunikovat, využívat cizí služby apod. K tomu potřebují samozřejmě vědět "s kým mají tu čest". A mít jistou záruku, že nejde o omyl či podvod. Pravděpodobně nejlepším řešením je využít možností, které nabízí kryptografie. Existuje velké množství různých autentizačních protokolů používajících jak symetrickou kryptografii, tak kryptografii veřejného klíče. Všechny využívají znalosti určitého tajemství, obvykle šifrovacího klíče. Znalost tohoto tajemství je při autentizaci považována za ekvivalentní prokázání identity. Triviální řešení je nasnadě. Domluvíme si s partnerem klíč symetrické kryptografie, který budeme znát jenom my dva. Díky tomu víme, že jakákoli zpráva, která nám přišla a je zašifrovaná tímto klíčem, přichází od příslušného partnera. Obdobně on pozná zprávy, které dostane od nás. Stejným způsobem si můžeme dohodnout klíče s ostatními partnery. Takovýto postup má však dva podstatné nedostatky. První slabinou je špatná rozšiřitelnost a ovladatelnost takto navrženého systému. Množství kryptografických klíčů s přibývajícím počtem komunikujících partnerů rychle narůstá a jejich správa se stává neúměrně obtížnou. Obvyklým řešením situace je vytvoření centra distribuce klíčů (Key Distribution Center, KDC). Tím je obvykle nějaká třetí důvěryhodná strana, která hraje roli jakéhosi prostředníka při navazování spojení a autentizaci. Nyní stačí, když si každý pamatuje pouze jediný klíč. A to klíč, který si ustanoví pro komunikaci s KDC. Existuje řada protokolů pro autentizaci s využitím KDC. Vesměs ale vycházejí z dnes již klasického protokolu, který navrhli Needham a Schroeder. Iniciátor spojení pošle nejprve zprávu na KDC (1). Zpráva je autentizovaná klíčem, který iniciátor sdílí s KDC. KDC ze zprávy pozná, s kým má být vytvořeno spojení. Vytvoří pro příjemce zprávu autentizovanou klíčem, který s ním sdílí. Vě zprávě je obsaženo potvrzení identity iniciátora spojení. Pošle ji iniciující straně (2), ta zašifrovanou zprávu předá dál svému partnerovi (3). Ten jediný zná klíč (samozřejmě ho zná i KDC) a je schopen ji přečíst. Další komunikace (4) je již šifrována klíčem relace, který KDC vytvořilo (obr. 1). Dalším nedostatkem (nejenom) uvedeného triviálního řešení je absence ochrany proti útoku opakovaným přenosem (replay attack). Třetí nepřátelská strana sice není schopna se plnohodnotně vydávat za někoho jiného a vytvářet i posílat zprávy cizím jménem, ale může zaznamenávat zprávy, které již byly jednou zaslány jako součást korektní autentizované komunikace, a schovat si je pro poslání ve vhodnou chvíli někdy později. A vůbec nevadí, že nezná obsah těchto zpráv. Jako příjemce takovéto zprávy nemáme možnost poznat, že se jedná o podvrh. Ochranu proti tomuto typu útoku je potřeba zajistit nejenom v našem triviálním řešení, ale i v ostatních autentizačních protokolech. Zpravidla se k tomu požívají časově závislé parametry (TVP): časová razítka (spolehlivé značení času angl. timestamp): Ke každé zprávě je připojen čas jejího vzniku. Příjemce zprávy ji považuje za platnou pouze pokud ještě není příliš "stará". Pokud od data vytvoření zprávy již vypršel interval stanovený pro její dobu platnosti, příjemce ji odmítne. náhodná čísla: Do odesílané zprávy se přidává náhodně vygenerované číslo. Druhá strana v odpovědi na zprávu toto náhodné číslo předem dohodnutým způsobem použije. sekvenční čísla: Jednotlivé zprávy jsou identifikovány svými sekvenčními (pořadovými) čísly. Nevýhodou časových razítek je potřeba synchronizace časových zdrojů, jeho výhodou oproti použití náhodných nebo sekvenčních čísel je, že komunikující partneři nemusí udržovat stavové informace o použitých či nepoužitých číslech. Další možností, jak na vzájemnou autentizaci, je využití kryptografie veřejného klíče. Odesílatel prostě podepíše první zprávu svým tajným klíčem a příjemce obdobným způsobem odpoví. Problémem je zajištění spolehlivé distribuce veřejných klíčů. Možným řešením je použití certifikátů veřejných klíčů. Pěkným příkladem použití certifikátů veřejných klíčů je doporučení X.509, které definuje poskytování autentizačních služeb v rámci adresářových služeb X.500. Certifikáty jsou jakési potvrzení o platnosti veřejných klíčů. Tato platnost je stvrzena podpisem důvěryhodné certifikační autority na každém certifikátu. Ty jsou uloženy ve veřejném adresáři, ke kterému mají přístup všichni uživatelé. Zde si mohou ověřit platnost veřejných klíčů svých partnerů vyhledáním příslušného certifikátu, který je podepsaný certifikační autoritou, které důvěřují. Existuje rovněž několik standardizovaných autentizačních procedur, které certifikáty veřejných klíčů využívají. Jednu z nich si ukážeme: Spojení iniciuje strana A. První zpráva je podepsána jejím veřejným klíčem. Obsahuje povinně časové razítko T1, náhodnou hodnotu N1 a identifikaci příjemce B. Volitelnými částmi jsou data a klíč relace KAB, který je zašifrovaný veřejným klíčem příjemce B. Hodnota N1 je jedinečná mezi zprávami zaslanými během platnosti časového razítka. Obsah druhé zprávy je podobný. Zprávy nemusí obsahovat žádnou z volitelných položek slouží potom pouze k autentizaci. Kdopak mi to jen píše Autentizace zpráv je proces prokázání, že přijatá zpráva pochází z udávaného zdroje, a že nebyla změněna. Příjemce zprávy v okamžiku rozhodnutí s nikým nekomunikuje, musí být schopen se rozhodnout o autenticitě zprávy pouze na základě zprávy samotné. Typickým příkladem aplikace je elektronická pošta. Časový rozdíl mezi okamžikem odeslání a přijetí pošty v Internetu je obvykle několik minut, ale zpráva může putovat i několik dní. Není tudíž možné předpokládat, že odesílatel bude on-line v době přijetí nebo dokonce čtení zprávy. Zde se používají kryptografické hašovací funkce. To jsou matematické funkce, které pro danou zprávu vypočítají její charakteristiku. To je obvykle krátká číselná hodnota, je to obdoba otisku palce u člověka. Podstatnou vlastností těchto funkcí je to, že jsou jednosměrné. To v tomto případě znamená, že lze snadno vypočítat pro každou zprávu její charakteristiku, ale je obtížné k dané charakteristice najít odpovídající zprávu. Kryptografické hašovací funkce jsou obvykle věřejně známé, může je tudíž pro danou zprávu vypočítat kdokoli. Funkce, jejichž výsledek závisí kromě samotné zprávy na zadaném šifrovacím klíči, se nazývá autentizační kód zprávy (MAC Message Authentication Code). V opačném případě mluvíme o kódu pro detekci modifikací (MDC Modification Detection Code). Odesílatel vypočítanou charakteristiku připojí k příslušné zprávě a obojí pošle příjemci. Jestliže se jedná o MAC, je při výpočtu charakteristiky použit šifrovací klíč, který znají pouze komunikující partneři. Útočník tudíž není schopen podvrhnout vlastní zprávu, ani modifikovat zprávu, kterou odposlechl. Příjemce aplikuje hašovací funkci na zprávu a porovná výsledek s přijatou charakteristikou. Příjemce může číst zprávy bez ověřování jejich autenticity, to může provádět pouze výběrově u zpráv, u kterých je to pro něj důležité. Autentizace zpráv chrání komunikující partnery proti útoku třetí strany. Nemůže je ale ochránit před sebou samotnými. Pokud si komunikující strany vzájemně nedůvěřují, je vhodné používat digitální podpis. Těm byl věnován díl 34.
| COMPUTERWORLD - seriál o bezpečnosti | COMPUTERWORLD | IDG CZ homepage | |