Asymetrická kryptografie se od své starší, symetrické kolegyně liší jednou významnou vlastností. Pro utajování komunikace používá dva různé klíče, z nichž jeden slouží pouze pro šifrování a druhý pouze pro dešifrování. Tyto dva klíče na sobě závisí, nelze však bez dodatečných informací pomocí jednoho klíče získat klíč druhý. Uživatel, který chce utajovat svou komunikaci s kolegy, zveřejní klíč určený pro šifrování. Vystaví jej například na své webové stránce, zapíše na specializovaný server veřejných klíčů, připojuje jej ke svým e-mailům, zkrátka snaží se o jeho co nejširší rozšíření. Tento klíč se stává veřejným klíčem. Druhý, soukromý klíč si uživatel ponechá v tajnosti. Kdokoliv pak může pomocí veřejného klíče zašifrovat zprávu, kterou je však schopen rozšifrovat pouze držitel odpovídajícího soukromého klíče, tj. příjemce zprávy.
Tohoto modelu lze s výhodou použít pro vytváření elektronických podpisů. Elektronický podpis zprávy je blok dat logicky spojený se zprávou a vytvořený použitím soukromého klíče autora. Pomocí autorova veřejného klíče lze pak kdykoliv ověřit, že podpis byl skutečně vytvořen použitím odpovídajícího soukromého klíče. Díky vlastnostem asymetrických algoritmů lze takto získat spolehlivou informaci o původu zprávy. Stačí získat veřejný klíč uživatele, jehož podpisy chci ověřovat.
S touto elegancí asymetrických systémů je ovšem spojena jejich velká slabina, a tou je získání správného veřejného klíče. Pokud si uživatelé vymění své veřejné klíče osobně, mohou si být jisti, kdo je vlastníkem klíče. Pokud však uživatel získal cizí veřejný klíč z nějakého nespolehlivého zdroje (např. ze serveru veřejných klíčů), nemá žádnou jistotu, že tento klíč skutečně patří osobě, jejíž klíč hledal. U každého veřejného klíče je sice uvedena identifikace jeho vlastníka, ale může se jednat o klíč patřící osobě se stejným jménem nebo v horším případě o klíč podvržený útočníkem, který se snaží vydávat za někoho jiného.
Pro bezpečné používání asymetrických šifer je tedy nutné zavést nějaký mechanismus, který poskytne potřebnou jistotu o původu veřejného klíče. Takovou jistotu může poskytnout například potvrzení klíče důvěryhodnou stranou, které důvěřují všichni účastníci komunikace. Potvrzením je elektronický podpis, který ověřovatel připojí k veřejnému klíči uživatele a vytvoří tak certifikát veřejného klíče. Ověřovatel veřejného klíče se nazývá certifikační autorita (CA).
Certifikáty se mohou šířit zcela volně, každý uživatel, který zná veřejný klíč CA, může ověřit podpis na certifikátu. CA je široký pojem, může jím být úzce specializovaná, často komerční organizace nebo jen řadový uživatel. Vždy však platí, že veškerá důvěra v certifikát je úměrná důvěře v autora elektronického podpisu na certifikátu. CA svým podpisem potvrzuje původ klíče. CA proto často podmiňují vydání certifikátu předložením osobních dokladů. Certifikát podepsaný neznámou, neověřitelnou entitou nemá o mnoho větší význam, než samotný nepodepsaný veřejný klíč.
Certifikát veřejného klíče obsahuje minimálně tři části:
Uživatel, který chce získat certifikát, nejprve vytvoří dvojici veřejného a soukromého klíče. Veřejný klíč spolehlivým způsobem (např. na disketě) doručí CA, která po ověření totožnosti uživatele vydá certifikát. Soukromý klíč zůstává stále utajen a ani CA nezná soukromý klíč uživatele.
Je nutné si uvědomit, že certifikát je "pouze" potvrzením vazby veřejného klíče s identifikátorem vlastníka klíče, nikoliv s konkrétní osobou. Záleží samozřejmě na jednoznačnosti identifikátoru v dané množině uživatelů, ale čím větší tato množina bude, tím víc informací by musel identifikátor obsahovat. Pak vyvstává otázka, jak zjistit všechny tyto identifikující údaje, často se navíc bude jednat o citlivé údaje (rodné číslo, adresa, pozice v organizaci), nevhodné pro zveřejnění.
Přesto je tato vazba v řadě případů dostatečná pro autentizaci. Ovšem samotný certifikát nemůže sloužit pro autentizaci, tou může být až prokázaná znalost odpovídajícího soukromého klíče (např. schopnost přečíst, tj. rozšifrovat zprávu zašifrovanou veřejným klíčem z certifikátu).
I když zpravidla certifikát obsahuje dobu platnosti, mohou nastat případy, kdy je nutné veřejný klíč zrušit okamžitě. Může například dojít k prozrazení soukromého klíče nebo skončení zaměstnaneckého poměru uživatele držícího zaměstnanecký certifikát. Proces zneplatnění veřejného klíče se nazývá revokace. Cílem je, aby se všichni uživatele veřejného klíče dověděli o jeho neplatnosti. Vzhledem k nekontrolovanému šíření certifikátů je revokace velmi obtížný problém. Některé konkrétní způsoby revokace jsou uvedeny dále, při popisu dvou nejpoužívanějších typů certifikátů, konkrétně X.509 a PGP.
Standard ITU-T X.509 je částí série doporučení X.500, která definuje adresářové služby. Adresářem ve smyslu těchto norem je databáze údajů o uživatelích a zdrojích v systému, odkud lze např. získat e-mailovou adresu kolegy nebo seznam dostupných tiskáren. Adresář lze také použít pro ukládání certifikátů. Norma X.500 doporučuje, aby záznamy byly uspořádány do stromu, který odráží organizační strukturu systému. Příklad takového stromu je na obr. 1. Každá organizačně samostatná jednotka může spravovat svou část záznamů. V tomto modelu definuje X.500 jednoznačné identifikátory záznamů v adresáři (Distinguished names, DN), které odpovídají pozici uživatele nebo jiné entity v organizaci. Toto pojmenování je odvozeno od pozice záznamu ve stromu. Například jméno {C=CZ, O=Masaryk University, CN=Laser Printer} identifikuje záznam pro tiskárnu. Názvy položek ve jméně jsou zkratkami anglických výrazů Country, Organization, Organization Unit, Common Name. X.500 definuje mnoho dalších identifikačních položek, např. pro adresu nebo telefonní číslo.
Obrázek 1: Struktura záznamů X.509
Norma X.509 definuje autentizační služby používané uživateli při přístupu do adresáře. Součástí je i definice formátu certifikátů, používaných při autentizaci. Tyto certifikáty jsou uloženy v adresáři spolu s dalšími údaji o uživateli.
CA má přidělenu množinu uživatelů, kterým spravuje certifikáty. Ve velkých organizačních strukturách je nepraktické, aby všechny uživatele obsluhovala jediná CA. Každá organizační jednotka proto zpravidla spravuje vlastní CA, sloužící pro členy této jednotky. Tito uživatelé znají veřejný klíč své CA a mohou tak ověřovat její certifikáty. Pokud však uživatel chce získat certifikát uživatele patřícího k jiné CA, je situace složitější. Získání certifikátu je snadné, stačí vypsat příslušný záznam, identifikovaný DN. Aby však mohl ověřit jeho certifikát, musel by mít veřejný klíč cizí CA. Tento veřejný klíč by musel získat nějakým velmi spolehlivým způsobem.
X.509 používá vzájemné potvrzování klíčů CA. CA do své části adresáře přidá k uživatelským certifikátům ještě certifikáty klíčů jiných CA. Tyto klíče si např. předají správci CA osobně nebo jiným spolehlivým způsobem.
Uživatel, který chce ověřit podpis certifikátu od CA, jejíž klíč nezná, musí získat řetěz certifikátů, začínající certifikátem, který umí ověřit (domovská CA), a končící ověřovaným certifikátem. Dále pro každé dva sousední certifikáty v řetězci (zapsaném zleva doprava) musí platit, že levý certifikát potvrzuje klíč, kterým je podepsán pravý certifikát. Tento postup lze demonstrovat pomocí obr. 2. Uzly stromu znázorňují CA, připojené obdélníky zobrazují certifikáty. Certifikát uživatele N podepsaný CA M je zapsán jako M{N}. Předpokládejme situaci, kdy uživatel A má svůj certifikát podepsaný CA X a uživatel B certifikát podepsaný CA Z. Pokud chce A ověřit platnost certifikátu Z{B}, potřebuje řetězec certifikátů
Protože uživatel má veřejný klíč CA X, může postupně ověřit všechny certifikáty v řetězci a nakonec tedy i certifikát uživatele B.
Obrázek 2: Příklad hierarchie CA
Standard X.509 (verze 1) byl vydán v roce 1988, následně byly vydány 2. a 3. verze, které mimo jiné rozšiřují formát certifikátu o další volitelné položky.
Formát certifikátu podle X.509:
Každá CA vydává pravidelně seznam všech revokovaných certifikátů (certification revocation list, CRL), které v minulosti podepsala. Každý seznam obsahuje datum vydání, seznam revokovaných certifikátů a podpis CA. Certifikáty jsou identifikovány svým sériovým číslem, u každého je datum a čas revokace. Uživatel, který ověřuje platnost cizího certifikátu, musí kromě ověření podpisu ověřit, že certifikát není na seznamu.
Certifikáty X.509 se používají např. v protokolu SSL při přístupu na chráněné webové servery apod.
Systém PGP slouží hlavně pro autentizaci a šifrování e-mailové komunikace. PGP používá asymetrickou kryptografii pro vytváření podpisu zprávy a případně pro utajení šifrovacího klíče použitého pro utajení zprávy. Na rozdíl od X.500 používá decentralizovaný model potvrzování veřejných klíčů, ve kterém není žádná obecně důvěryhodná CA. Každý uživatel PGP může vystupovat jako CA a potvrzovat klíče jiných uživatelů. Každý uživatel si může zvolit, kterým uživatelům důvěřuje a s jakou mírou důvěry. Vzniká tak pavučina důvěry (the web of trust).
Klíče se šíří formou PGP certifikátů1. Existují specializované servery, které slouží pro uchovávání těchto certifikátů (např.www.pgp.cz). Formát PGP certifikátu:
Každý uživatel si spravuje svazek veřejných klíčů, obsahující klíče uživatelů, se kterými komunikuje. Klíče se do svazku přidávají a ubírají dynamicky podle potřeby. Ve svazku klíčů jsou ke každému veřejnému klíči připojeny tři položky, pomocí nichž se určuje platnost klíčů:
Při přidání nového klíče prohledá PGP svazek a pokouší se nalézt klíč, kterým je přidávaný klíč podepsán (pokud je podepsán). Pokud takový klíč najde, přiřadí hodnotu OT tohoto klíče do ST odpovídajícího podpisu nového klíče. Pokud takový klíč ve svazku nenajde, přiřadí do ST hodnotu unknown.
Při každé změně svazku se přepočítávají hodnoty KL všech klíčů. Nejprve se spočítá vážený součet hodnot ST všech podpisů daného klíče. Váha částečně důvěryhodného podpisu, tj. podpisu s ST marginally trusted, je 1/X. Váha důvěryhodného podpisu, tj. podpisu s ST je completely trusted, je 1/Y, kde X a Y jsou uživatelem definované konstanty. Pokud je tento součet roven 1, klíč se považuje za platný, tj. hodnota KL je nastavena na valid. Například při hodnotách X = 2, Y = 3 je zapotřebí dvou podpisů částečně důvěryhodných a tří podpisů důvěryhodných. Implicitně je nastaveno X = 1, Y = 2.
Vzhledem k absenci centrální CA může revokace provádět pouze samotný uživatel. Uživatel, který chce revokovat svůj veřejný klíč, musí vydat tzv. revokační certifikát. Tento certifikát je v podstatě totožný s běžným PGP certifikátem, tedy je to (revokovaný) veřejný klíč podepsaný soukromým klíčem uživatele. Na rozdíl od běžného certifikátu však obsahuje informace o revokaci. Uživatel se pak musí snažit co nejvíce rozšířit tento certifikát. Problém nastane v okamžiku, kdy uživatel ztratí svůj soukromý klíč. V tomto případě nemůže vytvořit certifikát. PGP proto doporučuje vytvořit revokační certifikát předem, např. při generování dvojice soukromý/veřejný klíč a ponechat jej pro budoucí použití. Novější verze (6.0) umožňuje předem vygenerovat speciální dvojici (dvojice) revokačních klíčů, které se mohou později použít pro revokaci.
Důvěra v PGP je založena výhradně na samotných uživatelích a na jejich rozhodnutí, komu budou důvěřovat, které klíče podepíší apod. Naopak X.509 zavádí specializované, obecně důvěryhodné CA, které mají na starosti vydávání a správu certifikátů. X.509 proto potřebuje hierarchicky uspořádanou strukturu, s pevně definovanými vztahy, které se mění jen zřídka.
PGP je nevhodné pro masové nasazení v geograficky nebo politicky vzdálených skupinách uživatelů. Dva uživatelé, kteří se nikdy nesetkali a nemají společné prostředníky, mají velmi těžkou pozici při výměně veřejných klíčů.
V certifikátu X.509 je pouze jeden identifikátor uživatele a jeden podpis. PGP umožňuje použití více identifikátorů i podpisů, přičemž podpis se může vztahovat pouze k jednomu identifikátoru. Podpisy k PGP certifikátu se mohou přidávat i kdykoliv později po vytvoření certifikátu.
X.509 certifikáty a mechanismy lze snadno použít pro delegování práv. Uživatel může vytvořit "certifikát", ve kterém může předat část pravomocí svému zástupci. Po standardní autentizaci zástupce předloží tento "certifikát" a služba mu bude zpřístupněna. Celý postup využívá standardních mechanismů. V PGP to takto lehce nejde, protože důvěra v platnost klíče automaticky neznamená důvěru v podpisy vytvořené tímto klíčem.
1 | PGP podporuje i použití X.509 certifikátů
... zpět do textu |