Brno, 2006
Prohlášení
Prohlašuji, že tato diplomová práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Vedoucí práce
doc. Ing. Jan Staudek, CSc.
Shrnutí
Práce se zabývá elektronickým podpisem na několika úrovních. První se týká kryptografických algoritmů, principů jejich funkce a hodnocením použitelnosti. Druhá se zabývá implementací elektronického podpisu na vyšší úrovni v systémech založených na X.509 certifikátech, PGP a hodnocením obou přístupů. Samostatná kapitola je vyhrazena pro dynamicky se rozvíjející obor bezpečnosti v XML dokumentech, konkrétně elektronickým podpisů v XML dokumentech a jejich souvislosti s webovými službami. Poslední kapitola obsahuje přehled standardizace elektronického podpisu v Evropské unii.
Obsah
Seznam obrázků
Seznam tabulek
Seznam příkladů
Tato práce byla připravena ve formátu XML s využitím DTD DocBook. Závěrečná úprava pomocí XSL má tři verze. První je WWW publikace, druhá PDF dokument pro prohlížení a třetí PDF dokument pro tisk. Pro sazbu PDF verzí byl použit typografický systém LaTeX ve stylu fithesis z písma Computer Modern ve variantě CS-font.
S obyčejným podpisem se lze v historii i v současnosti setkat na každém kroku. Jednou z jeho funkcí je identifikace. Např. podpis Jan Novák vybere z množiny obyvatel této planety určité množství lidí. Pokud se Jan Novák podepisuje přiměřeně unikátně a pohybuje se v prostředí, kde je podpis akceptován jako dostatečný důkaz identity, lze pak podpis chápat jako autentizující prostředek. Další úrovní podpisu je vyjádření stanoviska např. Ano Souhlasím Podpis nebo Ne Nesouhlasím Podpis. V takové úrovni lze pak podpis chápat jako autorizující prostředek, kdy např. úředník svým podpisem autorizuje vydání povolení. Podpis je také obřad, kdy se podepisující osoba alespoň na zlomek vteřiny zamyslí, zda skutečně souhlasí s tím co podepisuje a s případnými následky. I intuitivně je podpis chápan jako neodmítnutelný.
Běžná představa o obyčejném podpisu je taková, že podepisující osoba napíše Jan Novák a podpis je hotov. Definice elektronického podpisu je velmi podobná. Český zákon o elektronickém podpisu vychází z Direktivy Evropské komise [42] a definuje elektronický podpis jako údaj v elektronické podobě, který je logicky připojen ke zprávě a umožňuje ověření totožnosti podepsané osoby. Jako elektronický podpis v mezích zákona stačí pokud podepisující osoba za zprávu v elektronické podobě napíše Jan Novák .
Zde je místo zásadního rozdílu mezi obyčejným a elektronických podpisem. Místo, kde do běžného života vstoupil počítačový svět. Např. smlouva podepsaná fyzickou osobou je celkem běžná, smlouva ve formě textového souboru na disketě opatřená řádkem se dvěma podpisy je jen těžko představitelná. Podpis by šel jednoduše změnit nebo kopírovat. Stejně tak by byla možná změna podepsané zprávy. Proto je nutné vytvořit strukturu, která by plnila funkce identifikace, autentizace, identity a nepopiratelnosti. Strukturu, která se dá strojově zpracovat a zároveň má takové vlastnosti, že na nich lze založit systém právním norem.
Základním prvkem této struktury je zaručený elektronický podpis a je v zákoně deklarován jako elektronický podpis splňující následující požadavky dle Zákona o elektronickém podpisu č. 227/2000 Sb., § 2, odstavec b [34]:
Je jednoznačně spojen s podepisující osobou.
Umožňuje identifikaci podepisující osoby ve vztahu k datové zprávě.
Byl vytvořen a připojen k datové zprávě pomocí prostředků, které podepisující osoba může udržet pod svou výhradní kontrolou.
Je k datové zprávě, ke které se vztahuje, připojen takovým způsobem, že je možné zjistit jakoukoliv následnou změnu dat.
Oproti této právní definici se elektronický podpis se z kryptografického hlediska chápe jako soustava kryptografických funkcí zabezpečující tyto vlastnosti:
Podpis musí být vždy vztažen ke konkrétní entitě, která podpis vytvořila. Identifikaci v zaručeném elektronickém podpisu zabezpečí připojený certifikát s uvedeným jedinečným jménem entity. V České republice slouží pro tento účel při komunikaci se státní správou speciální identifikátor MPSV, který je součástí vydávaných certifikátů.
Samotná identifikace vybere jednu konkrétní entitu. Autentizace je pak proces zajištění určité míry jistoty o tom, že daná entita je skutečně tou, za kterou se vydává. Základní autentizace je provedena ověřením podpisu zprávy proti veřejnému klíči. Přitom je třeba věřit, že:
Soukromý klíč je ve výhradním vlastnictví podepisující entity.
Veřejný klíč použitý k ověření podpisu skutečně patří podepisující entitě.
Celé podpisové schéma je bezpečné.
Zajištění integrity je proces ustavení určité míry jistoty o tom, že zpráva nebyla na cestě od odesílatele k příjemci změněna.
Tento proces přímo souvisí s principem funkce podpisu. Při něm se nejprve vytváří jedinečný otisk (tzv. haš) zprávy. Je pro každou byť i sebeméně změněnou zprávu jiný, nelze z něj získat zpětně obsah zprávy a nelze vytvořit dvě zprávy se stejným hašem.
Haš je hodnota, která je podepisována. Při ověřování podpisu se vždy znovu počítá haš přijaté zprávy a ověřuje se proti podepsanému haši.
Podepisující entita nemůže popřít, že vytvořila podpis zprávy. Toto tvrzení vychází z předpokladů uvedených v definici autentizace. Podpis slouží pro rozhodčí autoritu (např. soudního znalce) jako dostatečný důkaz ekvivalentní s ručním podpisem.
Body a, b, c zajišťují identifikaci a autentizaci podepisující osoby. Bod d zajišťuje integritu zprávy. Nepopiratelnost podpisu je důsledkem bodů a, b, c i d. Nepopiratelností se zabývají české normy [12], [13] a zajímavý rozbor lze najít v [14].
Komentář k zákonu [15] ještě zdůrazňuje pojem podepisující osoba, neboť jde skutečně vždy o fyzickou osobu. Právnická osoba může vytvářet elektronické i jiné podpisy vždy jen v zastoupení pověřených fyzických osob.
V roce 2004 byl Zákon o elektronickém podpisu novelizován. Objevil se v něm nový pojem elektronická značka. Používá se pro ni stejná technologie jako v případě elektronických podpisů. Elektronickou značkou mohou zprávy označovat i právnické osoby nebo organizační složky státu. Je možné použít automatizované postupy. Lze tak realizovat např. zasílání bankovních výpisů, nebo vyúčtování zákazníkům.
Kromě elektronických značek zavedla ještě novela pojem kvalifikované časové razítko, které prokazuje existenci nějaké zprávy v čase.
V hojné míře se také používá pojem digitální podpis, který jakoby zužuje pojem podpisu na podpis reprezentovaný pouze čísly. Právě digitální forma podpisu využívající technik asymetrické kryptografie je v dnešní době jedinou používanou metodou pro jeho vytváření. V budoucnu se počítá s příchodem jiných forem elektronického podpisu založených třeba na biometrických postupech, proto se obecnější termín elektronický podpis v právní definici jeví jako vhodnější. Zajímavou diskusi problému zda používat první či druhé označení lze najít v článku [16]. Obecně lze říci, že pojem Digital signature je rozšířen spíše v zemích na americkém kontinentu zřejmě v návaznosti na americký Digital signatures standard. V zemích Evropské Unie je směrodatná Direktiva Evropské komise o elektronickém podpisu (Electronic Signature Directive), z níž vychází i Zákon o elektronickém podpisu platný v České republice. Vhodné materiály rozebírající tuto problematiku jsou [15] a [16].
V dalším textu je pojmem elektronický podpis zamýšlen zaručený elektronický podpis, realizovaný pomocí asymetrické kryptografie v digitální formě.
Elektronický podpis v současné běžné podobě má základ v asymetrické kryptografii. Používá dva klíče, soukromý a veřejný. Oba klíče jsou kryptograficky provázané. První slouží k podepisování zpráv, druhý pro ověřování podpisu zpráv.
U soukromého klíče se předpokládá, že s ním může disponovat pouze osoba, jenž vytváří svůj elektronický podpis. Tento požadavek je ostatně i jedním ze zákonných předpokladů pro zaručený elektronický podpis.
Efektivní ochrana soukromého klíče není jednoduchá záležitost pokud je používán běžným uživatelem na nijak zvlášť chráněném počítači. Pokud je klíč uložen v souboru, je možné jej zkopírovat. Pokud je chráněn heslem, je možné heslo odposlechnout. Existují proto prostředky jak vytvářet podpisy zpráv soukromým klíčem pomocí specializovaného technického zařízení (např. čipovou kartou nebo USB tokenem), aniž by bylo možné klíč ze zařízení kopírovat. Moderní čipové karty umí samy generovat klíče, vytvořit žádost o certifikát, ukládat v sobě jeden nebo více certifikátů a samozřejmě také realizovat podpis. Kartu také uživatelé chápou jakou něco důležitého, co je třeba chránit.
Oproti tomu veřejný klíč, spolu s označením komu patří, je k dispozici komukoliv, kdo potřebuje ověřit platnost podpisu vytvořeného pomocí odpovídajícího soukromého klíče. Veřejný klíč musí být příjemci zprávy ověřujícímu podpis spolehlivým způsobem doručen.
Skutečně spolehlivé doručení je opět netriviální problém za předpokladu, že komunikace s příjemci zpráv probíhá po nezabezpečené síti a bez předchozí domluvy po bezpečném kanále. Za takové situace nelze považovat jakékoliv doručení veřejného klíče příjemci za úplně spolehlivé.
Problém spolehlivého doručení veřejného klíče řeší tzv. certifikáty. Dle [15] je certifikátem datová zpráva, která je vydána poskytovatelem certifikačních služeb a spojuje data pro ověřování podpisu s podepisující osobou. Jinými slovy certifikát představuje podpis nějaké důvěryhodné třetí strany pod veřejný klíč odesílatele zprávy a informaci o jeho totožnosti.
Stejně jako v případě elektronického podpisu, zavádí i český zákon užší pojem kvalifikovaný certifikát. Rozumí se jím certifikát vydaný podle Zákona o elektronickém podpisu, obsahující položky definované v zákoně, vydaný poskytovatelem certifikačních služeb oprávněným vydávat kvalifikované certifikáty.
Se soukromým klíčem příslušným takovému certifikátu lze za pomoci prostředků pro bezpečné podepisování vytvořit kvalifikovaný elektronický podpis. Takový podpis už má dle Direktivy Evropské komise o elektronickém podpisu [42] stejnou právní platnost jako běžný podpis.
Definici certifikátu lze dále zůžit na kvalifikovaný certifikát vydaný akreditovaným poskytovatelem certifikačních služeb. Akreditací se rozumí osvědčení o tom, že poskytovatel certifikačních služeb splňuje podmínky stanovené zákonem pro činnost akreditovaného poskytovatele certifikačních služeb. Osvědčení v České republice vydává Ministerstvo informatiky, dříve Úřad pro ochranu osobních údajů. Akreditace není v EU povinná, jen je doporučeno ji zakomponovat do legislativy, pokud chce stát regulovat poskytování certifikačních služeb.
S takovým certifikátem lze vytvářet kvalifikovaný elektronický podpis založený na kvalifikovaném certifikátu od akreditovaného poskytovatele certifikačních služeb. V českém prostředí lze s tímto podpisem např. komunikovat s veřejnou správou.
Při použití certifikátu je možné odesílací proces modifikovat tak, že se zprávou je odesílán i certifikát nebo celá certifikační cesta až ke kořenové certifikační autoritě. Certifikační autority mohou být poskládány za sebou ve vztahu nadřízená podřízená. Při správném postupu ověřování podpisu je třeba v hierarchické struktuře certifikačních autorit nalézt nejvyšší z nich, spolehlivou cestou si opatřit její certfifikát a vyslovit mu důvěru. Ověření pak proběhně jako posloupnost ověření podpisů certifikačních autorit v jednotlivých certifikátech, kontrola platnosti jednotlivých certifikátů a nakonec kontrola podpisu odesílatele.
Pokud všechna ověření dopadnou v pořádku, je podpis prohlášen za platný.
Příklad implementace těchto principů je rozšířený poštovní klient Microsoft Outlook Express 6. Ve standardní instalaci obsahuje kořenové certifikáty významých certifikačních autorit (např. Verisign). Při zobrazování e-mailu, k jehož podpisu byl použit a je přiložen příslušný certifikát, zobrazí úhlednou ikonku označující certifikovaný e-mail. V případě, že certifikát nepochází od předinstalované certifikační autority, zobrazí důrazné varování (žlutě na černém podkladu). Pak vyzve uživatele, aby explicitně vyjádřil přiloženému certifikátu důvěru. Druhý postup se týká např. e-mailu s certifikátem od české akreditované certifikační autority I.CA vydávající kvalifikované certifikáty.
Certifikáty jsou založené na technologiích, které podléhají změnám a jejich používání není bez rizika obzvlášť nebezpečné je riziko odhalení soukromého klíče. Proto se zpravidla vydávají s omezenou dobou platnosti např. na 1 rok. Doba platnosti je vždy uvedena i v certifikátu, a její kontrola je součástí ověřování podpisu zprávy.
Součástí pravidel pro zacházení s certifikáty musí být i možnost certifikát odvolat v případě, že mu již není možné důvěřovat např. při vyzrazení soukromého klíče vlastníka certifikátu. Obdobně musí být součástí spolehlivého ověření podpisu s certifikátem i kontrola, zda certifikát nebyl odvolán. Certifikáty se v současné době vytvářejí většinou ve formátu X.509, kterému je věnována kapitola 4 PKI a X.509 .
Časové razítko je v elektronickém podpisu relativně novou záležitostí. Například v České republice je možné využívat služeb časových razítek teprve od března 2006. Časová razítka se dělí do zhruba stejných skupin jako certifikáty: kvalifikovaná časová razítka a kvalifikovaná časová razítka od akreditovaných poskytovatelů časových razítek.
Význam časových razítek lze demonstrovat jednoduchým příkladem zneužití myšlenky elektronického podpisu bez časového razítka Útočník si stáhne certifikát oběti a věnuje několik let úsilí o nalezení soukromého klíče z hodnoty veřejného klíče. Takto by mohl fungovat např. RSA certifikát. Poté s dešifrovanou hodnotou soukromého klíče vytvoří podvržený podpis předem připravené zprávy datované patřičně do minulosti.
Časové razítko je obdoba notářského ověření dokumentu. Zjednodušeně jde o podpis zprávy a přesného časového údaje soukromým klíčem poskytovatele časových razítek. Časové razítko prokazuje, že zpráva v daném čase existovala. Takto může být podepsaná zpráva uložena na delší dobu například do archívu. Myšlenka na které je archív zpráv v elektronické podobě založen je následující. Platnost certifikátu použitého k vytvoření podpisu časem skončí. V takovém případě by už podpis zprávy přestal platit. Vhodně načasovaným časovým razítkem tomu lze zabránit. Časové razítko pak říká, že v určité době byl podpis ještě platný a stále chrání zprávu před změnami. Násobnými časovými razítky lze překlenout situaci, kdy byl dávno prolomen algoritmus na kterém byl založen podpis původní zprávy, ale podpis zprávy pořád platí. Stejným způsobem lze ke zprávě přidat např. aktuální seznam zneplatněných certifikátů, nebo aktuální certifikační cestu a vše orazítkovat.
V předchozí kapitole stejně jako v direktivě Evropské komise [42] o elektronickém podpisu se neříká nic o konkrétních formách, jak by elektronický podpis měl vypadat. Také chybí přesně definované postupy. I když se zdá, že vše směřuje k asymetrické kryptografii, jsou zatím ve skutečnosti předchozí kapitola i direktiva technologicky značně nezávislé.
Elektronický podpis je v současné době založen výhradně na asymetrické kryptografii velmi širokém oboru, jenž se bouřlivě rozvíjí od 70. let minulého století. Za tu dobu vznikly nejrůznější kryptografické algoritmy a podpisová schémata. V současnosti patří mezi nejvýznamnější tři algoritmy RSA, DSA a ECDSA. Právě tyto algoritmy jsou v českém prostředí definované jako zákonem povolené [17] pro vytváření zaručených elektronických podpisů.
Zákon zavádí soubor požadavků na systém vytvářející elektronický podpis a definuje pojem podpisové schéma, jako soustavu čtyř položek:
Kryptografický algoritmus pro podpis a jeho parametry. V současné době jde o RSA, DSA nebo ECDSA. Mezi parametry patří hlavně minimální délka klíčů.
Algoritmus pro generování klíčů a parametrů. Každý algoritmus má vlastní postup.
Metoda pro zarovnání haše na určitou velikost před podepsáním (padding). Tento postup se týká jen algoritmu RSA.
Hašovací funkce.
Princip vytváření podpisu v takovém podpisovém schématu je znázorněn v obrázku 2.1 Princip vytváření podpisu . Podepisovaná zpráva projde hašovací funkcí a výsledek je podepsán s použitím soukromého klíče podepisující osoby. Podpis je pak připojen ke zprávě a vznikne podepsaná zpráva.
Existují také schémata s obnovením zprávy, kde zpráva cestuje od odesílatele k příjemci zabalená přímo v podpisu. S tímto přístupem se lze setkat např. ve standardu ISO/IEC 9796-2.
Princip ověření při použití deterministického podpisového schématu (např. RSA dle ANSI X9.31) znázorněn na obrázku 2.2 Princip ověření podpisu v deterministickém schématu . K ověření podpisu zprávy je třeba veřejný klíč podepisující osoby. Podpis je veřejným klíčem transformován do vhodné podoby. V případě deterministického RSA jde o operaci dešifrování, jejímž výsledkem je nějaký haš. Zpráva, vůči které je podpis ověřován, je také hašována a vznikne jiný haš. Pokud se oba haše rovnají, je podpis prohlášen za platný.
Při použití pravděpodobnostních schémat jako jsou DSA a ECDSA, je pro konkrétní zprávu a parametry podepisovacího systému dána množina platných podpisů (její velikost závisí na parametrech šifrovacího systému). Ověřování pak probíhá jako průchod funkcí, která má na vstupu haš ověřované zprávy, podpis a veřejný klíč podepsané osoby. Výstupem je pak odpověď ANO nebo NE. Viz. obrázek 2.3 Princip ověření podpisu v nedeterministickém schématu .
Pro generování klíčů a parametrů podpisového schématu je potřeba velké množství náhodných čísel. Jejich získání na běžném počítači je problematická (pomalá) záležitost. Proto se používají generátory pseudonáhodných čísel (PRNG), které vygenerují nejprve ze skutečně náhodné malé hodnoty (např. haše náhodných dat o délce 160 bitů) řadu pseudonáhodných čísel. Iniciální hodnota musí být ovšem skutečně náhodná, neboť postup generování čísel z této hodnoty lze kdykoliv zopakovat se stejným výsledkem. Pro získání většího množství pravých náhodných čísel se většinou používají zařízení založená na měření některého náhodného fyzikálního jevu (atmosférické výboje, speciální diody). Náhodnost výstupu lze ověřit, postupy pro ověření definuje např. americký standard definující vlastnosti kryptografických zařízení FIPS 140-2 [74].
Takto popsaný jednoduchý systém odpovídá např. podpisovému schématu PGP. Ověření podpisu zprávy probíhá jako kontrola proti veřejnému klíči odesílatele v určitém krátkém čase po odeslání zprávy. Tento přístup neřeší kontrolu podpisu po uplynutí delšího časového úseku, např. několika let, kdy může být klíč podepisující osoby dávno kompromitován.
Pokud je třeba podepsanou zprávu uložit do archívu a ověřovat podpis i po uplynutí delšího časového úseku, je nutné základní princip podpisu rozšířit. Standardizační aktivity v Evropské unii (viz. Formáty elektronického podpisu ) uvádějí jako nutnou součást podpisu i podpisovou politiku, kterou podepisující osoba potvrdí pravidla, za jakých podpis měl vzniknout a za jakých má být ověřován. Dále uvádí tato rozšíření:
Elektronický podpis (ES). Podpis založený na kvalifikovaném certifikátu od poskytovatele kvalifikovaných certifikačních služeb. Podle Direktivy Evropské komise o elektronickém podpisu [42] je takový podpis právně ekvivalentní s ručním podpisem.
Elektronický podpis s časovým razítkem (ES-T). Pokud podepisující osoba nepoužije časové razítko, měl by adresát zprávu po ověření odesílatele nechat opatřit časovým razítkem jako důkaz existence zprávy.
Elektronický podpis s časovým razítkem a kompletní sadou ověřovacích dat (ES-C). V tomto případě podepisující osoba k podpisu přikládá všechna relevantní data podporující platnost podpisu, např. všechny certifikáty z certifikační cesty až ke kořenové certifikační autoritě, seznam zneplatněných certifikátů atd. Podpis pak probíhá jako posloupnost podpis zprávy, časové razítko, čekání na uplynutí intervalu zveřejňování seznamu nových zneplatněných certifikátů, přiložení seznamu zneplatněných certifikátů.
Formát podepsané zprávy je na obrázku 2.4 Struktura rozšířeného podpisu . Na obrázku jsou tři možné druhy podpisu, z nichž každá další je rozšířením předchozí.
Ověřování platnosti takového podpisu by pak mělo proběhnout takto:
Kontrola podpisu.
Pokud podpis nemá časové razítko, orazítkuje se. V tuto chvíli má adresát zprávy v ruce důkaz (potvrzený poskytovatelem časových razítek, kterému věří), že zpráva v daném čase existovala.
Ověřovací proces pak zkontroluje platnost veřejného klíče (certifikátu) podepisující osoby a může data potvrzující platnost přiložit ke zprávě. Vznikne tak formát zprávy nazývaný ES-X Long.
Poslední možností je buď celou zprávu nebo jen data potvrzující platnost veřejného klíče podepsané osoby orazítkovat časovým razítkem. První možnost se nazývá ES-X Type 1 X-Timestamp a druhá ES-X Type 2 X-Timestamp. Taková zpráva je pak ve vhodném tvaru pro uložení do archívu.
Postupem času končí platnost certifikátů použitých k podpisu nebo vytvoření časových razítek ve zprávě . Archív tento stav automaticky detekuje a zprávu ve vhodném čase buď přerazítkuje nebo připojí další časové razítko. Archívní zpráva se nazývá ES-A (ES with Archive validation data)
Kompletní popis fungování takového systému lze najít v technické specifikaci ETSI TS 101 733 Electronic Signature Formats.
V bezpečnostním modelu týkajícím se oblasti elektronického podpisu vystupuje jako hrozba útočník, který se snaží podvrhnout zprávu s korektním podpisem. Cílem útoku je zpravidla podpis cizí osoby. Může dojít i k případu, kdy uživatel elektronického podpisu bude chtít z nejrůznějších důvodů zneužít vlastní podpisový prostředek.
Výsledky útočníkova snažení se dělí do skupin:
Total break. Tato situace vznikne ve chvíli, kdy útočník získá soukromý klíč oběti nebo jiným způsobem dosáhne stavu, že může vytvářet podpisy libovolných zpráv.
Selective forgery. Útočník je pro nějakou konkrétní zprávu nebo druh zpráv schopen vytvořit korektní podpis. Příkladem takové situace je nalezení kolize v použité hašovací funkci. Útočníkovi pak stačí zkopírovat podpis z původní zprávy a připojit ho k nové zprávě.
Takto může být veden útok na vlastní podpis. Například vytvořím podpis dokumentu Dlužím firmě 100000 Kč a zároveň stejný podpis dokumentu Dlužím firme 100 Kč . Před nezávislým arbitrem pak lze tvrdit, že s podpisem prvního dokumentu nemám nic společného a naopak jsem podepsal druhý dokument.
Existential forgery. Útočník je schopen vytvořit alespoň jednu korektně podepsanou zprávu a nemusí být schopen ovlivnit její obsah.
Podle možností jaké může útočník využít:
Key only attack. Základní situace, kdy útočník má k dispozici pouze veřejný klíč oběti.
Known message attack. V této situaci má útočník k dispozici veřejný klíč oběti a nějaké podepsané zprávy, ale nemůže ovlivnit jejich obsah před podpisem.
Non-adaptive chosen-message attack. V této situaci oběť jednorázově podepíše podstrčenou zprávu.
Adaptive chosen-message attack. Útočník může opakovaně podstrčit oběti k podpisu zprávu, která závisí na předchozích podepsaných zprávách. V ideálním případě podepíše oběť jakýkoliv objem zpráv.
Obrana před tímto druhem útoku je nejtěžší. Testování bezpečnosti podpisového schéma musí vždy zahrnout i tuto variantu útoku a bezpečné podpisové schéma jí musí být schopné odolat.
Název algoritmu RSA je zkratkou ze jmen Rona Rivesta, Adi Sharmira a Len Adlemana. Metoda RSA byla poprvé popsána v časopise Scientific American v srpnu roku 1977 [5]. Autoři v ní nabízeli zaslání podrobné dokumentace poštou komukoliv kdo o ní projeví zájem. Dostali i do pozornosti známé organizace NSA. Později vyšla práce [6] už s podrobným popisem RSA. Ještě později se ukázalo, že podobný systém [2] byl popsán už v roce 1973, ale až do roku 1997, podléhala tato práce utajení. V roce 1982 autoři algoritmu založili společnost RSA Security. Algoritmus v roce 1983 patentovala MIT (exkluzivně pro RSA Security) na území USA s číslem U.S. Patent 4405829. Platnost patentu skončila v roce 2000.
Je třeba zmínit, že jde skutečně jen o holý princip. RSA implementované popsaným jednoduchým způsobem není v žádném případě bezpečné.
Dopředu je třeba znát velikost modulu N, s nímž bude RSA provádět operace mod N. Např. v RSA-2048 je velikost modulu N rovna 2048 bitům. Velikost N určuje tzv. délku klíče a základní bezpečnost celého podpisového schéma.
Zvolí se náhodně a nezávisle dvě velká prvočísla p a q přibližně stejné délky (podrobné požadavky zmiňuje sekce Generování klíčů a bezpečnost RSA , přičemž délka p a q činí polovinu délky N. Běžně používaná délka modulu N je v současné době 2048 bitů, což odpovídá číslu o 617 až 619 cifrách.
Vypočítá se jejich součin, tj. hodnota modulu N = p.q a hodnota (n) = (p - 1).(q - 1). Funkce (n) je Eulerova funkce vracející počet čísel menších než n nesoudělných s n.
Zvolí se číslo e, nesoudělné s (n) v otevřeném intervalu (1,) nesoudělné s (n). Číslo e se označuje jako veřejný nebo také šifrovací exponent.
Vypočítá se hodnota d = e-1 mod (N). Číslo d se nazývá soukromý nebo dešifrovací exponent.
Veřejný klíč se složí z dvojice (N, e) a soukromý klíč z dvojice (N, d).
Zmíněný postup je teoretický. V praxi se většinou postupuje od bodu 4, kdy se zvolí pevně hodnota veřejného exponentu e. Pak se teprve generují p a q, tak aby e bylo nesoudělné s (n).
Šifrování a dešifrování
V operacích šifrování a dešifrování vždy vystupuje nějaká obecná zpráva M. Aby následující operace mohly fungovat, je zpráva vždy vhodně zarovnána, doplněna na délku klíče a převedena na celé číslo.
Zašifrovaný text se získá operací C = Me mod N. Používá se veřejný klíč příjemce (N, e).
Dešifrování probíhá operací M = Cd mod N. Příjemce používá svůj soukromý klíč (N, d).
Podepisování a ověření podpisu
RSA je možné použít k vytvoření elektronického podpisu sM nějaké zprávy M. Zpravidla se RSA nepoužívá přímo pro podpis zprávy, takový proces by byl příliš pomalý. Podepisuje se jen haš zprávy M vytvořený nějakou hašovací funkcí h. Haš musí být vhodně zformátovaný a vždy zarovnaný na délku modulu N.
Podpis zprávy je proveden operací sM = h(M)d mod N. Odesílatel používá svůj soukromý klíč (N, d).
Při ověření podpisu zprávy se nejprve spočítá hodnota haše přijaté zprávy h(M). Dále je proveden výpočet sMe mod N. Pokud se výsledky obou operací rovnají je podpis považován za platný.
Obtížnost prolomení RSA je založena na následujícím matematickém problému:
Jsou zadány hodnoty veřejného klíče (N, e) a zašifrovaný text C, jenž je výsledkem operace C = Me (mod N). Úkolem je dešifrovat C a odhalit tak zprávu M.
Předpokládá se, že problém RSA je co do složitosti řešení ekvivalentni úloze faktorizace (rozložení na součin prvočísel) složeného čísla N. Dokázán byl zatím pouze jeden směr ekvivalence tj. v případě schopnosti faktorizovat modul N, lze z veřejného klíče (N, e) spočítat soukromý klíč (N, d) a odtud oklikou řešit i problém RSA. Důkaz tohoto tvrzení lze najít např. v [1]. Prolomení RSA tedy není obtížnější než faktorizace. Opačný směr zatím dokázán nebyl. Důkaz byl podán [1] jen případě malých hodnot exponentu e ve dvojici veřejného klíče (N, e) např. pro hodnotu e rovnu 3. Pro větší hodnoty e není důkaz znám.
Generování klíčů v RSA je v podstatě proces nalezení dvou velkých prvočísel délek N/2, kde N je délka RSA modulu. Správné generování klíčů má zásadní význam pro bezpečnost RSA. Je vcelku jednoduché najít a podvrhnout uživateli slabý snadno faktorizovatelný modul N výběrem prvočísla p v součinu N = p.q takového, že čísla (p - 1) nebo (p + 1) mají jen malé dělitele. Bezpečná implementace RSA tedy musí při generování prvočísel používat nějaký vhodný ověřený algoritmus, a zároveň vyřadit případné slabé klíče (pravděpodobnost vygenerování slabého klíče je však velmi malá). Podrobný rozbor jak takové kontroly modulu N probíhají, či jak zkontrolovat prvočísla p a q nezávislou třetí stranou bez možnosti odhalení jejich hodnoty lze najít v [19].
Nalézání velkých prvočísel realizuje příslušná implementace RSA zpravidla generováním řady náhodných čísel (standard ANSI X9.31 [20] definuje způsob jak taková čísla hledat) a testováním zda jde o prvočísla. Pravděpodobnost nalezení prvočísla při generování čísla délky N je přibližně rovna hodnotě 1/log(N). Pravděpodobnost nalezení se zvyšuje explicitním vyřazováním sudých čísel. Pokud je použit pevný exponent e, musí se vyřadit i čísla s ním soudělná.
Pro testování prvočíselnosti lze použít buď deterministické nebo pravděpodobnostní algoritmy, které určí zda vygenerované náhodné číslo je prvočíslo s určitou pravděpodobností. Např. standard FIPS 186-2 [23] pro algoritmus DSA používá upraveny Rabin-Millerův algoritmus, který určí prvočíslo s pravděpodobností chyby (1/4)n, kde n je počet opakování testu na prvočíselnost. Hodnota padesáti opakování se již považuje za dostatečný důkaz, že číslo je prvočíslem. Rabin-Millerův pravděpodobnostní algoritmus je také součástí standardu ANSI X9.31 [20]. Standard PKCS #1 [24] kupodivu žádný postup pro generování klíčů nedefinuje.
Kromě generování modulu N, generuje RSA ještě veřejný a soukromý klíč. Hodnota veřejného klíče je v praxi většinou pevně daná např. 65537. Tato hodnota je doporučena i standardem PKCS #1 [24]. Hodnota soukromého klíče se odvozuje z hodnoty modulu a veřejného klíče. Lze ji velmi rychle realizovat rozšířeným Euklidovým algoritmem.
Přímý způsob jak prolomit RSA je nalezení prvočíselného rozkladu (faktorizace) modulu N na součin prvočísel. Jde o problém, jenž je předmětem zájmu matematiků po staletí počínaje Gaussem a Fermatem. V souvislosti s RSA je dnes stále aktuální. V zásadě se známé algoritmy pro faktorizaci N dají rozdělit na dva typy.
Algoritmy prvního typu využívají případu, kdy N má nějaké speciální vlastnosti. Mezi ně patří např. Pollardova (p - 1) metoda [25]. Metoda využívá případu, kdy prvočíselný faktor (p - 1), má kromě dvojky (p je prvočíslo a (p - 1) je tedy sudé) ještě nějaký malý dělitel. Další metodou je faktorizace pomocí eliptických křivek (ECM Elliptic Curve Method) [26]. Má zajímavou dobu běhu, která závisí nikoliv na velikosti N, ale na velikosti nejmenšího z faktorů N. Maximální velikost faktoru pro použití ECM se v současnosti pohybuje okolo 55 cifer (187 bitů), což je pro faktorizaci běžného RSA modulu stále málo. Problematika faktorizace modulu N majícího některé zmíněné speciální vlastnosti je podrobně rozebrána v [29].
Algoritmy druhého typu pracují s obecným složeným číslem N. Patří mezi ně algoritmus Quadratic sieve (QS) z roku 1982 a také nejefektivnější v současnosti známý algoritmus pro faktorizaci velkých (115 cifer a víc) složených čísel Number field sieve (NFS) z roku 1990. Lze se také setkat s názvem GNFS (General number field sieve). Algoritmus pracuje se subexponenciální složitostí, popis algoritmu lze najít v [28].
Současným rekordem ve faktorizaci je číslo pocházející z RSA challenge o délce 663 bitů (200 cifer). WWW stránky RSA uvádějí jiné, pouze 640-bitové číslo, neboť v roce 2003 došlo ke změně soutěžních čísel. Autoři uvádějí, že faktorizaci realizovali v clusteru 80 PC s procesory Opteron. První část NFS algoritmu (Sieving step) trvala 10 měsíců, druhá kratší (Matrix step) pak 3 měsíce.
V [29] byl popsán způsob, jak urychlit nejobtížnější (Sieving) krok algoritmu NFS tak, aby faktorizace RSA modulu o délce 1024 bitů netrvala déle než 1 rok. Autoři představili návrh speciálního zařízení TWIRL [1] s odhadovanou cenou asi 10 miliónů dolarů (a dalších 20 na stavbu prototypu).
Firma RSA Security doporučila po vydání specifikace zařízení TWIRL použití délky modulu 1024 bitů jen v nejnutnějších případech. Český zákon o elektronickém podpisu chápe [17] tuto délku také jako minimální.
V současné době se běžně používají RSA klíče s délkou modulu 1024 nebo 2048 bitů. S podpisovými schématy tohoto typu pracují např. i české certifikační autority I.CA a PostSignum vydávající kvalifikované certifikáty.
Výše zmíněný jednoduchý model funkce RSA je do značné míry problematický v případě, kdy je třeba jej implementovat v prostředí s omezenými výpočetními možnostmi. RSA vyžaduje provádění operací umocňování mezi obrovskými čísly, což klade značné nároky na hardware nebo software v němž je RSA implementováno. Proto se při použití RSA pro šifrování nikdy nešifruje přímo a v případě elektronického podpisu se šifruje jen haš přenášené zprávy.
Nejnáročnější bežnou operací v případě RSA je umocňování modulo N dle vzorce x = yk mod N, , kde k vystupuje jako soukromý exponent d resp. veřejný exponent e podle příslušnosti ke klíči. Jednou z možností jak v RSA urychlit operace šifrování a dešifrování (v případě elektronických podpisů podepisování a ověření podpisu) je vhodná volba parametrů e a d.
Parametr e (veřejný klíč) lze volit jako malé číslo např. 3 [2], 17, 65537. Volba těchto a podobných čísel není náhodná, neboť všechny jsou v binární podobě tvořeny nulami, pouze na prvním a posledním bitu je 1. Takto elegantně zvolené číslo významně urychluje operaci umocňování.
Snižování velikosti exponentu e se běžně používá a je hlavním důvodem rychlosti RSA při šifrování nebo ověřování podpisu (umocňování exponentem e).
Dalo by se očekávat, že opačným přístupem, tj. snižováním velikosti exponentu d lze docílit snížení náročnosti operace dešifrování resp. vytvoření podpisu. Bohužel bylo dokázáno, že pro velikost d existuje hranice n0.292. Po jejím překročením lze soukromý klíč již snadno odhalit. Důkaz lze najít např. v [10].
Použití techniky CRT představuje způsob jak urychlit v RSA operaci umocňování soukromým klíčem (dešifrování nebo podepisování). Zjednodušeně CRT pracuje tak, že místo operace mod N, kde N = p.q, pracuje mod p a zároveň mod q. V obecné verzi pak CRT definuje k vzájemně nesoudelných faktorů modulu N.
Název CRT pochází z názvu čínské věty o zbytku, jejíž přesné znění lze najít v materiálech zabývajících se teorií čísel.
Při použití CRT se mění formát soukromého klíče z dvojice na pětici (p, q, dP, dQ, qInv), kde jednotlivé položky mají význam:
p a q jsou uschovaná vygenerovaná prvočísla z bodu 1 popisu principu RSA.
dP = d mod (p - 1)
dQ = q mod (q - 1)
qInv, inverze k číslu q, tak že platí q.qInv = 1 (mod p)
dP a dQ se nazývají CRT exponenty a qInv CRT koeficient (volí se náhodně). Všechny tyto hodnoty se předpočítají dopředu a uloží se spolu se soukromým klíčem. Hodnoty dP a dQ je nutné utajovat stejně dobře jako soukromý klíč. Použití CRT klade také podmínku p > q (v opačném případě by nefungoval třetí krok níže zmíněného postupu). Pokud při generování p a q vyjdou čísla špatně, jednoduše se prohodí.
Proces šifrování/ověřování podpisu zůstává stejný, neboť veřejný klíč se nemění.
Proces dešifrování/vytvoření podpisu je modifikován takto:
m1 = cdP mod p
m1 = cdQ mod q
h = qInv(m1 - m2) mod p
M = m2 + hq
Význam této modifikace pro RSA spočívá ve významném snížení velikosti exponentu při provádění operace umocňování. Zrychlení lze odhadnout jako počet prvočíselných faktorů na druhou. Pro základní formu RSA se dvěma faktory jde o čtyřnásobné zrychlení operace dešifrování/vytvoření podpisu. Operace umocňování lze také provádět paralelně a docílit tak dalšího zrychlení na multiprocesorových platformách.
Multi-prime RSA nebo někdy multi-factor RSA je další variantou RSA. Rozdíl oproti základnímu principu je v bodu 1, kdy se negenerují dvě, ale tři nebo více prvočísel. Modul se pak počítá jako jejich součin např. N = p.q.r.
Teoretické zrychlení dešifrování takto modifikovaným RSA lze zapsat vztahem b2/4, kde b je počet prvočíselných částí modulu N. Pro tři prvočísla vychází teoretické zrychlení na 2.25, přičemž v praxi se daří docílit zhruba dvojnásobného zrychlení.
Multi-prime RSA je v současné době patentováno jako US Patent 5848159.
Podrobný popis fungování Multi-prime RSA lze nalézt v [18].
RSA podpis je součástí mnoha standardů [29]. ISO (Internation Standards Organization) specifikuje podpis v současné verzi standardu ISO/IEC 9796-2:2002. RSA je také součástí mezinárodního bankovního standardu pro zasílání zpráv SWIFT, francouzského bankovního standardu ETEBAC 5. Organizace IEEE specifikuje RSA ve standardu IEEE P1363 a P1363a. Nejčastěji se lze setkat se standardem pro americký finanční sektor ANSI X9.31 a standardy PKCS přímo od firmy RSA Security.
V prostředí EU se lze s RSA setkat ve specifikaci ETSI TS 102 176-1 Algorithms and Parameters for Secure Electronic Signatures Hash functions and asymmetric algorithms definující algoritmy a další postupy pro vytváření digitálních podpisů. Norma nedefinuje vlastní schémata, ale odkazuje na dvě podpisová schémata PKCS #1 v1.5 a PKCS #1 PSS z PKCS #1 [24]. Protože PKCS standardy neobsahují metody pro generování klíčů, definuje si tato specifikace své vlastní
V českém prostředí platí Výklad k příloze č. 2 vyhlášky č. 366/2001 Sb. [17], který obsahuje v případě RSA zhruba to samé co norma ETSI.
Americký standard FIPS-186-2 [23] povoluje RSA podpis dle normy ANSI X9.31. Draft standardu FIPS-186-3 [61] pak bude pravděpodobnost povolovat i schémata ze standardu PKCS #1 a to PKCS #1 v1.5 a PKCS #1 PSS.
Standard ANSI X9.31 v současné verzi z roku 1998 [20] definuje podpisové schéma založené na algoritmu RSA. Podpisové schéma je deterministické, pro stejné zprávy generuje stejné podpisy.
Generování prvočísel je založeno na pravděpodobnostním Rabin-Millerově algoritmu stejně jako v případě standardu FIPS-186. Pro vstup Rabin-Millerova algoritmu se používají náhodná nebo pseudonáhodná čísla. Lze použít pouze postupy pro generování náhodných nebo pseudonáhodných čísel specifikované v příloze standardu. ANSI X9.31 vyžaduje aby vygenerovaná prvočísla byla tzv. silná prvočísla (strong primes). U vygenerovaných čísel p a q se testuje, zda čísla (p + 1), (p - 1) a (q + 1), (q - 1) mají alespoň jeden velký (více než 100 bitů) faktor. Tento požadavek byl předmětem různých diskusí, neboť je považován v současné době za zbytečný. Faktorizační metody pokročily natolik, že smazaly výhody silných prvočísel . Názor RSA Laboratories lze nalézt v [32].
Minimální délka RSA modulu je stanovena na 1024 bitů. Generování klíčů začíná od veřejného exponentu e. Soukromý modul d je pak odvozen z veřejného dle již zmíněného principu fungování RSA.
U RSA algoritmu je v každé implementaci nutné doplňovat haš zprávy před podpisem dalšími daty celkem na délku modulu N. Standard ANSI není výjimkou. Haš zpravy k podpisu se upravuje podle následujícího formátu:
padded(M) = 6b bb ... bb ba || hash(M) || 3x cc
Jednotlivé hodnoty mají význam:
padded(M) doplněný haš k podepsání
hash(M) je původní haš zprávy délky 160 bitů
x nabývá hodnoty x = 3 pokud je použita hašovací funkce SHA-1 a x = 1 pro RIPEMD-160.
Podpis zprávy je vytvořen šifrováním hodnoty padded(M).
Ověření podpisu proběhne jako vytvoření haše podepsané zprávy a jeho úprava do stejného tvaru jako před podepsáním. Následně se porovná s dešifrovaným podpisem zprávy.
Toto podpisové schéma se objevilo v původní verzi standardu PKCS #1 z počátku 90. let a používá se dodnes. Ve standardu se nijak nedefinuje způsob jak generovat náhodná čísla, ani následná prvočísla. Podpis je deterministický.
Modul N je definován jako součín dvou nebo více prvočísel. Veřejný exponent e je celé číslo v uzavřeném intervalu 3 až (n - 1). Soukromý klíč může být specifikován v CRT formě. Minimální délka modulu N není stanovena.
Stejně jako u ANSI X9.31 provádí i PKCS1 v1.5 doplnění (padding) na délku modulu N v tomto formátu:
padded(M) = 00 01 FF ... FF 00 || hashid || hash(M)
padded(M) doplněný haš zprávy připravený k podpisu
hashid identifikátor použité hašovací funkce
Podpis zprávy proběhně šifrováním hodnoty padded(M).
Ověření podpisu proběhně jako vytvoření haše podepsané zprávy a jeho úprava do stejného tvaru jako před podepsáním. Následně se porovná s dešifrovaným podpisem zprávy.
RSA Laboratories doporučují nahradit toto poměrně jednoduché podpisové schéma podstatně složitějším PSS schématem. PSS schéma je odolnější proti útokům postranními kanály a byla pro něj dokázána přímá závislost na RSA problému (za určitých předpokladů týkajících se použitých hašovacích funkcí, detail viz. [70]). Doporučení také vychází z popsaného úspěšného útoku na příbuzné PKCS schéma týkající se šifrování zpráv. I když jsou útoky proti tomuto podpisovému schématu zatím jen teoretické, doporučuje se u nově vytvářených aplikací přejít na PSS. V současné verzi standardu PKCS #1 v2.1 je podpisové schéma PKCS #1 v1.5 uvedeno jen pro zachování kompatibility s existujícími aplikacemi.
Zmínka o podpisovém schému PSS (Probabilistic Signature Scheme) se poprvé objevila ve standardu PKCS #1 v2.0 a schéma se objevilo ve verzi 2.1. Oproti původnímu podpisovému schématu je podstatně robustnější a složitější. Vnáší do procesu vytváření podpisu určité množství náhodných prvků, které jsou pak svázány s hašem zprávy a při přijetí zprávy je celek kontrolován na konzistenci. Podpis stejných zpráv se liší v závislosti na přidaných náhodných datech (tzv. salt) a použité maskovací funkci MGF.
Parametry vstupující do procesu podpisu jsou k jako délka RSA modulu, H jako hašovací funkce. Předpokládá se, že její výstup má délku kratší než k. MGF je maskovací funkce, která pro vstup (x, i), kde x je řetězec bytů, vrací celočíselný řetězec o i bytech. Posledním volitelným parametrem je délka saltu .
Maskovací funkcí MGF se v následujícím textu rozumí pseudonáhodná funkce, která má jako vstup libovolný bajtový řetězec, a vrací řetězec zadané délky. Řetězec je pro stejný vstup vždy stejný. Funkce je většinou založena na hašovacích funkcích. Konkrétně v případě PKCS #1 je pro MGF k dispozici pouze SHA-1.
Pro podepisovanou zprávu M se vypočte hodnota haše H(M), doplní se osmi nulovými byty a náhodně vygenerovaným saltem . Vznikne mezikrok M' takto:
Dále je generován mezikrok s označením DB. Jeho součástí je náhodná posloupnost bytů PS (může být i nulové délky), salt zůstává stejný. Celková délka DB je k - h_len0 - 1 bytů. Proměnná h_len označuje délku haše.
Poslední mezikrok EM' vznikne následujícím spojením:
Mezi DB a výstupem maskovací funkce se provádí operace XOR.
Zakódovaná posloupnost EM vznikne nulováním prvních 8 bytů z řetězce EM' zleva.
Výsledný řetězec EM má délku k bytů a je rovnou podepisován příslušnou podepisovací funkcí.
Pokud se M' rovná položce H z dekódovaného podpisu, je podpis platný.
V srpnu roku 1991 navrhnul americký NIST (The Natinal Institute of Standards and Technology) nový standard pro vytváření elektronického podpisu. Návrh standardu nesl název DSS je veden pod označením FIPS-186 (Federal Information Processing Standard).
V návrhu byly zmíněny tyto cíle:
Použití asymetrických kryptografických technik pro zajištění integrity a autentizace podepsané osoby.
Snadná implementace jak v hardware, tak v software. Možnost exportu mimo USA (nikoliv ovšem volného export reguluje Ministerstvo obchodu). Zmiňuje také možnost efektivní implementace DSA v čipových kartách.
Volná použitelnost kýmkoliv. Míní se tím absence použití patentem chráněných technologií, jejichž použití vyžaduje platbu licenčních poplatků. Tento bod nesplňoval například algoritmus RSA.
V roce 1994 byl nakonec tento návrh přijat jako standard [8] pro práci s informacemi bez označení stupně utajení (unclassified information). V roce 2000 pak byl do standardu přidán i zmíněný algoritmus RSA (ve stejné době vypršel i patent na RSA) odkazem na standard ANSI X9.31.
Základem FIPS-186 byl v původní verzi pouze jeden algoritmus označený jako DSA (Digital Signature Algorithm). Zveřejnění návrhu vyvolalo tehdy řadu rozporuplných reakcí:
Algoritmus DSA nelze už z jeho principu použít pro šifrování a zajištění důvěrnosti přenášených zpráv. Princip činnosti DSA je od základu jiný než v případě reverzibilní (zašifrovaný obsah lze dešifrovat) šifry jako je RSA.
DSA byl vyvinut za zavřenými dveřmi a ve spolupráci s organizací NSA , což vyvolalo určitou míru nejistoty, zda DSA neobsahuje zadní vrátka. DSA je také patentován jako U.S. Patent 5,231,668 a jako objevitel v něm figuruje bývalý zaměstnanec NSA David W. Kravitz a jako vlastník Spojené státy americké. Patent je ale dán k volnému použití.
Původní návrh přímo zmiňoval jako jeden z důvodů výběru DSA rychlost operace podepisování oproti pomalejší operaci ověřování podpisu. Oproti tomu kritici DSA oponovali tvrzením, že operace ověřování podpisu je podstatně častější než podepisování.
Tuto vlastnost DSA také rozebírá firma RSA Laboratories na svých WWW stránkách [32], kde odkazuje na materiály zabývající se porovnáním rychlostí obou kryptosystémů.
Problémem bylo i značně rozšířené RSA. Tehdy šlo patentovaný algoritmus, zhruba dvě třetiny velkých firem [7] měly na RSA koupenou licenci. V této souvislosti se také objevily návrhy pojmout jako standard mezinárodní ISO 9796, pro elektronický podpis využívající RSA algoritmus.
DSA je založen na obtížnosti rešení problému diskrétního logaritmu v konečných grupách s násobením v Zn. Pro jednoduchost si lze problém představit takto. Je definována grupa G a ní operace násobení *. Např. operace g3 v ní odpovídá provedení operace g*g*g. Problém diskrétního logaritmu je určen rovnící gx = h, kde g i h jsou známé a úkolem je najít hodnotu x. Zapisuje se jako x = logg h. První kryptosystém využívající problém diskrétního logaritmu popsali Diffie a Hellman v roce 1976 v návrhu protokolu pro ustavení sdíleného klíče. V roce 1984 byl navržen na stejném základě algoritmus El-Gamal pro šifrování a podpis.
Příklad 3.1. Příklad úlohy nalezení diskrétního logaritmu:
Parametry: | n = 17 (počet prvků grupy), g = 3, h = 13 |
Úkol: | 3x = 13 (mod 17), úlohou je najít x. |
Řešení: | x = 4, nebli 4 = log313, protože 34 = 13 (mod 17) |
Z popisu parametrů DSA je patrné, že řešení problému diskrétního logaritmu v případě DSA implikuje řešení problému zjištění hodnoty soukromého klíče z veřejného klíče. Obdobně jako u faktorizace velkých složených čísel chybí stále u diskrétního logaritmu důkaz, že jde skutečně o těžký problém. Mezi nejlepší algoritmy řešící problém diskrétního logaritmu patří rošířená varianta algoritmu Number Field Sieve pracující se subexponenciální složitostí.
Parametry DSA
p prvočíslo délky L bitů, kde číslo L bitů, kde L nabývá délky mezi 512 a 1024 bity a je násobkem 64. S číslem L se lze obecně setkat ve FIPS 186 standardu jako označením délky klíče v DSA a hraje stejnou roli jako N v případě RSA.
q prvočíslo délky 160 bitů, jenž je dělitelem čísla (p - 1). Tento parametr určuje budoucí velikost soukromého klíče.
g číslo z otevřeného intervalu (2, p-2), které má v Zp* řád q.
Klíče
Soukromý klíč x je libovolné celé číslo z intervalu <1, q -1>
Veřejný klíč se odvozuje ze soukromého klíče výpočtem y = gx mod p.
Trojice (p, q, g) se zveřejní. Jejich integrita ale musí zůstat zachována, neboť podstrčením vhodných parametrů oběti může útočník získat z prvního (nepovedeného) podpisu hodnotu soukromého klíče. Popis útoku lze najít v článku [75].
Soukromý klíč x zůstane utajen.
Vytvoření podpisu
Pro vytvoření podpisu zprávy M je třeba znát hodnoty p, q a g a soukromý klíč x odesílatele zprávy.
Vypočte se otisk zprávy h(M).
Spočítá se první část podpisu:
r = (gk mod p) mod q
A druhá část podpisu:
s = (h(M) + x.r).k-1) mod q
k je tzv. klíč zprávy. Platí pro něj, že k.k-1 mod q = 1, a je to náhodně vygenerované celé číslo z intervalu <1, q-1>.
Číslo k se také označuje jako klíč zprávy nebo nonce (number used once). Musí být pro každý podpis generováno znovu a po každém použití zapomenuto. Dvě různé zprávy podepsané stejnou osobou nesmí použít stejné k. Nelze připustit ani situaci, kdy útočník odhalí byť i jen několik bitů čísla k. Velmi zajímavý útok na konkrétní implementaci DSA v čipových kartách využívající právě odhadu několika bitů čísla k byl popsán v [9].
Podpis je dvojice (r, s) a formátuje se jako řetězec dvou 160-bitových čísel. Podepsaná zpráva je pak trojicí (M, r, s).
Ověření podpisu
Pro ověření podpisu je opět třeba znát hodnoty (p, q, g) a veřejný klíč y odesílatele zprávy.
Přijatá zpráva je opět nějaká trojice (M', r', p'). Příjemce zprávy nejprve ověří, zda 0 < r' < q a 0 < s' < q (dvě 160-bitová čísla v případě normy FIPS-186-2). Pokud tomu tak není, je podpis zprávy odmítnut.
Příjemce dále vypočítá
w = (s')-1 mod q
u1 = h(M').w mod q
u2 = r'.w mod q
v = (g(u1).y(u1) mod p) mod q
Pokud platí, že v = r', pak je podpis platný. Podrobný důkaz tohoto tvrzení lze najít v [8].
V případě, že v <> r', došlo buď k modifikaci zprávy, nebo ji podepsal někdo jiný nebo byla chybně podepsána. V takovém případě je podpis zprávy odmítnut.
Pro generování náhodných čísel potřebných pro vytváření klíčů a klíčů zpráv definuje standard FIPS-186 povolené algoritmy pro generování náhodných čísel (parametry g a k) a klíčů (parametry p a q). Standard nepovoluje žádné jiné metody.
Parametr L zmíněný v úvodu popisu principu DSA hraje v algoritmu podobnou roli jako parametr N v případě RSA. Jeho velikost přímo určuje míru práce jakou by útočník musel vynaložit při pokusu o prolomení algoritmu. Míra poskytnuté bezpečnosti je pro stejnou velikost L v případě DSA a N v případě RSA přibližně stejná [11]. V původním návrhu se počítalo s jeho pevně danou velikostí pouhých 512 bitů, což vyvolalo značnou kritiku. NIST pak ve finální verzi [5] určil tento parametr jako volitelný a to až do velikost 1024 bitů. V blízké době [11] a s předpokládaným vznikem další verze normy FIPS 186-3 se počítá s dalším zvětšováním tohoto parametru až na masivních 15360 bitů.
Parametr q přímo souvisí s podepisováním. Protože je dle standardu volen jaké malé číslo, značně urychluje operaci vytváření podpisu. V budoucnu se počítá se zvyšováním jeho velikosti dle tabulky 3.1 Přibližné srovnání délek klíčů v bitech (srpen 2005) (kde je označen jako N) až na velikost 512 bitů. Velikost soukromého klíče přímo souvisí s použitou hašovací funkcí, jejíž výstup musí být stejně dlouhý.
V roce 1985 přišli Victor Miller (IBM) a Neil Koblitz (University of Washington) s nápadem přenést problém diskrétního logaritmu na eliptické křivky. Ve stejném roce založil Scott Vanstone v kanadském Ontariu společnost Mobius, později přejmenovanou na Certicom. Certicom se začal eliptickým křivkám věnovat komerčně a v současné době vlastní okolo 130 patentů týkajících se eliptických křivek. Rozhovor s jedním ze zakladatelů Certicomu lze nalézt v [65].
Poměrně zajímavý krok učinila v roce 2003 organizace NSA, když za částku 25 miliónů dolarů koupila od Certicomu licenci na 26 patentů týkajících se eliptických křivk. Součástí je i možnost předat práva k implementaci postupů dalším výrobcům. NSA prý licenci použije výhradně pro produkty týkající se národní bezpečnosti, armády a NATO.
V budoucnu tedy lze počítat s dalším rozvojem kryptografie na bázi eliptických křivek a samozřejmě i elektronického podpisu postaveného na této technologii
Eliptická křivka nad reálnými čísly je definovaná jako množina bodů splňujících rovnici y2 = x3 + ax + b , kde x, y, a, b jsou reálná čísla a volbou parametrů a, b lze dostat různé eliptické křivky. Pokud platí rovnice 4a3 + 27b2 0, pak lze eliptickou křivku využít k vytvoření grupy. Nulový bod se definuje jako nekonečno. Příklad eliptické křivky y2= x3 - 5x + 20 je na obrázku 3.2 Příklad eliptické křivky
Sčítání dvou různých bodů P a Q na eliptické křivce, kde P je různé od Q probíhá následujícím způsobem. Vytvoří se přímka protínající oba body P a Q. Tato přímka protne eliptickou křivku také v bodě -R. Bod se stejnými souřadnicemi, pouze s opačným znaménkem u souřadnice y, se označuje R. Bod -R je opačný k bodu R. Výsledná operace se pak definuje jako P + Q = R. Příklad sčítání je na obrázku 3.3 Sčítání dvou různých bodů na eliptické křivce .
Nulový bod vznikne sečtením bodů P a -P. V takovém případě neprotne spojnice obou bodů křivku v žádném dalším bodě a skončí z definice v nulovém bodě tj. v nekonečnu.
Sčítání za situace, kdy P = Q je vlastně operací násobení jednoho bodu konstantou a má zásadní význam pro pozdější přenesení problému diskrétního logaritmu na eliptické křivky. Geometricky proběhne násobení bodu P jako položení tečny k eliptické křivce v bodě P a vyhledání výsledného bodu stejně jako při operaci sčítání. Operace se pak definuje jako P + P = 2P = R. Zvláštní případ nastane pokud má bod P souřadnici y rovnu nule. Pak je výsledkem operace nulový bod. Průběh násobení je znázorněn na obrázku 3.4 Násobení bodu na eliptické křivce .
Protože definovat kryptografické operace nad eliptickými křivkami nad reálnými čísly by bylo nepratické, používá se v praxi struktura konečných těles.
Konečné těleso Fp je struktura obsahující právě p prvků. Pro každé prvočíslo p je určena právě jedna struktura Fp, kterou lze reprezentovat výčtem prvků např. {{0, 1, ..., p - 1}.
Operace sčítání a násobení jsou přitom definované takto:
Sčítání. Jestliže jsou a, b prvky Fp, pak výsledkem operace a + b je číslo c, které je prvkem Fp, a platí pro něj a + b = c ( mod p).
Násobení. Jestliže jsou a, b prvky Fp, pak výsledkem operace a * b je číslo c, které je prvkem Fp, je z intervalu (0, p - 1) a platí pro něj a * b = c ( mod p ).
Nulou v této definici je celé číslo 0 a jedničkou celé číslo 1. Obdobně se definuje i odečítání jako přičítání opačného prvku, kde výsledkem operace je nula a dělení jako násobení inverzním prvkem, kde výsledkem operace je 1.
Eliptickou křivku na tělese Fp tvoří všechny body splňující rovnici křivky vzhledem k parametrům a, b. Opět pokud platí podmínka 4a3 + 27b2 0, pak lze eliptickou křivku využít ke zformování grupy. Eliptická křivka má pak spolu s nulovým prvkem konečný počet prvků. Materiál [59] obsahuje v sekci 3.3 zajímavý model v javascriptu umožňující definici vlastní eliptické křivky na konečném tělese a demonstraci operací násobení konstantou a sčítání.
Těleso F2m lze považovat za vektorový prostor dimenze m nad tělesen F2, které se skládá z prvků 0 a 1. Proměnná m by měla být prvočíslo. Původní verze ANSI X9.62 z roku 1998 tento požadavek neobsahovala, novější z roku 2005 už ano. Vektorový prostor může mít mnoho různých bází, v praxi se používá normální báze a polynomiální báze. Operace v tomto tělese probíhají na bitových řetězcích, proto mohou být velmi efektivně implementovány. Jejich poměrně složitý popis, který přesahuje zaměření této práce, lze najít v draftu standardu pro eliptické křivky ANSI X9.62 [60] nebo tutoriálu firmy Certicom Inc. [59].
Definice. Řádem eliptické křivky E se rozumí celkový počet bodů této křivky a značí se #E. Řádem bodu P se rozumí nejmenší možné přirozené číslo n pro které platí nP = O, kde O je nulový bod.
Problém diskrétního logaritmu nad eliptickou křivkou (ECDLP Elliptic curve discrete logarithm problem), na kterém je ECDSA založeno, je následující úloha:
Je dána eliptická křivka E nad konečným tělesem. Bod P je prvkem E. Dále je zadán bod Q, takový, že platí Q = xP, a x je menší než řád prvku P a platí 1 x < n - 1. Úkolem je nalézt hodnotu x. Úloha je v podstatě stejná jako v případě problému DSA (viz. Problém DSA ), jen se změní operace umocňování g.g.g ... .g = gx na násobení P + P + P + P ... + P = x.P
Nalezení hodnoty x pro velké hodnoty P je v současné době považováno za obtížný problém.
Parametry systému mohou být veřejné, bezpečnost tím není ohrožena. Problém může nastat v případě, pokud stejné parametry sdílí několik uživatelů dohromady. V případě, že tyto parametry jsou pak použity pro vygenerování různých k klíčů, klesá obtížnost prolomení klíčů na úroveň prolomení k -násobku času pro prolomení jednoho klíče.
V případě, že se pro generování náhodných hodnot používají pseudonáhodné generátory, je možné se soukromým klíčem uložit i iniciální hodnotu pseudonáhodného generátoru (tzv. SEED), pro pozdější verifikaci vygenerovaných parametrů. Protože lze takto generovat i soukromý klíč, platí pro ochranu SEED stejná pravidla jako pro soukromý klíč.
Standard ANSI X9.62 [60] povoluje tři druhy parametrů:
Pro konečné těleso Fp, kde p je liché prvočíslo.
Pro konečné těleso F2m.
Pro tzv. Koblitzovy křivky speciální podmnožinu varianty 2.
prvočíslo p > 3, délky např. 163 bitů, která odpovídá délce RSA klíče o 1024 bitech.
Parametry a, b prvky Fp pro definici rovnice eliptické křivky y2 = x3 + ax + b .
Bod P, definovaný souřadnicemi x, y. P je různý od nulového bodu O. Pro řád n bodu P musí platit n > 2160, n > 4q. Pro řád bodu P platí, že je dělitelem řádu křivky E. Obvykle se volí co největší.
Volitelně je součástí parametrů i hodnota kofaktoru h = #E/n.
Číslo p = 2m definujici velikost příslušného tělesa F2m.
Označení použité báze a příslušný redukční polynom stupně m v případě, že nejde o bázi v Gaussově normálním tvaru.
Parametry a, b prvky Fp pro definici rovnice eliptické křivky y2 + xy = x3 + ax + b . Při použití Koblitzových křivek je rovnice pozměněna na y2 + xy = x3 + ax + 1 .
Bod P, definovaný souřadnicemi x, y. P je různý od nulového bodu O. Pro řád n bodu P musí platit n > 2160, n > 4p. Pro řád bodu P platí, že je dělitelem řádu křivky E. Obvykle se volí co největší.
Volitelně je součástí parametrů i hodnota kofaktoru h = #E/n.
Kofaktor se volí co nejmenší. Standard ANSI X9.62 minimální velikost nespecifikuje, standard FIPS 186-2 doporučuje křivky s kofaktory hodnot 1, 2 a 4.
Vygeneruje se náhodné číslo d v intervalu (1, n - 1).
Vypočítají se souřadnice (x, y) bodu Q, jako d-násobek parametru P. Q = (xQ, yQ) = dP.
Z hodnoty P se stane veřejný klíč. Hodnota d bude soukromým klíčem.
Pro podepisovanou zprávu M se spočítá haš h(M).
Vygeneruje se náhodné číslo k z intervalu (1, n - 1). Stejně jako v případě DSA, musí být toto číslo skutečně náhodné a musí být voleno z celého intervalu (1, n - 1).
Spočítá se součin k a P jako (x1,y1) = kG.
Spočítá se hodnota r = x1 mod n. Pokud vyjde nulová hodnota (pravděpodobnost je 1/n), opakuje se postup od generování čísla k.
Spočítá se druhá část podpisu s = k-1(h(M) + dr) mod n.
Pokud vyjde s nulové (pravděpodobnost je 1/n), začiná se opět znovu od generování k.
Výsledný podpis tvoří dvojice (r, s). Délka podpisu je dvojnásobkem délky klíče.
ECDSA v současnosti potřebuje podstatně menší délku klíče pro dosažení stejné úrovně bezpečnosti než srovnatelné algoritmy DSA a RSA. Tabulka 3.1 Přibližné srovnání délek klíčů v bitech (srpen 2005) , kterou lze najít v [11], ukazuje srovnání velikostí klíčů čtyř přístupů:
Symetrické algoritmy (např. TDEA, AES).
Asymetrické algoritmy založené na diskrétním logaritmu (např. DSA), kde L označuje délku prvočíselného modulu p a N pak délku soukromého klíče.
Asymetrické algoritmy založené na prvočíselném rozkladu (např. RSA), kde k označuje délku klíče.
Asymetrické algoritmy založené na eliptických křivkách (např. ECDSA), kde f označuje řád bodu P.
Tabulka 3.1. Přibližné srovnání délek klíčů v bitech (srpen 2005)
Sym. šifry | DSA | RSA | ECDSA | Bezpečné do roku |
---|---|---|---|---|
80 | L = 1024, N = 160 | k = 1024 | f = 160-223 | 2010 |
112 | L = 2048, N = 224 | k = 2048 | f = 224-255 | 2030 |
128 | L = 3072, N = 256 | k = 3072 | f = 160-223 | 2030 |
192 | L = 7680, N = 384 | k = 7680 | f = 384-511 | 2030 |
256 | L = 15360, N = 512 | k = 15360 | f = 512+ | 2030 |
Porovnání rychlostí ECDSA s ostatními kryptosystémy je velmi obtížné, neboť v ECDSA se používají různé operace v závislosti na použitém konečném tělese. Srovnání rychlosti ECDSA a RSA lze nalézt v materiálu firmy RSA Laboratories (je otázkou zda je objektivní). Operace šifrování (ověřování) podpisu vychází u ECDSA až 8-krát pomalejší než u RSA. V RSA se samozřejmě uplatňuje použití velmi malého exponentu. Naopak dešifrování a vytváření podpisu vychází 6 až 7-krát rychlejší pro ECDSA.
ECDSA lze významně urychlit použitím konečného tělesa F2m. Takto lze implementovat ECDSA i na čipové kartě bez speciálního koprocesoru. Implementace ovšem narazí na patent firmy Certicom Inc., který se týká práce ECDSA nad konečnými tělesy F2m s normální bází.
Materiály firmy Certicom tvrdí, že lze zrychlit operaci ověřování podpisu a šifrování tak, že je srovnatelně rychlá z RSA.
Metodu urychlení operace ověřování podpisu lze najít např. v práci [65].
V porovnání se systémem DSA bude operace vytváření podpisu a dešifrování v implementaci nad Fp o něco rychlejší, neboť použitý soukromý klíč je oproti DSA menší. Operace ověřování podpisu a šifrování budou výrazně rychlejší kvůli malé délce veřejného klíče, neboť DSA v takovém případě používá stejně dlouhý klíč jako délka modulu ekvivalentně silného RSA.
Popsaná varianta ECDSA není prokazatelně bezpečné schéma. Existují varianty ECDSA prokazatelně bezpečné za předpokladu, že je bezpečný i problém diskrétního logaritmu.
Pro řešení problému diskrétního logaritmu v prostředí eliptických křivek neexistuje v současné době algoritmus se subexponenciální ani polynomiální složitostí. Nejrychlejším algoritmem řešícím ECDLP je zatím Pollardova rho metoda pracující s exponenciální obtížností n. Metoda pracuje při jakékoliv reprezentaci ECDSA a lze ji paralelizovat.
Volená křivka nesmí být singulární. Tento případ se většinou ošetřuje už při volbě parametrů, kdy např. v Fp nesmí platit 4a3 + 27b2 0.
Křivka také nesmí být supersingulární, jinak by bylo možné problém ECDLP převést na problém diskrétního logaritmu se subexponenciální složitostí. Např. v Fp nesmí platit, že p = #E - 1.
Pokud platí v Fp, že #E = p, pak lze problém ECDLP efektivně řešit. Anomální křivky se proto při generování parametrů systému vyřazují. Útoky využívající tento problém nelze přenést na jiné eliptické křivky.
Klíč zprávy k musí být jiný pro každou podepisovanou zprávu a jeho hodnota se nesmí nikde ukládat. I jeden odhalený klíč zprávy umožní útočníkovi zjistit hodnotu soukromého klíče podepisující osoby. Stejně tak dvě podepsané zprávy, u kterých byl použit stejný klíč zprávy k umožní útočníkovi zjistit hodnotu soukromého klíče podepisující osoby.
U křivek v F2m by mělo být m prvočíslo.
U křivek Fp, nesmí platit, že n dělí qB - 1 pro hodnotu B < 20. Pro hodnotu B menší než 20, by bylo možné převést problém ECDLP na efektivněji řešitelný problém diskrétního logaritmu .
U těles Fp se doporučuje volit hodnotu koeficientu a = (-3), což zaručuje hodnotu kofaktoru rovnu 1.
ECDSA je standardizováno organizací ANSI ve standardu ANSI X9.62 z roku 1998, aktualizovaného v roce 2005 [62]. ECDSA je ve formě odkazu na ANSI standard také součástí FIPS 186-2 [23]. Mezi další aktivity patří:
IEEE P1363-2000, 1363a, 1363.2
SECG Konsorcium firem zabývájících se eliptickými křivkami vydalo následující standardy SEC 1: Elliptic Curve Cryptography , SEC 2: Recommended Elliptic Curve Domain Parameters . Mají za úkol řešit zejména kompatibilitu mezi jednotlivými implementacemi.
ISO 15946
Ze zmíněných standardů je nejkonkrétnější standard FIPS 186-2, který doporučuje i použití konkrétních konečných prvočíselných těles a binárních těles.
Hašovací funkce jsou kryptografické funkce, které z jakéhokoliv vstupu vypočítají výstup (haš) pevné a krátké délky. Výstup je pro stejný vstup vždy stejný. Délka vstupu může být omezena, např. u SHA-1 na 264 bitů. Délka výstupu se pohybuje mezi 160 bity u funkce SHA-1 až k 512 bitům u funkcí SHA-512 nebo WHIRLPOOL. Hašovací funkce mají široké použití při vytváření elektronického podpisu, neboť podpis nějaké zprávy pomocí technik asymetrické kryptografie vždy probíhá jako podpis haše zprávy.
U výstupu hašovací funkce se předpokládají následující vlastnosti:
Je výpočetně nemožné najít z hodnoty haše původní zprávu. Tato vlastnost se nazývá jednosměrnost.
Je výpočetně nemožné najít jakékoliv dvě zprávy takové, že hodnoty jejich hašů se rovnají (kolize). Je také výpočetně nemožné najít k dané zprávě jakoukoli jinou zprávu se stejnou hodnotou haše. První podmínka je silnější, pokud ji funkce vyhovuje nazývá se bezkolizní.
Fakt, že kolize je obtížné najít, neznamená, že neexistují. Hašovací funkce má krátký výstup a možných hašů je vždy jen 2N, kde N je délka výstupu hašovací funkce v bitech. Okolní svět samozřejmě může nabývat hodnot větších než 160 bitů, proto množství vzájemně kolidujících zpráv je velmi veliké, ale stále zůstává problémem jejich nalezení.
V ideální formě se hašovací funkce chová jako náhodné orákulum (random oracle). Orákulum je zařízení, které pro libovolný vstup dává náhodný výstup vždy se stejnou pravděpodobností pro všechny možné prvky výstupní množiny hodnot. Jediným omezením je, že pro stejné vstupní hodnoty dává stejné výstupní hodnoty. Hašovací funkce by se měla chovat právě jako orákulum.
Současné hašovací funkce mají chování blízké náhodnému orákulu, bohužel dokonalé náhodné orákulum zatím stále chybí.
Nejpoužívanější hašovací funkcí je v současnosti SHA-1 publikovaná v roce 1993 nejprve jen jako SHA, později vylepšená a označená jako SHA-1. Původní verze se někdy označuje jako SHA-0. Funkce je standardizována organizací NIST v dokumentu FIPS 180. Funkce produkuje haše délky 160 bitů. Mezi ostatní používané hašovací funkce patří např. RIPEMD-160.
U popisu hašovacích funkcí se lze setkat s pojmem security bits , který je poloviční hodnoty než je délka haše. Označuje se jím míra úsilí, jakou je třeba vynaložit k nalezení dvou libovolných kolidujících zpráv. Uplatňuje se zde tzv. narozeninový paradox. Příkladem může být funkce SHA-1, kde pro nalezení kolize s pravděpodobností 50% je třeba vyzkoušet 1,17.280 možností.
U hašovací funkce SHA-1 se povedlo začátkem roku 2005 čínským kryptologům snížit obtížnost nalezení kolize na 269 operací a později téhož roku na 263 operací. Potvrdila se tak správnost aktuální snahy nahradit hašovací funkci SHA-1 jinou bezpečnější funkcí.
Americký NIST, který se věnuje standardizaci hašovacích funkcí v dokumentu FIPS 180-2 [78], vydal seznam doporučených hašovacích funkcí (viz. tabulka 3.2 Doporučené hašovací funkce z FIPS 180-2 , přičemž funkce SHA-1 je uvedena jen z důvodu kompatibility s existujícími systémy. NIST předpokládá ukončení používání funkce SHA-1 v roce 2010.
Tabulka 3.2. Doporučené hašovací funkce z FIPS 180-2
Algoritmus | Max. velikost zprávy (b) | Délka haše (b) | Security bits (b) |
---|---|---|---|
SHA-1 | < 264 | 160 | 80 |
SHA-224 | < 264 | 224 | 112 |
SHA-256 | < 264 | 256 | 128 |
SHA-384 | < 2128 | 384 | 192 |
SHA-512 | < 2128 | 512 | 256 |
Bezpečnost hašovacích funkcí je aktuálním problémem z několika důvodů. Zatím nebyla nalezena prokazatelně bezpečná hašovací funkce. Narůstají také obavy z definitivního prolomení SHA-1, které by mělo nepředstavitelné následky. Vhodný materiál zabývající se podrobně bezpečností hašovacích funkcí lze nalézt v [77].
Doporučené délky RSA klíčů a odhad jejích výdrže od organizace NIST lze nalézt v tabulce 3.1 Přibližné srovnání délek klíčů v bitech (srpen 2005) . Je nutné vzít k úvahu, že tyto předpovědi jsou většinou prosté lineární extrapolace. Počítají s platností Moorova zákona a s cenou, za jakou se vyplatí postavit specializované zařízení pro luštění RSA. Zároveň předpokládají, že se neobjeví žádný efektivnější algoritmus pro luštění RSA. Jak je vidět z následujících příkladů, historicky se velikost doporučených klíčů neustále zvětšuje.
Často citovaným příkladem je skupina francouzských bank (francouzské banky byly jedním z průkopníků zavádění čipových karet), která implementovala v roce 1983 systém založený na RSA s délkou klíče 320 bitů (asi 100 cifer). Tehdy se zdál systém bezpečný, nicméně číslo o sto cifrách bylo faktorizováno o osm let později v roce 1991.
V systému PGP se v roce 1996 pohybovaly délky klíčů od 512 do 1024 bitů, přičemž délka 1024 se konkrétně ve verzi 2.6.3i označovala jako Military grade .
Současná doporučená délka klíče je minimálně 1024 bitů. Aktivita NESSIE doporučuje délku klíče 1536 bitů. Celkově lze pozorovat zřetelný posun k délce 2048 bitů.
Při nasazení RSA je nutné zvážit některé vlastnosti RSA:
Délka podpisu v RSA roste lineárně s délkou klíče. Např. pro velikost klíče navrhovanou v horizontu 2030 produkuje RSA podpisy o délce 2 kB. I při dnešní délce podpisu přibližně 256 bytů (pro klíč délky 2048 bitů) jde o největší číslo z trojice algoritmů RSA, DSA a ECDSA.
V podepisování je RSA nejpomalejší ze všech třech algoritmů RSA, DSA i ECDSA. Důvodem je soukromý klíč, jehož velikost nelze zmenšovat. RSA proto používá různé triky např. CRT viz. CRT Chinese Remainder Theorem nebo Multiprime RSA viz. Multi-prime RSA . Pro implementaci na čipové kartě je ale ve všech případech nutná přítomnost speciálního koprocesoru, což karty prodražuje. Srovnáním rychlostí RSA proti ECDSA na čipové kartě se zabývá práce [69].
Ilustrační test rychlost RSA ve volně šířitelné implementaci Openssl na počítači s operačním systémem Linux (Centos 4.2) a procesorem Intel P4 3Ghz je v tabulce 3.3 Rychlost RSA operací v Openssl . Test orientačně zahrnul i navrhovanou délku RSA klíčů po roce 2030. Veřejný exponent byl vždy 65536. Použitá verze Openssl měla zakompilované maskování rychlosti RSA operací, kvůli nedávno objeveným útokům na soukromý klíč měřením doby šifrování. Dle tvůrců Openssl však jde o zpomalení v řádu jednotek procent. Openssl standardně používá CRT.
Tabulka 3.3. Rychlost RSA operací v Openssl
Délka klíče (bitů) | Generování klíčů | Podepisování | Ověření podpisu |
---|---|---|---|
2048 | 0,500 s | 0,040 s | 0,008 s |
4096 | 8,000 s | 0,200 s | 0,008 s |
8192 | 58,000 s | 1,250 s | 0,016 s |
15360 | 58 min | 8,745 s | 0,048 s |
Data v tabulce potvrzují některé všeobecné vlastnosti RSA a lze na jejich základě vyslovit následující doporučení:
Změny rychlosti RSA v závislosti na změně velikosti klíčů velmi zhruba odpovídají FAQ na WWW stránkách firmy RSA Security. Dle RSA Security se při zdvojnásobení délky klíče (veřejný exponent zůstává stejný) zpomalí operace ověřování podpisu čtyřikrát, operace podepisování osmkrát a operace generování klíčů šestnáctkrát.
RSA je extrémně rychlé v operaci ověřování podpisu a to i s poněkud absurdní délkou klíče 15360 bitů, neboť jde o triviální operaci umocnění na 65536. V rychlosti ověřování, pokud je spolehnutí na tvrzení firmy Certicom, je srovnatelné jen ECDSA. RSA lze tedy s výhodou použít v komunikaci s elektronických podpisem ve směru many to one . Příkladem může být např. server státní správy zpracovávající elektronicky podepsané žádosti, které mohou přijít kdykoliv a v jakémkoliv množství.
RSA je naopak značně pomalé (oproti eliptickým křivkám) v operaci podepisování, neboť se umocňuje na velmi velkou hodnotu soukromého klíče (i když Openssl používá CRT). Příkladem vhodného použití může být opět server státní správy, který rozesílá občanům podepsané zprávy. Server nebude rozesílat podepsané zprávy jen tak, ale vyhradí si pro rozesílání vhodnou dobu nebo přenechá podepisování a rozesílání na práci jinému serveru.
Problematickým bodem se stává implementace RSA na čipových kartách v okamžiku zvětšování klíče. Například v roce 2000 implementovalo klíč o délce 2048 bitů jen několik karet. V současné době je implementace 2048 bitového RSA v čipových kartách poměrně běžná a je otázkou zda se budoucnost vydá cestou dalšího zvětšování RSA klíčů nebo cestou eliptických křivek.
Pro nasazení RSA mluví zejména výsledek projektu NESSIE [67], který doporučuje jako primární podpisové schéma RSA-PSS (viz. Podpis dle PKCS #1 PSS ). Dalším silným argumentem je RSA problém a problém faktorizace velkých čísel, který ho implikuje. Jde o velmi dobře prozkoumané záležitosti, které odolávají úspěšně snahám o jejich prolomení více než čtvrt století. RSA algoritmus sám o sobě je velmi dlouho zkoumán, bylo v něm nalezeno velké množství potenciálních slabin souvisejících hlavně se špatnou implementací algoritmu. Fakt, že všem snahám zatím odolal je další velké plus. Posledním argumentem je všeobecná rozšířenost RSA, dobrá standardizace a zkušenosti s implementacemi.
Mezi nevýhody RSA lze zařadit právě zmíněnou citlivost na správnou implementaci a přeci jen také všeobecnou známost různých útoků na implementační slabiny.
Ilustrační test rychlosti DSA ve volně šiřitelné implementaci Openssl na počítači s operačních systémem Linux (Centos 4.2) a procesorem Intel P4 3Ghz je v tabulce 3.4 Rychlost DSA operací v Openssl na PC P4 3Ghz . Test orientačně zahrnul i navrhovanou délku DSA klíčů po roce 2030. Velikost soukromého klíče byla ve všech případech 160 bitů, neboť Openssl zatím neumí jeho velikost změnit.
Z tabulky vyplývá, že malá délka soukromého klíče oproti RSA zrychluje operaci podepisování. Rychlost ověření podpisu je významně pomalejší než RSA. Nejnáročnější operací v DSA je generování parametrů, neboť je nutné najít jedno prvočíslo v plné velikosti . RSA oproti tomu hledá dvě prvočísla poloviční velikosti a pak funguje s jejich součinem. Hledání vlastního klíče má jen marginální složitost, neboť jde o náhodné číslo délky 160 bitů. Veřejný klíč se pak vypočítá z hodnoty soukromého klíče jedním umocněním.
Tabulka 3.4. Rychlost DSA operací v Openssl na PC P4 3Ghz
Délka klíče (bitů) | Generování parametrů a klíčů | Podepisování | Ověření podpisu |
---|---|---|---|
2048 | 6,350 s | 0,016 s | 0,016 s |
4096 | 95,00 s | 0,034 s | 0,038 s |
8192 | 34 min | 0,100 s | 0,118 s |
15360 | 90 min | 0,398 s | 0,480 s |
Nasazení DSA se zatím řídí standardem FIPS 186-2 [23] v poslední verzi z roku 2000. Očekává se vydání verze FIPS 186-3, která je zatím ve formě draftu [61]. Standard přinese zejména zvětšení délek klíčů a bude se podrobně věnovat postupům pro ověřování parametrů a klíčů v DSA a ostatních šifrách.
Při nasazení DSA z hlediska bezpečnosti je třeba zvážit hlavně potenciální problémy, které mohou vzniknout při implementaci. Jsou to:
Pomalé generování parametrů a související nutnost validace parametrů, pokud je jejich generování přenecháno externímu zdroji.
Nutnost zajištění integrity parametrů DSA.
Nutnost zajištění utajení a neopakovatelnosti klíčů zpráv k.
Malá délka klíčů a s tím související malá výpočetní náročnost předurčuje ECDSA k nasazení v zařízeních s omezenou výpočetní kapacitou jako jsou čipové karty, mobilní telefony a podobná. Srovnání ECDSA a RSA na čipových kartách se věnuje práce [69], názor známého kryptologa Dana Boneha na navrhované standardy konsorcia SECG lze najít v [71]. Porovnání rychlostí SSL, konkrétně protokolů pro výměnu klíče založených na RSA a eliptických křivkách lze nalézt v materiálu [73].
Ilustrační test rychlost ECDSA ve volně šiřitelné implementaci Openssl na počítači s operačním systémem Linux (Centos 4.2) a procesorem Intel P4 3Ghz je v tabulce 3.5 Rychlost ECDSA operací v Openssl na PC P4 3Ghz . Test orientačně zahrnul i navrhovanou délku ECDSA klíčů po roce 2030. Pro test bylo nutné použít aktuální vývojovou verzi 0.9.9, neboť stabilní verze Openssl zatím ECDSA nepodporuje. Výsledné hodnoty jsou v podstatě neměřitelně malé a slouží jen pro srovnání ostatními algoritmy. Větší délky klíčů bohužel nejde použít, neboť Openssl zatím nemá možnost generovat parametry eliptických křivek a používá předdefinované křivky ze standardů ANSI, FIPS a SECG.
Tabulka 3.5. Rychlost ECDSA operací v Openssl na PC P4 3Ghz
Délka klíče (bitů) | Generování klíčů | Podepisování | Ověření podpisu |
---|---|---|---|
160 | 0,008 s | 0,008 s | 0.009 s |
224 | 0,008 s | 0,008 s | 0,009 s |
384 | 0,013 s | 0,016 s | 0,015 s |
571 | 0,036 s | 0,036 s | 0,070 s |
Pro získání relevantnějších dat zejména pro ilustraci vztahů mezi různými délkami klíče bylo nutné použít podstatně pomalejší PC P166Mhz s operačním systémem Linux (Centos 4.2). Ostatní parametry testu jsou stejné jako v předchozím případě. Výsledky jsou v tabulce 3.6 Rychlost ECDSA operací v Openssl na PC P166 Mhz
Tabulka 3.6. Rychlost ECDSA operací v Openssl na PC P166 Mhz
Délka klíče (bitů) | Generování klíčů | Podepisování | Ověření podpisu |
---|---|---|---|
160 | 0,161 s | 0,164 s | 0.169 s |
224 | 0,190 s | 0,192 s | 0,210 s |
384 | 0,273 s | 0,288 s | 0,312 s |
571 | 0,877 s | 0,890 s | 1,642 s |
V říjnu roku 2004 se objevila první implementace ECDSA (od firmy Certicom) schválená organizací NIST jako vyhovující standardu ECDSA dle specifikace FIPS 186-2. V současné době lze na seznamu schválených zařízení nalézt 24 položek.
V úvodu kapitoly o ECDSA byly zmíněny aktivity organizace NSA v souvislosti s eliptickými křivkami. Podpisový algoritmus ECDSA je v současné době součástí balíku tzv. Suite B algoritmů schválených a doporučených NSA pro ochranu klasifikovaných dat. (Suite A jsou algoritmy, které NSA utajuje). Ochrana klasifikovaných dat vyžaduje schválení příslušné implementace přímo od NSA. Pro data bez označení stupně utajení (unclassified) stačí schválení od organizace NIST. NSA zřejmě bude směrovat své aktivity s eliptickými křivkami do nejrůznějších aplikací ve výpočetně omezených prostředích to znamená do stené oblasti v jaké se doposud pohybovala firma Certicom.
Problém diskrétního logaritmu v eliptických křivkách má za sebou v současné době 20 let zkoumání a zatím zůstává obtížným problémem s exponenciální složitostí řešení. ECDSA může v současné době stále fungovat s délkami klíčů přibližně dvojnásobné velikosti než mají srovnatelné symetrické šifry [11]. V nejbližší budoucnosti lze tedy očekávat nasazení eliptických křivek v oblastech s omezenou výpočetní kapacitou. V delším časovém horizontu lze očekávat pomalý posun od tradičních schémat směrem k eliptickým křivkám. Pokud se mezitím neobjeví žádný algoritmus zásadně urychlující řešení problému diskrétního logaritmu v elitpických křivkách, lze jim předpovědět velkou budoucnost.
Z hlediska algoritmů a elektronických podpisů lze jednoznačně doporučit nasměrování největšího úsilí na správnou implementaci. Který algoritmus vybrat je až sekundární problém. Volba by měla vycházet z konkrétního zadání, které bude implementací řešeno. Např. pro širokou kompatibilitu a rychlé ověřování podpisu lze zvolit RSA. Pro implementaci v prostředí s velmi omezeným výpočetním výkonem pak eliptické křivky.
Pozornost je třeba věnovat také použitým hašovacím funkcím. Příkladem může být ještě donedávna používaná MD5, pro kterou už byly nalezeny postupy pro generování kolizí v řádu minut [76]. U aktuální široce využívané funkce SHA-1 (všechny certifikáty vydávané certifikačními autoritami v České republice) se předpokládá v dohledné době také prolomení. Příkladem může být standardizační organizace NIST, která vydala doporučení zastavit nasazování funkce SHA-1 a používat výhradně hašovací algoritmy ze skupiny SHA-2, konkrétně SHA-224, SHA-256, SHA-384 a SHA-512. Dalším příkladem může být už zmíněná skupina NSA Suite B algoritmů, která uvádí už jen dvě povolené funkce SHA-256 a SHA-384. V nových implementacích je proto třeba použít jiné algoritmy než SHA-1.
Z hlediska obecné bezpečnosti elektronických podpisů bude rozumné podpisové schéma pravděpodobně tím posledním místem, na které bude veden případný útok. Pravděpodobnější bude útok na implementaci podpisového schématu. Nejpravděpodobnější stále zůstává útok na získání soukromého klíče. Operace podepisování s použitím soukromého klíče by proto měla být vždy realizována zabezpečeným zařízením např. čipovou kartou. I když samozřejmě lze realizovat útok i na takový postup, jedná se významný posun proti stavu, kdy je soukromý klíč uložen jen tak na disku.
PKI (Public Key Infrastructure) je v souvislosti s elektronickým podpisem často skloňovaným pojmem. Český ekvivalent je Infrastruktura veřejných klíčů . Tvoří ji souhrn technických a organizačních principů spojených s udržováním životních cyklů kryptografických klíčů a certifikátů. Životní cyklus zahrnuje jejich vydávání, používání a odvolávání.
PKI má sloužit hlavně ke spolehlivému svazání identity entit a jejich veřejných klíčů. Způsob pojmenování entit vychází historicky z roku 1988, kdy organizace ITU-T (dříve CCITT) definovala standard X.500. Standard se zabýval vytvořením globální adresářové struktury, která měl být schopná zahrnout prakticky kohokoliv a přitom ho pojmenovat jedinečným jménem (DN distinguished name).
První adresářovou úrovní byla definice země (C Country), následovala organizace (O Organization), organizační jednotky (OU Organization Unit) a nakonec u jednotlivé osoby (CN Common Name)
Příklad 4.1. Příklad jedinečného jména v X.500
C=CZ, O=Masarykova Univerzita, OU=Fakulta Informatiky, CN=Petr Svoboda, E=xsvobod7@fi.muni.cz
Nad X.500 byl pak definovaný složitý protokol DAP (Directory Access Protocol), z něhož se později vyvinula odlehčená verze LDAP (Lightweight Directory Access Protocol).
Standard X.509 se stal součástí X.500 a specifikoval formát certifikátů a způsob ověřování podpisů certifikačních autorit v certifikátech. Certifikáty měly sloužit k zajištění přístupu do globálního adresáře. V současné době je formát X.509 nejběžnější formát certifikátu. Stále kopíruje hierarchickou strukturu X.500, identifikuje vlastníka certifikátu jedinečným jménem a rozlišuje nadřízené a podřízené certifikační autority.
Na obrázku 4.1 Struktura akreditovaných certifikačních autorit v České republice je struktura akreditovaných certifikačních autorit vydávajících kvalifikované certifikáty v České republice. I.CA funguje samostatně, Postsignum zvolila dvojúrovňovou hierarchii, kdy RootCA vydala certifikát QCA, která pak už vydává certifikáty jednotlivým fyzickým a právnickým osobám.
Certifikát X.509 v současné verzi 3 (od roku 1997) obsahuje tyto položky:
Číslo verze (v současné době 3).
Pořadové číslo (každá certifikační autorita má vlastní systém číslování).
Podpisové schéma (např. sha1WithRSAEncryption).
Jedinečné jméno vydávající certifikační autority
(dle X.500 - např.
C=CZ, CN=I.CA - Test CA, O=Prvni certifikacni autorita a.s.
)
Veřejný klíč (jeho druh a hodnota).
Rozšíření.
X.509 ve verzi 3 obohatil certifikáty o možnost definovat si vlastní rozšíření a dále možnost řídit akceptaci těchto rozšíření dle jednotlivých implementací. Rozšíření definovaná jako kritická musí být v aplikaci pracující s certifikátem implementována. Pokud nejsou, musí být certifikát odmítnut.
Některá z významných rozšíření jsou:
Pomocí toho rozšíření lze omezit použití certifikátu pro konkrétní účely. Rozšíření je tvořeno bitovým polem a různými kombinacemi bitů lze docílit velmi elegantního zjemnění v oblasti použití certifikátu. Aplikace pracující s certifikátem samozřejmě může fungovat tak, že omezení na použití certifikátu bude ignorovat. V takovém případě se uživatel certifikátu může snadno dostat do problémů, pokud bude nesprávné použití certifikátu posuzováno nezávislým arbitrem (např. soudním znalcem). Bitové pole je následující:
Umožňuje jen podpis.
Umožňuje jen ověření podpisu.
Šifrování klíčů (Při šifrování zpráv pomocí certifikátu příjemce se šifruje jeho veřejným klíčem symetrický klíč použitý k zašifrování zprávy).
Pro šifrování jiných dat než klíčů.
Nastavení tohoto bitu umožní uživateli podepisovat ostatní certifikáty a vytvořit si tak vlastně certifikační autoritu. Certifikační autority proto zpravidla tento bit nenastavují.
Veřejný klíč v certifikátu lze použít pro ověření pravosti zveřejněných seznamů zneplatněných certifikátů.
Příkladem může být např. testovací certifikát agentury I.CA, který má nastaveny tyto položky: Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment. Lze s ním tedy podepisovat a šifrovat e-maily.
Umožňuje přidávat ke jménu osoby např. adresy elektronické pošty.
Umožňuje přímo se odkázat na certifikační politiku autority a dále tak vymezit vhodné použití certifikátu.
Definuje omezení cesty po které může probíhat ověřování platnosti certifikátu. (např. omezení na délku certifikační cesty).
Má původ ve standardu pro zabezpečení elektronické pošty (PEM Privacy Enhanced Mail), proto je v ASCII formátu a vznikl pomocí kódování Base64. ASCII formát je dále obalen hlavičkami. Kromě certifikátu může obsahovat soukromé i veřejné klíče.
Příklad 4.2. Fragment certifikátu v PEM formátu
-BEGIN CERTIFICATE - MIIDYzCCAsygAwIBAgIJAPK2Nw+F4NefMA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNV ...
Binární formát pro klíče i certifikáty. Jeho překódováním do Base64 a obalením hlavičkami vznikne formát PEM. Standard ASN.1 se věnuje popisu dat a standard DER pak jejich uložení a transportu.
Čitelný formát. Je možné jej vytisknout a podepsat a může dobře sloužit jako např. důkaz u soudu.
Příklad 4.3. Příklad testovacího certifikátu I.CA (zkrácený výpis)
Certificate: Data: Version: 3 (0x2) Serial Number: 103946 (0x1960a) Signature Algorithm: sha1WithRSAEncryption Issuer: C=CZ, CN=I.CA - Test CA, O=Prvni certifikacni autorita a.s. Validity Not Before: Mar 10 07:59:15 2006 GMT Not After : Mar 24 07:59:15 2006 GMT Subject: C=CZ, CN=Petr Svoboda/emailAddress=xsvobod7@fi.muni.cz Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:b9:85:22:a0:33:15:fb:07:f9:53:90:ef:b3:ec: ... 1e:ff:33:6b:89:df:86:15:af Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 82:83:D2:04:7C:55:8D:1A:E4:47:B3:D8:56:... X509v3 Certificate Policies: Policy: 1.3.6.1.4.1.6625.1.1.3 User Notice: Explicit Text: Jen pro TESTOVACI ucely. (Only for TESTING purposes.) X509v3 CRL Distribution Points: URI:http://ca.ica.cz/test_ica.crl X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment S/MIME Capabilities: ......0...+....0050...*.H....*.H.. Signature Algorithm: sha1WithRSAEncryption 3e:de:f3:e5:ab:c8:01:02:fd:59:21:43:45:82:37:6e:99:bc: ... 37:73:3b:e4
Certifikát vzniká vygenerováním klíčů a žádosti o certifikát. Žádost je formálně definovaná struktura zahrnující už zmíněné identifikační údaje osoby, její veřejný klíč a je podepsána soukromým klíčem. V případě dvou současných českých certifikačních autorit si tento krok realizuje budoucí uživatel certifikátu sám pomocí dodané aplikace, která žádost o certifikát vygeneruje sama. S vygenerovaným souborem pak uživatel navštíví registrační autoritu, což je organizace pracující pro jednu nebo více certifikačních autorit, a má na starosti autentizaci uživatele.
Pro simulaci tohoto procesu je možné použít volně šířitelný software Openssl, kde lze vytvořit hypotetickou certifikační autoritu a podepsat jejím soukromým klíčem žádost o certifikát. V příkladu 4.4 Podpis žádosti o certifikát je výstup Openssl pro podpis žádosti o certifikát vygenerované aplikací certifikační autority PostSignum. Je možné vidět jaké X.500 identifikační atributy certifikační autorita využívá. Ve skutečném certifikátu přibyde v atributu OU ještě identifikátor MPSV pro komunikaci se státní správou.
Příklad 4.4. Podpis žádosti o certifikát
The Subject's Distinguished Name is as follows countryName :PRINTABLE:'CZ' localityName :PRINTABLE:'Brno Piskova 6' commonName :PRINTABLE:'Petr Svoboda' Certificate is to be certified until Mar 15 09:56:03 2007 GMT (365 days) Sign the certificate? [y/n]:
Openssl provede tyto kroky:
přidělí certifikátu sériové číslo
přečte veřejný klíč ze žádosti a zkontroluje platnost podpisu
zobrazí jedinečné jméno subjektu, které dle X.500 složí jako
C=CZ, L=Brno Piskova 6, CN=Petr Svoboda
určí dobu platnosti certifikátu a vyzve k podpisu certifikátu
V reálném světe by registrační autorita provedla podobnou sadu kroků a navíc by pečlivě ověřila správnost dat uvedených v žádosti o certifikát a nezapomněla vybrat příslušný poplatek. Potom by žádost odeslala certifikační autoritě k podpisu jejím soukromým klíčem.
Z nejrůznějších důvodů se může stát, že certifikát ztratí důvěryhodnost. Důvody zahrnují hlavně situaci, kdy vlastník certifikátu zjistí narušení bezpečnosti. Certifikát přestává být použitelný i v situaci, kdy dojde ke změně jména vlastníka certifikátu. Ve všech takových případech je třeba certifikát zneplatnit. Způsob tohoto procesu definuje certifikační autorita ve své certifikační politice.
Jedním ze způsobů jak zneplatnit certifikát je umístění jeho sériového čísla do seznamu zneplatněných certifikátů (angl. Certificate Revocation List CRL). Tento seznam v definovaném formátu je pak pravidelně zveřejňován a aktualizován. Odkaz na umístění seznamu zneplatněných certifikátů je také součástí certifikátu. Na obrázku 4.2 CRL certifikační autority I.CA je certifikát vydaný certifikační autoritou I.CA, který obsahuje odkaz na dvě umístění CRL.
Seznam je číslovaný, obsahuje datum vydání, datum vydání příštího seznamu a je podepsán certifikační autoritou. S postupujícím časem jsou ze seznamu odstraňovány certifikáty u nichž vypršela doba platnosti. Takto popsaný systém je také součástí specifikace X509 verze 2.
Příklad 4.5. Příklad skutečného CRL dle X509 verze 2 (zkrácený výpis)
Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: /C=CZ/CN=I.CA - Qualified root certificate/O=První certifikační autorita, a.s. Last Update: Mar 16 04:51:30 2006 GMT Next Update: Mar 16 16:51:30 2006 GMT CRL extensions: X509v3 Authority Key Identifier: keyid:51:2E:5F:59:81:25:FF:D1:FE:86:E8:87:2E:D6:8D:0D:59:34:2B:BD X509v3 CRL Number: 776 Revoked Certificates: Serial Number: 9A1D2A Revocation Date: Jun 30 21:23:00 2005 GMT ...
V příkladu je uveden seznam zneplatněných certifikátů certifikační autority I.CA. Je vydáván každých 12 hodin.
Online Certificate Status Protocol (OCSP) představuje další mechanismus jak zjistit, zda byl daný certifikát zneplatněn. Protokol je definovaný v RFC 2560 a funguje jako klient/server. Klient pošle OCSP serveru žádost obsahující identifikaci certifikátu, OCSP server vrátí podepsanou informaci o tom, zda je certifikát platný či nikoliv, případně chybové hlášení, že certifikát nemá v databázi. Oproti CRL přináší OCSP hned několik výhod:
Informaci o zneplatnění lze distribuovat prakticky všem okamžitě.
Elegantně se řeší problém velkých PKI, kde lze předpokládat i velký objem dat v CRL.
Šetří se objem dat přenášených v síti
OCSP podporuje řetězení žádosti o informace, klient tak může komunikovat pouze s jedním serverem. Např. si lze představit OCSP proxy.
OCSP může být provozován samotnou certifikační autoritou nebo může být tato pravomoc delegována na jiný server. Informace o OCSP serverech může být také přímo součástí certifikátu.
Nevýhodou OCSP je potenciálně zneužitelný záznam provozu OCSP serveru, ze kterého lze rekonstruovat kdo s kým komunikoval.
Problémem ověřování platnosti certifikátů se zabývá pracovní skupina PKIX organizace IETF. Mezi další metody ověřování certifikátů patří například protokol DVCSP pro ověřování dokumentů několik let starých nebo protokol SCVP, který přesunuje veškerou práci s ověřováním z klienta na server.
Certifikáty X.509 lze podle implementovaného algoritmu a nastavení položky
Key Usage
použít jak pro šifrování tak pro podpis.
Nejrozšířenějším formátem šifrovaných a popsaných zpráv je v současné době
tzv. CMS (Cryptographic Message Syntax). CMS je standardem organizace
IETF a je specifikovaný v
RFC 3852. Původ CMS leží ve standardu PKCS #7 firmy RSA Security.
CMS v RFC 3852 specifikuje strukturu ContentInfo jako zapouzdření pro 6 různých druhů elementů, přičemž zapouzdřen může být vždy jen jeden element. Zapouzdření lze vnořovat. Obsah elementu je specifikován identifikátorem Content Type ve struktuře ContentInfo.
Obsahem contentType mohou být:
data
otevřený formát dat.
signed-data
podepsaná data.
enveloped-data
data šifrovaná symetrickým
klíčem, který je šifrován asymetrickým klíčem.
digested-data
data a jejich haš.
encrypted-data
zašifrovaná data, neobsahuje žádné
klíče ani dodatečné informace.
authenticated-data
data zašifrovaná symetrickou
šifrou, klíč této šifry a haš zprávy podepsaný tímto klíčem. Klíčů může
být i více pro různé adresáty zprávy.
Příklad 4.6. Element ContentInfo v syntaxi ASN.1
ContentInfo ::= SEQUENCE { contentType ContentType, content [0] EXPLICIT ANY DEFINED BY contentType }
Tato dvojice Content Type a Content tj. srozumitelněji data s označením co jsou zač postupně vstupují do CMS procesu, který s nimi vždy něco provede. Může je např. podepsat, nebo už podepsaná data připravit k odeslání nebo postupně data podepisovat jednotlivými autory.
Budoucí podepsaná zpráva může obsahovat žádný, jeden nebo více podpisů. Pro její vytvoření jsou třeba následující data:
Příklad 4.7. Element Signed-Data v syntaxi ASN.1
SignedData ::= SEQUENCE { version CMSVersion, digestAlgorithms DigestAlgorithmIdentifiers, encapContentInfo EncapsulatedContentInfo, certificates [0] IMPLICIT CertificateSet OPTIONAL, crls [1] IMPLICIT RevocationInfoChoices OPTIONAL, signerInfos SignerInfos }
version označení verze. Může nabývat hodnot 1-5. Verze se liší podle přítomnosti položek jako jsou certifikáty a CRL.
digestAlgorithms obsahuje množinu identifikátorů algoritmů použitých pro výpočet kontrolního součtu.
encapContentInfo skládá se z identifikátoru podepsaných dat, který musí být vždy přítomen a nepovinně přítomných vlastních dat (podepsaná data nemusí být nutně zapouzdřena v podpisu).
certificates certifikáty pro ověření zprávy, obsah ale není povinný.
crls odkaz na seznamy zneplatněných certifikátů, obsah opět není povinný.
signerinfos struktura obsahující podpisy.
SignerInfos je separátní struktura obsahující kromě podpisů i další důležitá data jako čas podpisu, typ podepsaných dat a kontrolní součet zprávy (tyto hodnoty se také podepisují). Má následující strukturu:
Příklad 4.8. Element SignerInfo v ASN.1
SignerInfo ::= SEQUENCE { version CMSVersion, sid SignerIdentifier, digestAlgorithm DigestAlgorithmIdentifier, signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL, signatureAlgorithm SignatureAlgorithmIdentifier, signature SignatureValue, unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL } SignerIdentifier ::= CHOICE { issuerAndSerialNumber IssuerAndSerialNumber, subjectKeyIdentifier [0] SubjectKeyIdentifier } SignedAttributes ::= SET SIZE (1..MAX) OF Attribute UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute Attribute ::= SEQUENCE { attrType OBJECT IDENTIFIER, attrValues SET OF AttributeValue } AttributeValue ::= ANY SignatureValue ::= OCTET STRING
version
stejně jako v případě elementu
SignedData
.
sid
dvojice specifikující certifikát podepisující osoby a
identifikaci jeho veřejného klíče v certifikátu.
digestAlgorithm
algoritmus pro výpočet kontrolního součtu
podepisovaných atributů.
signedAttrs
obsahuje atributy podpisu, které se zahrnují
do výpočtu podpisu.
signature
obsahuje podpis. Pokud zpráva obsahuje podepisované
atributy, pak se do podepisovaného haše zprávy zahrnuje i kontrolní součet těchto
atributů. Pokud zpráva neobsahuje podepisované atributy, podepisuje se jen haš
položky Content
.
unsignedAttrs
obsahuje nepodepisované atributy podpisu.
Nakonec zbývá zmínit některé podepisované nepovinné atributy:
Content Type
specifikuje typ podepisovaných dat.
Message Digest
kontrolní součet podepisované zprávy.
Signing Time
čas podpisu.
Secure MIME je rozšířením standardu MIME o použití šifrování a podpisu v e-mailu. CMS je jednou z jeho součástí. V současnosti je ve verzi 3 a v návrhu je verze 3.1. Standard má pět částí:
Příklad 4.9. S/MIME hlavičky
Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7m"
S/MIME má pro svoje rozšíření vyhrazen Content-Type
application/pkcs7-mime
. Tento MIME objekt nese některý z
popsaných typů CMS obsahů. Součástí označení typu je specifikace neseného
obsahu v poli
Content-Disposition: attachment; filename="smime.p7m"
,
kde je typ nesených dat specifikován příponou souboru (v příkladu
4.9 S/MIME hlavičky
klient MS
Outlook Expres používá název smime
a příslušnou
příponu s následujícím možným významem:
.p7m - application/pkcs7-mime
(SignedData, EnvelopedData)
.p7c - application/pkcs7-mime
(degenerate SignedData
certificate management message)
.p7z - application/pkcs7-mime
(CompressedData)
.p7s - application/pkcs7-signature
(SignedData)
Pro podpis definuje S/MIME dva formáty:
application/pkcs7-mime
s podepsanými daty zapouzdřenými v
podpisu a multipart/signed
, kde podepsaná data jsou
umístěna mimo MIME element s popisem. Výhoda druhého formátu je jasná. Podpis
je tvořen jakoby přílohou ke zprávě a poštovní klient nemusí umět interpretovat
S/MIME, aby si zprávu přečetl. První formát zas do určité míry chrání zprávu
před změnami po cestě k adresátovi.
Vybere se MIME entita k podpisu. V nejobyčejnějším případě se jedná o
entitu text/plain
.
Entita je transformována do objektu CMS jako typ
SignedData
, dle postupu v Cryptographic message syntax .
Vzniklý objekt SignedData
je zabalen do objektu
CMS ContentInfo
.
Výsledek je vložen do MIME entity application/pkcs7-mime
.
Pro poštovního klienta, který neumí S/MIME interpretovat se bude zpráva jevit
jako MIME zpráva s jedinou MIME entitou, kterou nepřečte, neboť zpráva je
homogenní řetězec v kódování BER (po dekódování z kódování Base64).
Tento způsob lze s výhodou použití pro zasílání podepsaných zpráv předem neznámé množině klientů, z nichž někteří neumí interpretovat S/MIME. Zprávu si přečtou, ale elektronický podpis nikoliv.
MIME entita se připraví k podpisu a projde procesem CMS. Vznikne element
SignedData
, kde encapContentInfo
bude odkazovat mimo podpis.
MIME entita se bez dalších změn umístí před entitu s podpisem.
Podpis ve formátu CMS se upraví pro přenos v e-mailu, překóduje se pomocí Base64 do posloupnosti 7-bitových znaků.
Podpis se vloží do MIME entity
application/pkcs7-signature
a připojí se ke
zprávě.
Poslední drobností podpisu dle tohoto formátu je parametr
micalg
, kterým se specifikuje použitý hašovací
algoritmus v hlavičce multipart/signed
. Aplikace
interpretující zprávu shora dolů tak ví, jakým způsobem má spočítat
haš zprávy, proto jej spočítá a pak rovnou ověří podpis. Ušetří se tak
jeden průchod celým textem.
Pro ověření podpisu musí odesílatel buď zaslat certifikát spolu s podepsanou zprávou nebo si adresát musí opatřit certifikát odesílatele jiným způsobem. Pro úspěšné ověření jsou potřeba všechny certifikáty až ke kořenové certifikační autoritě. Například poštovní klient Microsoft Outlook umožňuje volitelně nastavit zasílání všech certifikátů spolu s podpisem.
Před použitím certifikátu k ověření podpisu by měla proběhnout kontrola zda certifikát nebyl zneplatněn. Důležitost provedení takové kontroly roste přímo úměrně s důležitostí podepsané zprávy. Dle českého zákona o elektronickém podpisu přestává být podepisující osoba zodpovědná za případné škody způsobené svým podpisem v okamžiku prokazatelného zveřejnění záznamu o zneplatnění certifikátu. Mezi vydáváním jednotlivých seznamů zneplatněných certifikátu je vždy určitá prodleva a české certifikační autority zatím nenabízí možnost kontroly platnosti certifikátu přes protokol OCSP. Proto se doporučuje v případě potřeby kontroly důležité podepsané zprávy vyčkat zveřejnění dalšího seznamu zneplatněných certifikátů.
Pokud ověření certifikátu a certifikační cesty dopadne v pořádku, je podpis prohlášen za platný.
Při využití systému X.509 je nutné vzít do úvahy, že úkolem certifikátu je svázání identity osoby s jejím veřejným klíčem a zajištění identifikace a autentizace. Ostatní aktéři při vytváření a ověřování elektronického podpisu věří certifikační autoritě, resp. její certifikační politice. Odkaz na certifikační politiku je i součástí certifikátu (toto např. chybělo v X.509 v1).
X.509 certifikát funguje jako identifikátor, kterým lze svou identitu prokázat na dálku. Ideálně se hodí v použití se Zákonem o elektronickém podpisu, který striktně zužuje pojem elektronický podpis na identitu jedné osoby. Výhodné je použití certifikátů pro komunikaci s veřejnou správou. Jde o komunikaci s místem kam může v běžném životě přijít kdokoliv bez speciálního oprávnění, prokázat se občanským průkazem a činit další úkony. Otevřenou otázkou zůstává jaké identifikátory v certifikátu uvádět, aby nedošlo k porušení soukromí vlastníka certifikátu.
X.509 certifikáty se tedy hodí do prostředí, kde je třeba provádět identifikaci a autentizaci. V souvislosti s ostatními mechanismy (např. časovými razítky lze řešit i nepopiratelnost). Sekundárním využitím je zajištění důvěrnosti. Lze s nimi dobře kopírovat stávající hieararchické struktury. Naopak nelze slepě zavádět PKI založené na X.509 v prostředích, pro které se alespoň zatím nehodí.
X.509 historicky neřešilo autorizaci tj. přidělení určité množiny práv, zpravidla následující po autentizaci. Proto se v roce 1997 staly součástí X.509 i atributové certifikáty, které kromě identity obsahují i sadu atributů pro autorizaci. Standardizaci atributových certifikátů se věnuje organizace IETF v pracovní skupině PKIX.
Kromě atributových certifikátů se objevily v polovině 90. let i aktivity založené na úplně jiných principech než X.509. Příkladem může být návrhy SPKI (Simple Public Key Infrastructure), která se pozdějí sloučila s návrhem SDSI (Simple Security Infrastructure). Tyto přístupy vypouštějí vazbu identita certifikát. Místo toho zavádí pouze veřejné klíče a předpokládají, že soukromé klíče si drží každá entita v tajnosti a slouží jako důkaz pro vazbu mezi entitou a veřejným klíčem. Architektura pak zavádí i certifikáty ve formě autentizačních tvrzení, které tvoří pětice (Vydavatel, Koho se týká, Lze dále delegovat práva, Přidělená práva, Doba platnosti). Celá pětice je pak podepsána vydavatelem. Entita provádějící ověření podpisu se pak rozhodne na základě kompletní certifikační cesty a přidělených práv.
Na obrázku 4.1 Struktura akreditovaných certifikačních autorit v České republice je zobrazena současná hierarchie mezi certifikačními autoritami v České republice. Nabízí se otázka k čemu je českému občanovi certifikát v zahraničí. V současné době pomalu vznikají certifikační autority, které fungují jako mosty (Bridge CA) mezi jednotlivými certifikačními autoritami, které splňují definované podmínky. V USA například funguje Federal Bridge Certification Authority. Obdobný projekt se připravuje i v EU s názvem Bridge/Gateway Certification Authority (BGCA).
V roce 1991 vytvořil a vydal Phil Zimmermann systém PGP. Šlo o program využívající symetrické a asymetrické kryptografie pro šifrování a digitální podpis v elektronické poště a přeneseně pro podpis a šifrování libovolných dat. I přes původní konflikt s americkými úřady se PGP dočkalo značného rozšíření a prošlo poměrně spletitým vývojem až do dnešní doby. Standardizaci PGP se věnuje pracovní skupina IETF s názvem OpenPGP Alliance. OpenPGP označuje specifikaci založenou na PGP verze 5 a je dispozici v RFC 2440 [45]. PGP je registrovanou obchodní značkou společnosti PGP Corporation, která vznikla v roce 2002 a nabízí komerční produkty jako např. PGP Desktop 9.0. Volně šířitelnou implementací je GNU verze PGP s názvem GnuPG.
PGP pracuje na stejném principu jako jiné digitální podpisy. Každá komunikující strana vlastní dvojici soukromý/veřejný klíč. Podpis probíhá jako vytvoření haše zprávy a jeho podpis pomocí soukromého klíče. Šifrování probíhá jako stanovení náhodné hodnoty klíče symetrické šifry a zašifrování zprávy tímto klíčem. Jeho hodnota je zašifrována veřejným klíčem příjemce a je připojena ke zprávě. Šifrovaná data nebo připojený podpis jsou překódovány do posloupnosti sedmibitových znaků pro bezproblémový přenos elektronickou poštou. Součástí specifikace PGP je i použití komprese algoritmy zip, bzip2 nebo zlib.
Původní specifikace PGP, kterou lze nalézt v RFC-1991 [46], používala pouze symetrický šifrovací algoritmus IDEA, asymetrický algoritmus RSA a hašovací funkci MD5 [3].
Specifikace OpenPGP obsahuje symetrické algoritmy IDEA [4], 3DES, CAST5, Blowfish, SAFER a asymetrické algoritmy RSA, DSA, El-Gamal a plánuje i podporu algoritmů založených na eliptických křivkách. Podporuje také hašovací funkce MD5, SHA-1, RIPEMD-160 a verze SHA s délkou haše 256, 384 a 512 bitů.
Při použití RSA jako algoritmu pro vytvoření podpisu je ještě nutné doplnění podepisovaného haše (padding) na délku klíče. OpenPGP používá metodu PKCS v1.5 viz. Podpis dle PKCS #1 v1.5 .
Algoritmus El-Gamal pro vytváření podpisů popsal [47] kryptolog Taher ElGamal v roce 1984. Je založen stejně jako jeho pozdější varianta DSA na problému diskrétního logaritmu. Na stejném problému funguje i šifrovací algoritmus El-Gamal, který ale používá jiné funkce než v El-Gamal podpisovém schématu. Protože použití obou algoritmů není vázáno patenty, stal se El-Gamal součástí zejména volně šiřitelného GnuPG. Podpisové schéma El-Gamal funguje následujícím způsobem.
Nejprve je vygenerováno prvočíslo p. Obdobně jako u DSA je délky minimálně 1024 bitů a GnuPG v současné době podporuje maximální délku 4096 bitů. Dále proběhně generování dvou náhodných čísel g a x. g je generátor grupy Zp s operací násobení a x je soukromý klíč z intervalu <1, p - 2). Hodnota veřejného klíče y se vypočítá jako y = gx mod p. Parametry (p, g) spolu s veřejným klíčem y se zveřejní.
Pro podpis nějaké zprávy M je nejprve vytvořen haš zprávy zformátovaný jako celé číslo h(M), pro které platí 0 < h(M) < p - 1. Dále je vygenerováno náhodné číslo k nesoudělné s (p - 1). Spočítají se dvě části (r, s) podpisu:
r = gkmod p
s = (h(M) - x.r).k(-1) mod (p - 1), kde pro hodnotu k-1 platí k.k-1 = 1 mod (p - 1)
Podpis je tvořen dvojící (r, s). Hodnota k stejně jako v případě algoritmu DSA zůstane tajná a musí se volit zcela náhodně s každou novou odeslanou zprávou, jinak by bylo možné odhalit hodnotu soukromého klíče x.
Bezpečnost El-Gamal schéma přímo závisí na problému diskrétního logaritmuu.
V souvislosti s použitím podpisového schématu El-Gamal v GnuPG, byla v roce 2003 objevena závažná chyba v jeho GnuPG implementaci. Pro urychlení operace umocňování při operaci šifrování přišli tvůrci v roce 2000 s nápadem používat menší hodnoty soukromého klíče x a klíče zprávy k. Pokud byl pak takový klíč použit místo k šifrování k podpisu zprávy, existoval způsob jak odhalit soukromý klíč z podepsané zprávy a veřejného klíče [48]. E-mail s informací o tomto problému od jednoho z autorů lze najít v [49] a podrobnou analýzu problému v [50].
Na rozdíl od hierarchického přístupu založeného na certifikačních autoritách a unikátních globálních jménech funguje systém důvěry v PGP v posunutém významu, kdy je certifikační autoritou sám sobě každý uživatel systému. Získá-li jakýmkoliv způsobem veřejný klíč protějšku, je už jen na něm jestli mu uvěří nebo ne. Stupeň důvěry může být různý. Například systém GnuPG zavádí pětibodovou stupnici, kde stupeň 5 - ultimately trusted mají klíče, ke kterým má uživatel k dispozici i soukromý klíč. Důvěru ve veřejný klíč některého z komunikačních partnerů lze rozšířit následujícím způsobem.
Osoba A má kamaráda B, kterému zcela důvěřuje. Má jeho veřejný PGP klíč, kterému také zcela důvěřuje a chce rozšířit důvěru i na klíče osob C, D, E, které podepsal uživatel B. Označí si proto klíč speciálním stupněm důvěry, který poté umožní důvěřovat i všem klíčům kterým důvěřuje uživatel B.
Tímto způsobem vzniklá síť uživatelů PGP provázaných různými stupni se někdy nazývá poněkud idealizovaným názvem pavučina důvěry . Na obrázku 5.1 Pavučina důvěry v PGP je příklad takového systému důvěry. Šipka se čte jako důvěřuje . Uživatel A zcela důvěřuje uživateli B, obzvlášť klíčům, které uživatel B podepíše. Jeho PGP systém pak automaticky věří i klíčům C, D, E. Uživatel A také věří uživateli Y, uživatel Y věří stejně tak uživateli Z. Důvěra A v Z ale není taková, aby A věřil i Z.
PGP také zavádí určitou formu certifikátů v následující formě:
Jméno uživatele (kvůli jedinečnosti slouží pro rozlišení e-mail adresa).
Doba platnosti certifikátu (každá dvojice klíčů má omezenou platnost, přičemž dobu platnosti si stanovuje sám uživatel).
Podpis certifikátu vlastním soukromým klíčem, kterým se uživatel potvrdí do pozice vlastníka certifikátu. Certifikát může být ještě podepsán libovolným počtem dalších osob, kteří tak potvrdí, že vlastníku certifikátu důvěřují. Uživatel také může vystavit certifikát jiného uživatele a podepsat ho svým vlastním klíčem.
Určení osoby s právem zneplatnit daný certifikát, což je obzvlášť výhodné v okamžiku, kdy dojde ke ztrátě soukromého klíče.
Další data, např. od verze PGP 6.0 může certifikát obsahovat i fotografie.
Zjednodušeně řečeno v systému PGP může každý uživatel být i certifikační autoritou, které ostatní důvěřují v návaznosti na důvěru v její veřejný klíč.
Lze se také setkat s různě přístupnými (i veřejnými) servery, které obsahují veřejné klíče (certifikáty) uživatelů. Se servery lze komunikovat definovaným protokolem buď pro získání veřejného klíče nějaké osoby nebo pro nahrání vlastního klíče. Stejně jako v X.509 lze pak i v PGP realizovat určitou formu zneplatnění certifikátu. Zneplatnění se realizuje jako zaslání informace o zneplatnění všem ostatním uživatelům nebo nahrání takové informace na PGP server.
PGP je výborným nástrojem pro homogenní skupinu osob, která má něco společného a chce využívat v e-mailu šifrování a podpis. Například v letech 1997 1998 se objevilo PGP i na Fakultě informatiky, kde sloužilo pro zasílání podepsaných výsledků zkoušek. PGP také s oblibou používají osoby nebo skupiny osob hlavně z následujících důvodů:
PGP lze snadno zajistit důvěrnost v komunikaci prostřednictvím e-mailu.
PGP lze pořídit zdarma (netýká se všech implementací).
PGP lze provozovat bez certifikátů, které stojí peníze.
Při provozování PGP není potřeba prokazovat svou identitu registrační autoritě.
Nevýhoda PGP je chybějící centralizovaný přístup. Dvě navzájem neznámé osoby nebo organizace, nenaleznou v PGP nějaký společný bod důvěry, který by jinak představovala certifikační autorita. Chybí také integrace PGP do nejrozšířenějších poštovních klientů takovým způsobem, aby běžný uživatel nemusel nic instalovat.
Elektronickým podpisem v XML dokumentech se zabývají společně organizace IETF (Internet Engineering Task Force) a konsorcium W3C. Cílem jejich práce je vyvinout XML syntax pro reprezentaci podpisů a zároveň definovat vhodné postupy pro jejich vytváření. Podpisy v XML mají v současnosti status W3C doporučení [37] a jsou také součástí RFC 3275 [36].
V XML lze elektronický podpis použít pro podpis různých druhů dat např. jednotlivých odstavců, obrázků nebo dalších dokumentů v XML. Podobně jako v ostatních implementacích zajišťuje identifikaci, autentizaci, integritu a nepopiratelnost podepsaných dat. Umožňuje také podepisovat postupně libovolné části XML dokumentu. Rozdíl oproti běžnému podpisu si lze představit na příkladu formuláře, kolujícím mezi pracovníky firmy, z nichž každý vyplní pouze jednu nebo více částí a podepíše je. Běžný elektronický podpis celého dokumentu by se stal po jakékoliv změně neplatným. XML podpis se také stává součástí XML syntaxe a vystupuje jako samostatný objekt.
Následující popis lze najít v [38]. Uvedené příklady byly připraveny pomocí knihovny XML Security Library V příkladech je pro podpis použit RSA klíč délky 512 bitů. Podepisují se dva RFC dokumenty dostupné online.
Vytváření podpisu v XML dokumentu
Provede se výběr vhodných objektů k podpisu. Mohou to být části XML
dokumentu, obrázek, nebo HTML stránka umístěná kdekoliv a dostupná přes
Internet. Vytvoří se reprezentace takového objektu pomocí URI (Uniform Resource
Identifier) [40]. URI pak bude atributem elementu
<Reference>
. Element je povinný a může být uveden
vícekrát.
Např. <Reference URI="http://www.ietf.org/rfc/rfc3275.txt">
.
Vybere se hašovací funkce jako atribut elementu
<Digestmethod>
a vypočítají se hodnoty hašů
všech objektů odkazovaných pomocí URI, nikoliv elementů
<Reference>
samotných.
Příklad 6.1. Element Reference s atributem URI
<Reference URI="http://www.ietf.org/rfc/rfc3275.txt"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>hrKAxGNWkHzRSut5V0lPNKA/wUg=</DigestValue> </Reference>
Standard pro podpis v XML používá pro reprezentaci velkých číselných hodnot formát
base64Binary
, jehož specifikaci lze najít v
[37].
Všechny elementy <Reference>
se sdruží spolu s
vypočítanými hodnotami hašů v elementu
<SignedInfo>
.
Volitelně lze provést další transformace specifikované elementem
<Transforms>
např. aplikace XSLT stylů.
Následuje povinná úprava do standardního (kanonického) tvaru. Způsob
převodu do kanonického tvaru je specifikován v atributu elementu
<CanonicalizationMethod>
. Algoritmus převodu na
kanonický tvar provede úpravu odsazení řádků, normalizaci počtu mezer, konce
řádků, převede dokument na kódování UTF-8, sjednotí jmenné prostory různých
atributů atd. Účelem kanonizace je, aby dva na první pohled různé, ale jinak
ekvivalentní XML dokumenty, měly vždy stejný podpis. Kanonizace je řešena
v samostatném standardu [41].
Označení podpisového schématu
je z bezpečnostních důvodů součástí podpisu jako atribut
v elementu <SignatureMethod>
.
Příklad 6.2. Element <SignedInfo> se dvěma dokumenty k podpisu
<SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="http://www.ietf.org/rfc/rfc3275.txt"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>hrKAxGNWkHzRSut5V0lPNKA/wUg=</DigestValue> </Reference> <Reference URI="http://www.ietf.org/rfc/rfc3075.txt"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>zkn2lxg54Yr8IHebgK21WWlF8LA=</DigestValue> </Reference> </SignedInfo>
V příkladu je uveden element <SignedInfo>
připravený pro podpis pomocí podpisového algoritmu RSA s hašovací funkcí
SHA-1. RSA podpis probíhá dle doporučení W3C podle staršího podpisového
schématu PKCS #1 v1.5. Kromě dvojice algoritmů RSA a SHA-1 specifikuje
standard ještě algoritmus DSA s SHA-1.
Spočítá se haš elementu <SignedInfo>
a
podepíše se. Podpis pak bude součástí elementu
<SignatureValue>
.
Příklad 6.3. Výsledek podpisu RSA klíčem o délce 512 bitů
<SignatureValue> JqBXpgdZas+x77RIEhmyhvlupSQfum1AzshyOgdIt58Dl2eaWs+Mp 7kUQQNzp4a1 s6ls4eLmGSVwSpsc1jGRIA== </SignatureValue>
Do elementu <KeyInfo>
lze volitelně uložit hodnotu veřejného
klíče pro ověření podpisu. Zároveň lze v elementu <X509Data>
specifikovat i obsah X.509 certifikátu veřejného klíče.
Elementy <SignedInfo>
,
<SignatureValue>
,
a <KeyInfo>
se spojí dohromady v element
<Signature>
, který tvoří výsledný podpis.
Příklad 6.4 Úplný podpis v XML představuje úplný podpis dvou RFC dokumentů dostupných online. Tento podpis lze metodou cut & paste ověřit na WWW stránkách tvůrce XML Security Library implementující XML podpisy. Ověření trvá poněkud delší dobu, neboť je nutné nejprve stáhnout oba odkazované dokumenty.
Příklad 6.4. Úplný podpis v XML
<?xml version="1.0" encoding="UTF-8"?> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="http://www.ietf.org/rfc/rfc3275.txt"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>hrKAxGNWkHzRSut5V0lPNKA/wUg=</DigestValue> </Reference> <Reference URI="http://www.ietf.org/rfc/rfc3075.txt"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>zkn2lxg54Yr8IHebgK21WWlF8LA=</DigestValue> </Reference> </SignedInfo> <SignatureValue> JqBXpgdZas+x77RIEhmyhvlupSQfum1AzshyOgdIt58Dl2eaWs+Mp7kUQQNzp4a1 s6ls4eLmGSVwSpsc1jGRIA== </SignatureValue> <KeyInfo> <KeyValue> <RSAKeyValue> <Modulus> 1Na5FTPOes7L5RhMSLlzVEUW22rGIxl1PPyLWx5vkQvBNtVEkJIs1oKLT 7Krkc3hhk1KVC0xAMW1izblBn+2DQ== </Modulus> <Exponent> Aw== </Exponent> </RSAKeyValue> </KeyValue> </KeyInfo> </Signature>
Ověření podpisu
Element <SignedInfo>
nejprve projde úpravou
do kanonického tvaru. Použije
se metoda specifikovaná v elementu <CanonicalizationMethod>
.
Vypočítá se haš elementu <SignedInfo>
a proti výsledné
hodnotě se ověří podpis dokumentu. Hodnotu veřejného klíče k ověření podpisu je
třeba znát buď z kontextu, nebo z atributu <KeyInfo>
.
Pokud je podpis v pořádku, ověří se hodnoty <DigestValue>
jednotlivých elementů <Reference>
. Objekty uvedené
v atributech URI musí být pro ověření dostupné.
Pokud všechna ověření dopadnou v pořádku, je podpis prohlášen za platný.
Objekt podpisu identifikovaný elementem <Object>
je
součástí elementu <Signature>
. Tento přístup je výhodný
v případě, že z nejrůznějších důvodů podepisující strana nechce modifikovat
XML dokument.
Podpis je součástí objektu, který podepisuje. Tento celkem jednoduchý přístup
má drobné úskalí při vytváření podpisu, kdy je nutné z dokumentu nejprve
vyjmout element <Signature>
, vytvořit podpis a
pak je zas do dokumentu vložit. Na druhou stranu tal vznikne tak jeden jednoduchý
podepsaný dokument.
Objekt podpisu může být umístěn zcela mimo dokument (detached
signature). Tímto druhem podpisu je i příklad 6.2 Podpis . Tento přístup je výhodný, pokud dokument
nelze modifikovat nebo není vhodné jej zahrnout do podpisu.
Podepsaný objekt může být i součástí XML
dokumentu (sibbling signature), ale je umístěn mimo element
<Signature>
. Příklad podpisu, který plní
obě funkce, je na obrázku 6.3 Detached Singature .
Evropská standardizační organizace ETSI vyvíjí další rozšíření elektronických podpisů v XML dokumentech v souladu s direktivou Evropské Unie [42] pro účely elektronického obchodu. Hlavním cílem je vnést do podpisů v XML podporu zaručených elektronických podpisů, vybudovat na nich systém důvěry a zabezpečit možnost dlouhodobé archivace podepsaných dokumentů.
ETSI standard XML Advanced Electronic Signatures (XAdES) [43] je současné době ve verzi 1.2.2 z roku 2004. Předpokládá existenci důvěryhodných certifikačních autorit a autorit poskytujících služby časových razítek a také definici systémové politiky (pravidel) za jakých je možné podpisy vytvářet a ověřovat. Systém podpisů staví na standardu X.509.
<SignaturePolicyIdentifier>
. Jednoznačná definice
pravidel, podle kterých byl podpis vytvořen. Jejím úkolem je hlavně vymezit
roli podpisu a vztah podepisujícího k podepsaných datům. Může např.
specifikovat zprávu, jenž se má ověřovateli podpisu zobrazit v případě
úspěšného ověření
Definice informací potřebných pro ověření podpisu. Zahrnuje definici hierarchického ověření certifikátů, ověření CRL seznamů nebo ověření přes OCSP. Podrobný popis těchto položek lze najít v [43] nebo [39].
Definice XML typu TimeStampType
a odvozených elementů
umožňující přidat ke XML podpisu časové razítko. Zajímavým elementem je
<ArchiveTimeStamp.>
určený pro použití v archívech
elektronicky podepsaných dokumentů. Předpokládá se u ní pravidelná obnova před
vypršením platnosti posledního kvalifikovaného časového razítka.
<SigningCertificate>
. Přidává jednoznačnou
vazbu na konkrétní certifikát.
<SigningTime>
. Časové razítko s přesnou
dobou podpisu.
<CommitmentTypeIndication>
. Touto položkou podepisující
označí co vlastně podpisem zamýšlí (důkaz identity tvůrce dokumentu, důkaz
existence dokumentu, důkaz původu dokumentu atd.).
Mezi další elementy patří <SignatureProductionPlace>
,
<SignerROle>
a <CounterSignature>
.
První rozšíření je v podstatě obyčejný XML podpis s několika úpravami. Povinně
musí být uvedena informace o certifikátu podepisující osoby a to buď ve formě
elementu <SigningCertificate>
nebo element
<KeyInfo>
musí obsahovat certifikát v
<X509Data>
. V druhém případě musí být odkaz na
veřejný klíč součástí podepsaných dat, aby byla jeho hodnota chráněna.
Toto rozšíření je v podstatě předchozí formát podpis s přidaným elementem
<SignaturePolicyIdentifier>
, specifikujícím
pravidla pro vytváření a ověření podpisu dokumentu. Element je součástí
podepisovaných dat.
Třetí způsob přidává k podpisům časové razítka. Razítka mohou být obyčejná
specifikovaná elementem <SignatureTimeStamp>
nebo kvalifikovaná. V druhém případě jsou poskytována některou důvěryhodnou
třetí stranou.
Kvalifikované časové razítko podává důkaz o existenci podepsaných dat v určitém čase a jedním ze základních kroků pro vytváření dokumentů jejichž platnost může být ověřena i v delším časovém horizontu.
Jak název napovídá, přidává tato forma XML podpisu certifikační cestu, specifikující
posloupnost ověřujících certifikátů až ke kořenové certifikační autoritě (element
<CompleteCertificateRefs>
. Zároveň zmiňuje v elementu
<CompleteRevocationRefs>
, které seznamy zneplatněných
certifikátů byly zkontrolovány při vytváření certifikační cesty.
Tato forma také zahrnuje všechna rozšíření předchozího podpisu s časovým razítkem.
Základní formou podpisu je XAdES-BES. Pokud je specifikována politika pro vytváření a ověřování podpisu, použije se XAdES-EPES.
Pro zvýšení důvěryhodnosti podpisu se doporučuje použít kvalifikovaných časových razítek a to pokud možnost v co nejkratší době od podepsání dokumentu.
Kvalifikovanými časovými razítky lze samozřejmě opatřovat pouze dokumenty s platným certifikátem.
Pro spolehlivější ověření podpisu s kvalifikovaným časovým razítkem by strana ověřující podpis měla znát interval mezi vydáváním seznamů zneplatněných certifikátů. Doba ověření podpisu by měla být větší než součet tohoto intervalu a kvalifikovaného časového razítka.
Proces ověření podpisu může skončit třemi způsoby.
Podpis je zamítnut v případě, že nevyhoví kontrole s veřejným klíčem nebo je ve špatném formátu.
Ověření podpisu se zastaví v bodě, kdy chybí některá data pro rozhodnutí o odmítnutí nebo přijetí podpisu. Např. není možné stáhnout některý z certifikátů. V takovém případě se zpravidla určí čekací doba, po které je ověření podpisu znovu spuštěno.
Podpis je přijat jako platný, pokud odpovídá kontrole veřejným klíčem a splnil všechny ostatní náležitosti.
XKMS (XML Key Management Specification) se zabývá distribucí, reprezentací a použitím kryptografických klíčů v XML. V současné době má status W3C Note [44] z roku 2001. Skládá se ze dvou částí:
Protokolu X-KISS (XML Key Information Service Specification), který definuje protokol pro důvěryhodnou komunikaci mezi serverem a klientem. Klient může na server přenést některé aktivity související s veřejným klíčem jako je ověřování podpisu.
Protokolu X-KRSS jako webové služby pro ukládání veřejných klíčů, pro použití ostatními službami včetně X-KISS>
XKMS je kompatibilní se standardem W3C pro XML podpisy [36], pro komunikaci používá SOAP a WSDL.
Webové služby (Web Services) jsou technologií pro vzdálené volání aplikací, funkcí a výměnu dat v prostředí sítí a Internetu. Webové služby mohu fungovat nejen přes web (HTTP protokol), ale i přes jiné protokoly. Celkově jsou chápány jako posun od tradiční funkce WWW serveru k poskytování dat a funkčních rozhraní čitelných a využitelných ostatními programy. To vše nezávisle na platformě.
Webovou službu si lze také představit jako interface abstrahující od konkrétní implementace aplikace, který je umístěn mezi uživatelem nebo jinou aplikací přistupující zvenčí.
Architektura webových služeb je tvořena třemi částmi a navazující vrstvou síťových protokolů:
Popisuje mechanismus pro nalezení služeb. Je standardizovaný např. jako UDDI (Universal Description, Discovery a Integration). UDDI verze 3 z roku 2005 je současný OASIS standard. Alternativou je standard WSIL vyvinutý firmami IBM a Microsoft.
Mechanismus pro popis poskytovaných služeb řeší jazyk WSDL (Web Services Description Language) založený na XML. Existuje pracovní skupina W3C zabývající se WSDL, která v současné době pracuje na verzi WSDL 2.0.
Protokol pro předávání zpráv zapouzdřených ve vhodném formátu. Příkladem je SOAP (Simple Object Access Protocol), který přenáší data ve formátu XML. SOAP 1.2 má v současné době status doporučení W3C.
V této pseudovrstvě se využívají již definované protokoly, jako je např. HTTP či FTP. Další vrstvy už odpovídají běžnému ISO/OSI modelu.
SOAP je standardizovaný protokol pro přenášení zpráv mezi aplikacemi, kde zprávy mohou obsahovat data nebo volání funkcí. SOAP funguje jako XML obálka definující řadu pravidel jak reprezentovat data, funkce a výstupy funkcí v XML. Lze si jej také představit jako evoluční krok od předávání parametrů metodou GET v HTTP protokolu, přes předávání větších objemů dat přes metodu POST až k předávání XML zpráv metodou POST. Předávání XML zpráv doplněné o popis volání funkcí a rozšíření na jiné protokoly než HTTP tvoří ve výsledku protokol SOAP. Popis, vysvětlení co je SOAP a příklady použití lze najít v tutoriálu [51].
První verze protokolu SOAP pochází z roku 1999 a současná verze 1.2 z roku 2003 má status doporučení organizace W3C.
V souvislosti s elektronickými podpisy se nabízí otázka, zda SOAP nějakým způsobem řeší otázky autentizace, integrity a nepopiratelnosti. Odpověď lze nalézt v sekci 7 současné specifikace SOAP protokolu, která říká: The SOAP Messaging Framework does not directly provide any mechanisms for dealing with access control, confidentiality, integrity and non-repudiation . Jednou z možností jak docílit zvýšení bezpečnosti jinak otevřené SOAP komunikace je použít na transportní vrstvě SSL protokol. Je to zcela analogický postup jako v případě protokolu HTTPS. Klient přistupující k serveru přes SSL může získat určitou míru důvěry v identitu serveru (server může mít X.509 certifikát) a může si se serverem vyměňovat důvěrně data. SSL spojení je však jen kanál, který přenáší důvěrná data a vůbec ho nezajímá co se s daty stane až kanál opustí a uloží se např. na nezabezpečený pevný disk jedné z komunikujících stran. SSL kanál také funguje jen jako spojení bod bod a není tranzitivní.
Z těchto důvodů se objevily snahy standardizovat přímo v XML elektronický podpis (viz. Podpis v XML dokumentu ) nebo šifrování a na nich pak vystavět další standardy pro zabezpečení webových služeb.
Nebo také WS-Security je společnou aktivitou firem IBM, Microsoft a Verisign, která se zabývá zabezpečením webových služeb. V roce 2004 bylo WS-Security přijato jako OASIS standard [53]. Jeho cílem je rozšíření SOAP zpráv pro zajištění integrity a důvěrnosti a to nejen na transportní vrstvě. Základem je už zmíněný standard pro podpis v XML dokumentech a na standard pro šifrování v XML dokumentech. Kromě podpisu a šifrování umožňuje zakomponovat do SOAP zpráv tzv. security tokens. Např. X.509 certifikáty, tikety systému Kerberos nebo i prostá uživatelská jména. WS-Security standard se věnuje výhradně bezpečnosti každé jednotlivé SOAP zprávy a neřeší ustavení spojení.
WS-Security přidává do SOAP zprávy element <Security>
s bezpečnostními informacemi. Element je vždy buď bez určení příjemce nebo
s jedním daným příjemcem (SOAP Actor) jako atribut v hlavičce
Security
. Elementy se mohou v SOAP zprávě opakovat.
Základem bezpečnostní informace je nějaké tvrzení, např. jsem uživatel
xsvobod7 . Tvrzení se podloží důkazem, např. zde je podpis mého jména a
přiložený X.509 certifikát.
Element <Security>
může obsahovat následující tokeny.
<UsernameToken>
podle schváleného OASIS
standardu může obsahovat jen uživatelské jméno. Původní IBM standard
přidával i možnost přidání hesla, buď v otevřené nebo hašované formě.
V obou případech se doporučovalo použití bezpečného kanálu.
<BinarySecurityToken>
skládá se ze dvou
položek. První označuje typ tokenu např. Kerberos tiket. Druhý označuje
kódování, v jakém je token uložen např. Base64Binary. Standard doporučuje
použít pravě tento element pro uložení informace o klíči použitím
elementu <KeyInfo>
.
<SecurityTokenReference>
je odkazem
pomocí elementu <Reference>
s atributem
URI
na token, který může být umístěn i mimo
SOAP zprávu.
Vytvoření podpisu probíhá stejně jako při podpisu XML dokumentu.
Při vytváření podpisu je třeba vzít k úvahu, že
nelze podepsat celou SOAP zprávu, neboť její hlavičky se mohou měnit. Podepisující
by tedy neměl používat formu XML podpisu Enveloped signature
(podle obrázku 6.2 Enveloped Singature ). Podpis se umisťuje do
elementu <Security>
, který by měl být v SOAP
právě před všemi ostatními elementy. Lze v něm umístit i více podpisů,
přičemž nové podpisy se umisťují před staré.
Dále už pro podpis platí celkem jasná pravidla. Neměl by se podpisovat obsah, u něhož se dá čekat nějaká změna při předávání SOAP zprávy. Komunikující strany by také neměly měnit obsah již jednou podepsaných dat.
Ověřování podpisu probíhá stejně jako ve standardu pro XML podpis. WS-Security přidává další dvě okolnosti, za kterých může být podpis odmítnut.
Chyba v syntaxi odporující WS-Security specifikaci.
Odmítnutí z jiného důvodu např. pokud byl k podpisu použit nedůvěryhodný klíč.
Standard WS-Security je velmi jednoduchý základ pro budování dalšího zabezpečení webových služeb. Například zasílání podepsaných zpráv nezabezpečeným kanálem je vystaveno riziku útoku přehráním. Skutečné implementace už musí zahrnovat další mechanismy, které nejsou součástí WS-Security. Zprávy mohou obsahovat např. podepsaná časová razítka, podepsaná sekvenční čísla. Lze definovat také expiraci zpráv.
Specifikací navazujících na WS-Security je celá řada na různém stupni standardizace. Většinou pochází od firem IBM a Microsoft. Několik příkladů aktivit:
Zabývá se delegováním důvěry mezi větším množstvím komunikujících stran, které používají různé bezpečnostní nástroje.
Představuje formální jazyk pro popis toho co webová služba klientům nabízí a co naopak požaduje.
Řeší jediné přihlášení uživatele (single sign-on) k webovým službám, kdy je třeba, aby se služby ke kterým uživatel přistupuje mezi sebou dokázaly domluvit a uživatele autentizovat pouze jednou na začátku. Mezi podobné aktivity patří například Microsoft Passport.
Security Assertions Markup Language verze 1.0 je standardem organizace OASIS od roku 2002. V současné době se lze setkat s verzí 2.0. SAML je protokol pro výměnu autentizačních a autorizačních informací na úrovní aplikací v prostředí Internetu. Abstrahuje od konkrétních bezpečnostních mechanismů (např. Kerbera) a místo toho se snaží řešit komunikaci mezi bezpečnostními mechanismy. Primární použití SAML je opět Sigle Sign On.
Základem SAML jsou tvrzení (Assertions), popis jejich sémantiky a syntaxe. Tvrzení vydává některá z komunikujících stran (např. správce účtů) a obsahují autentizační a autorizační informace včetně doplňujících atributů. S těmito informace pak může komunikační protějšek různě nakládat, např. povolit uživateli přístup do některé části web server. SAML sám o sobě autentizaci ani autorizaci neřeší, jen tento proces umožňuje. Vlastní ověřování má na starosti autentizační server.
Příklad 7.1. Autentizační tvrzení v SAML
1 <saml:Assertion 2 xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 3 Version="2.0" 4 IssueInstant="2005-04-01T16:58:33.173Z"> 5 <saml:Issuer>http://authorityA.example.com/</saml:Issuer> 3 <!– signature by the issuer over the assertion –> 6 <ds:Signature>...</ds:Signature> 7 <saml:Subject> 8 <saml:NameID format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> 9 xsvobod7 10 </saml:NameID> 11 </saml:Subject> 12 <saml:AuthnStatement 12 AuthnInstant="2005-04-01T16:57:30.000Z" 13 SessionIndex="6345789"> 14 <saml:AuthnContext> 15 <saml:AuthnContextClassRef> 16 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport 17 </saml:AuthnContextClassRef> 18 </saml:AuthnContext> 19 </saml:AuthnStatement> 20 </saml:Assertion>
Příklad autentizačního tvrzení v SAML 7.1 Autentizační tvrzení v SAML říká, že subjekt xsvobod7 (řádka 7 11) se autentizoval u autority A (řádka 5) v určitém čase (řádka 4) heslem a přenos proběhl přes SSL (řádka 16). SAML 2.0 také přidává podporu sessions (řádka 13). Tento příklad lze nalézt také v [55].
Další částí SAML je jednoduchý protokol výzva odpověď pro výměnu žádostí o bezpečnostní informace a odpovědi na ně.
A nakonec SAML definuje pravidla pro zakomponování těchto zpráv do protokolu pro jejich přenos sítí např. pomocí SOAP.
Způsob skládání SAML tvrzení lze definovat v tzv. SAML profilech. Příkladem je profil pro jednotné přihlášení pomocí WWW prohlížeče a výměnu dat se správcem účtů pomocí HTTP metod GET a POST.
Vývoje SAML se aktivně účastní řada firem včetně RSA Security a IBM.
Mezi nejvýznamnější standardizační organizace působící na evropské úrovni patří CEN Comité Européen Normalisation a ETSI European Telecommunications Standards Institute. Tyto organizace společně založily tzv. ICTSB Information and Communication Technology Standards Board. Jde o organizaci jejímž úkolem na ja vstupu shromažďovat nejrůznější podněty, vybírat z nich zajímavé a zabývat se jimi. Na výstupu jsou doporučení jaké standardy se mají vytvořit a čeho se mají týkat. Při CEN ještě pracuje organizace CEN/ISSS Information Society Standardization System.
V roce 1999 vznikla skupina EESSI (European Electronic Signature Standardization Initiative) jako součást ICTSB. Dostala mandát Evropské komise pro koordinaci vytváření standardů v návaznosti na Direktivu 1999/93/EC Evropské komise [42] pro elektronické podpisy.
Pro vytváření budoucích standardů měla direktiva klíčový význam. Jejím hlavním účelem je posun elektronického podpisu do právně ekvivalentní pozice s ručním podpisem. Je formulována technologicky neutrálně a nepředepisuje žádná konkrétní schémata pro vytváření a ověřování podpisu. Stejně tak nedefinuje konkrétní pravidla pro poskytovatele certifikačních služeb.
CEN/ISSS dostala na starost:
Bezpečnostní požadavky na zařízení pracující s důvěryhodnými informacemi.
Bezpečnostní požadavky na zařízení vytvářející elektronický podpis.
Postupy pro registraci a certifikaci zařízení pracující s elektronickým podpisem.
A organizace ETSI:
Standardy pro použití X.509 certifikátů jako kvalifikovaných certifikátů.
Bezpečnostní normy pro poskytovatele kvalifikovaných certifikačních služeb.
Formáty elektronického podpisu.
Formáty časových razítek.
Standardy pro poskytovatele certifikačních služeb vydávající jiné než kvalifikované certifikáty.
Standardy pro poskytovatele certifikačních služeb vydávajících časová razítka.
Standardy pro obchodní modely.
Výjimkou byl draft Algorithms and Parameters for Secure Electronic Signatures, který byl vydán přímo organizací EESSI.
Pro publikování výsledků ETSI vytvořila technický výbor pro elektronický
podpis (
ETSI TC ESI Technical
Comittee - Electronic Signatures and Infrastructures) a CEN/ISSS pak
workshop s názvem E-Sign. Výstupy z workshopu CEN/ISSS mají názvy ve formátu
CWA číslo
(CEN Workshop Agreement). Výstupy z
ETSI TC ESI jsou buď normou s označením
ES číslo
nebo technickou specifikací
TS číslo
.
Činnost CEN/ISSS E-sign workshopu byla ukončena v roce 2003 a EESSI skončila o rok později v říjnu 2004. O údržbu standardů se nyní starají společně organizace CEN a ETSI TC ESI.
Tento draft vydala organizace EESSI poprvé v květnu 2001. Poslední verze byla vydaná v červenci 2005 jako dvojice
Z hašovacích funkcí se v poslední verzi objevily zejména SHA funkce s prodlouženou délkou haše SHA-224 a SHA-256. Ve standardu samozřejmě zůstaly i původní SHA-1 a RIPEMD-160 z důvodu kompatibility. Standard doporučuje nové implementace zakládat výhradně na prodloužených SHA funkcích. Nově byla také začleněna hašovací funkce WHIRLPOOL (standardizovaná v ISO/IEC 10118-3) jako doporučení z projektu NESSIE. Přehled hašovacích algoritmů je v tabulce 8.1 Hašovací funkce .
Tabulka 8.1. Hašovací funkce doporučené ETSI v roce 2005
Index | Zkratka | Délka haše (bitů) | Datum přijetí | Související normy a standardy |
---|---|---|---|---|
1.01 | sha1 | 160 | 2001 | ISO/IEC 10118-3, FIPS 180-2 |
1.02 | ripemd160 | 160 | 2001 | ISO/IEC 10118-3 |
1.03 | sha-224 | 160 | 2004 | FIPS 180-2 |
1.04 | sha-256 | 160 | 2004 | ISO/IEC 10118-3, FIPS 180-2 |
1.05 | whirlpool | 512 | 2004 | ISO/IEC 10118-3 |
Z asymetrických algoritmů zůstává trojice RSA, DSA, ECDSA (a varianta ECGDSA). Z podpisových schémat s paddingem je v případě RSA doporučeno použit RSA-PSS (viz. Podpis dle PKCS #1 PSS ). Oproti původnímu návrhu z roku 2001 se objevila ještě podpisová schémata pro RSA podle ISO/IEC 9796-2. Maji stejně jako RSA-PSS náhodný výstup. Ve standardech ISO jsou označena jako digital signature scheme 2 a digital signature scheme 3 .
K podpisovým schématům ještě přibyly varianty RSA s SHA-224 a RSA s SHA-256. Jinak jsou povolené kombinace vždy asymetrický algoritmus a SHA-1, v případě RSA i RIPEMD-160.
Pro generování klíčů je možné použít jak generátory náhodných, tak i pseudonáhodných čísel. Pro generování klíčů, které se použijí více než jednou (např. soukromý/veřejný klíč) se doporučuje použít náhodná čísla.
Nakonec standard uvádí tabulku 8.2 Podpisová schémata v čase dle ETSI v roce 2005 s odhadem jak dlouho zvolené délky klíčů vydrží v čase:
Tabulka 8.2. Podpisová schémata v čase dle ETSI v roce 2005
Podpisové schéma | do 2008 | do 2010 | do 2015 |
---|---|---|---|
RSA + SHA1 | 768 | NE | NE |
RSA + SHA-224 | 768 | 1024 | 2048 |
RSA + SHA-224 | 768 | 1024 | 2048 |
RSA + SHA-256 | 768 | 1024 | 2048 |
RSA + PSS + SHA-1 | 768 | 1024 | NE |
RSA + SHA-224 | 768 | 1024 | 2048 |
RSA + SHA-254 | 768 | 1024 | 2048 |
DSA + SHA-1 | 768 | NE | NE |
ECDSA + SHA-1 | 163 | NE | NE |
ECDSA + SHA-224 | 224 | 224 | 224 |
ECDSA + SHA-256 | 256 | 256 | 256 |
Draft standardu ETSI ES 201 733 Electronic Signature Formats pro formáty elektronického podpisu se poprvé objevil v roce 1999 a konečná verze 1.1.3 tohoto standardu byla schválena v květnu 2000. Standard měl následující obsah:
definice účastníků elektronického podpisu (podepisující osoba, podepisovaná data, certifikační autorita atd.)
definice elektronického podpisu
definice podpisové politiky
časová razítka a násobná časová razítka pro uložení dokumentů v archívech
formát kompletní certifikační cesty ze soustavy certifikátů
formát podepsané zprávy (staví hlavně na RFC 2630 Cryptographic Message Syntax a RFC 2634 Enhanced Security Services)
formy certifikátů a atributových certifikátů
Tato norma byla následně rozšířena a aktualizována technickou specifikací ETSI TS 101 733. Název zůstal stejný. První verze 1.2.2 byla vydána v prosinci 2000. Norma ETSI 101 733 je v současné době ve verzi 1.6.3 ze září 2005 a na vydání čeká draft 1.7.3 z ledna 2006. Novější norma také změnila název na CMS Advanced Electronic Signatures (CAdES) .
ETSI TC ESI vydalo krátkou technickou specifikaci ETSI TR 102 047 Internation Harmonization of Electronic Signature Formats shrnující výsledky pokusů o sladění evropské standardizační práce s mezinárodními organizacemi. U organizace IETF jde hlavně o RFC 3126 Electronic Signature Formats for long term electronic signatures, které má stejná obsah jako ETSI TS 101 733. V tomto případě jde o běžné podpisy. V oblasti XML podpisů získal u W3C status poznámky standard XML Advanced Electronic Signatures (XAdES) v poslední verzi z února 2003. Opět jde o stejný obsah jako má standard ETSI TS 101 903 XML Advanced Electronic Signatures (XAdES) . V oblasti podpisů v XML dokumentech spolupracuje ETSI také s organizací OASIS.
Dokument ETSI TR 102 040 International Harmonization of Policy Requirements for CAs issuing Certificates shrnuje výsledky práce na harmonizaci požadavků týkajících se práce certifikačních autorit (ETSI TS 101 456 a ETSI TS 102 042) s ostatními mezinárodními standardy. Jde zejména o:
Práce technického výboru ISO TC68 týkající se zejména bankovního sektoru.
ANSI X9.79 PKI policy and practices framework
US Federal PKI PKI mezi vládními úřady v USA.
ABA PKI assessment guidelines týká se zejména právní stránky vytváření PKI.
IETF PKIX policy and practices framework
V přípravě je také ETSI TR 102 458 US Federal PKI to EU Qualified Certificate Policy (ETSI TS 101 456) mapping. Ale specifikaci zatím ETSI neuvolnilo ke stažení.
Požadavky na postupy certifikační autority vydávající kvalifikované certifikáty definuje ETSI TS 101 862 Qualified Certificate Profile. První verze 1.1.1 byla vydána v prosinci 2000. V současné době je dokument ve verzi 1.3.3 z ledna 2006. Vychází z RFC 3739 Internet X.509 Public Key Infrastructure: Qualified Certificates Profile, která je založena na RFC 3280 Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile. Pro obsah kvalifikovaného certifikátu zavádí ETSI TS 101 862 některé povinné prvky:
Pole Vydavatel (Issuer) musí obsahovat označení státu v atributu countryName (např. CZ). Mělo by také odpovídat státu ve kterém vydavatel sídlí. Dále doporučuje použít vhodnou kombinaci atributů z RFC 3039. Např. certifikační agentura PostSignum používá pro fyzické osoby hodnoty uvedené v příkladu 4.4 Podpis žádosti o certifikát .
Používá rozšíření qCStatements definované v RFC 3739. Obsahuje prohlášení vydavatele certifikátu. Rozšíření může být označeno za kritické. Potom v něm musí být vyplněny následující položky:
Informace, že jde o kvalifikovaný certifikát.
Uvedení maximální hodnoty transakce pro kterou je možné certifikát použít.
Formulace určující dobu po kterou jsou archivovány informace, které uživatel poskytl při registraci (týká se hlavně pseudonymních certifikátů).
Volitelně informace, že soukromý klíč příslušný k certifikátu je uchováván v bezpečném zařízení.
Zabývá se jimi ETSI TS 101 456 Policy requirements for certification authorities issuing qualified certificates. První verze 1.1.1 byla vydána v prosinci 2000. V současné době je dokument ve verzi 1.4.1 z února 2006. Tato norma byla ve verzi 1.3.1 přejata jako vůbec první česká přejatá ETSI norma ČSN ETSI TS 101 456 v1.3.1. s platností od 1.3.2006. Norma se týká hlavně realizace certifikační politiky. Zabývá se životností klíčů, certifikátů, ochranou klíčů atd. Neřeší časová razítka, atributové certifikáty ani šifrování. Má původ v RFC 2527 Certificate Policy and Certification Practices Framework .
Další specifikace TS 102 042 Policy requirements for certification authorities issuing public key certificates se týká certifikačních autorit vydávajících obyčejné certifikáty a ETSI TS 102 158 Policy requirements for Certification Service Providers issuing attribute certificates usable with Qualified certificates pro certifikační autority vydávající atributové certifikáty ke kvalifikovaným certifikátům.
Tento okruh je zpracován v technické specifikaci ETSI TS 102 023 Policy requirements for time-stamping authorities. V současné době je v druhé verzi 1.3.1 z ledna 2006. Tato norma v původní verzi byla přejata spolu s předchozí normou jako ČSN ETSI TS 102 023 v1.2.1 s platností od 1.3.2006. Norma vychází z protokolu pro vytváření časových razítek ETSI TS 101 861 a RFC 3161 Time-Stamp Protocol (TSP).
Specifikuje zejména životní cyklus klíče pro vydávání časových razítek, formát časového razítka a jen všeobecně doporučuje pravidla pro synchronizaci času.
Specifikace ETSI TR 102 045 Signature policy for extended business model zavádí zejména vícenásobné podpisy (např. podpis svědků atd.), zabývá se platností podpisů v čase, závazky vyplývajícími z podpisu a podpisovými politikami.
Cílem specifikace ETSI TS 102 280 X.509 V.3 Certificate Profile for Certificates Issued to Natural Persons je podle [58] umožnit interoperabilní zpracování a zobrazování informace obsažené v certifikátech a kvalifikovaných certifikátech.
Specifikace ETSI TR 102 044 Requirements for role and attribute certificates se věnuje atributovým certifikátům.
Jedna se o dokument rozdělený na čtyři části. Zkratka CM označuje Cryptographic Module .
Tento dokument je v poslední verzi z roku 2003 a nahrazuje stejný dokument z roku 2001. Zaměřuje se na obecné požadavky bezpečnosti celého systému práce s certifikáty (registrace, vydání certifikátu, zveřejnění certifikační politiky, zneplatnění certifikátů a zveřejnění seznamu zneplatněných certifikátů). Tyto služby definuje jako povinné. Dále definuje volitelně poskytované služby (vydávání zařízení generujících podpis, časová razítka) a stanovuje pro ně bezpečnostní pravidla.
V českém překladu se jedna o dokument specifikující ochranu kryptografického modulu poskytovatele certifikačních služeb se zálohováním soukromého klíče. Byl připraven podle tzv. Common Criteria 2.1 - obecných kritérií pro hodnocení bezpečnosti. Poslední verze pochází z roku 2004. Jde v podstatě o podobnou verzi jako bez zálohování soukromého klíče (obě části byly do roku 2002 společné), separátní ochranný profil byl připraven, aby celý systém vyhovoval Common Criteria 2.1.
Neboli podmínky pro generování klíče poskytovatele certifikačních služeb. Separátně jsou v dokumentu definovány i podmínky, které poskytovatel musí splňovat pokud svým zákazníkům sám generuje klíče.
V českém překladu se jedna o dokument specifikující ochranu kryptografického modulu poskytovatele certifikačních služeb ale tentokrát bez zálohování soukromého klíče. Byl připraven podle tzv. Common Criteria 2.1 - obecných kritérií pro hodnocení bezpečnosti. Poslední verze pochází z roku 2004.
Je součástí specifikace CWA 14355 Guidelines for the implementation of Secure Signature-Creation Devices v poslední verzi z roku 2004. Zavádí tři typy zařízení:
Zařízení typu 1 sloužící jen pro generování klíčů. Může být implementováno odděleně, v zařízení s dobrým zdrojem entropie pro generování kvalitních klíčů.
Zařízení typu 2 sloužící pro vytváření podpisu. Vlastní jej vždy jedna osoba, přístup k němu je zabezpečen (např. PIN) a soukromé či veřejné klíče jsou do něj nahrávány ze zařízení typu 1.
Zařízení typu 3 je kombinací předchozích zařízení.
Dokument dále zmiňuje různé vhodné implementace (životní cyklus klíčů, princip funkce podpis atd.), např. čipové karty, mobilní telefony, PC a také možné útoky proti těmto zařízením. Bezpečnou implementací se rozumí splnění požadavků z CWA 14169 viz. sekce Bezpečná zařízení pro vytváření podpisu na úrovni EAL 4+ .
Dokument CWA 14169 Secure signature-creation devices EAL 4+ se věnuje zabezpečení třech typů zařízení specifikovaných v sekci Postup pro bezpečnou implementaci elektronického podpisu .
Dokument CWA 14170 Security requirements for signature creation applications v první části popisuje jak vytvářet správně aplikace pro vytváření elektronického podpisu. Druhá část se týká bezpečnostních požadavků na jednotlivé funkční komponenty. Popis jak ověřit splnění těchto požadavků u konkrétní aplikace je už součástí jiné specifikace.
Doporučený postup ověřování elektronického podpisu specifikuje dokument CWA 14171 General guidelines for electronic signature verification v poslední verzi z roku 2004.
Následující sada osmi specifikací definuje postupy pro ověření bezpečnosti systémů pracujících s elektronickým podpisem.
Právní stránkou elektronických podpisů, které z nějakých důvodů nesplňující požadavky direktivy Evropské komise [42] o elektronickém podpisu, se zabývá CWA 14365-1 Guide on the Use of Electronic Signatures Part 1: Legal and Technical Aspects v poslední verzi z roku 2004.
Právní stránkou elektronických podpisů, které z nějakých důvodů nesplňují požadavky směrnice EU [42] sekce 5.1 o elektronickém podpisu, se zabývá CWA 14365-2 Guide on the Use of Electronic Signatures Part 2: Protection Profile for Software Signature Creation Devices v poslední verzi z roku 2004.
API čipových karet použitých jako prostředek pro bezpečné vytváření elektronického podpisu se věnuje dokument CWA 14890-1 Application Interface for smart cards used as Secure Signature Creation Devices - Part 1: Basic requirements. Hlavním cílem je zajištění kompatibility mezi jednotlivými kartami. Volitelná rozšíření čipových karet jsou specifikována v dokumentu CWA 14890-2 Application Interface for smart cards used as Secure Signature Creation Devices - Part 2: Additional Services.
[1] Copyright (c) 1996 Bell Telephone Laboratories, Inc., James T. DeWolf, 0-201-10088-6, Addison-Wesley Publishing Company, A Method for Obtaining Digital Signatures and Public-Key Cryptosystems ,
[2] A Note on 'Non-secret encryption', CESG Research Report, 1973
[3] Breaking RSA may not be equivalent to factoring , Springer, 1998
[4] Twenty years of attacks on the RSA cryptosystem , American Mathematical Society (AMS), 1999
[5] A New Kind of Cipher That Would Take Millions of Years to Break, Scientific American v. 237, n. 8, 120-124, August 1977
[6] A method for obtaining digital signatures and public-key cryptosystems , ACM 21, 1978120-126,
[8] Digital Signature Standard (DSS) , National Institute of Standards and Technology , May 1994
[9] Achillova Pata DSA , Kryptologie pro praxi, 22, 2005
[10] Cryptanalysis of RSA with private key d less than N0.292, IEEE Transactions on Information Theory, Vol 46, No. 4, 120-126, 2000
[11] Recommendation for Key Management , Nationa Institute of Standards and Technology, 63, 2005
[14] Non-repudiation of digital signatures , Proceedings of 2nd Scientific and Pedagogical Conference at ZMVS: Juridical Regulation of Networked Society, Trebic, 2004
[15] Zákon č. 227/2000 Sb., o elektronickém podpisu a o změně některých dalších zákonů (komentář) , 2000
[16] Digital Signatures Guidelines Tutorial , Copyright (c) 1999 The American Bar Association,
[17] Výklad k příloze č. 2 vyhlášky č. 366/2001 Sb. Kryptografické algoritmy a jejich parametry pro bezpečné vytváření a ověřování zaručeného elektronického podpisu, Ministerstvo informatiky České Republiky, 2001
[18] Fast Variants of RSA, CryptoBytes, 5-6, 1, 2002
[19] Mitigating Insider Threats to RSA Key Generation, CryptoBytes, 2-15, 1, 2004
[20] ANSI X9.31-1998 Digital Signatures using Reversible Public Key Cryptography for the Financial Services Industry (rDSA), American National Standards Institute, 1998
[21] Implementation of fast RSA key generation on smart cards, 214-200, Proceedings of the 2002 ACM symposium on Applied computing, ACM Press, 2002
[22] Implementation of fast RSA key generation on smart cards, 214-200, Proceedings of the 2002 ACM symposium on Applied computing, ACM Press, 2002
[23] Digital Signature Standard (DSS) FIPS 186-2, Appendix 2.1, National Institute of Standards and Technology (NIST), 2000
[24] PKCS #1: RSA Cryptography Standard (ver. 2.1), RSA Laboratories, 2002
[25] Pollard's p-1 algorithm, Wikipedia,
[26] Lenstra elliptic curve factorization, Wikipedia,
[26] Are Strong Primes Needed for RSA?, Preprint, 1999
[28] General number field sieve, Wikipedia,
[29] On the cost of factoring RSA-1024, CryptoBytes, 10-19, 2, 2003
[30] RSA FAQ: Is the RSA system an official standard today?, RSA Laboratories,
[31] Algorithms and Parameters for Secure Electronic Signatures, ETSI, 2003
[32] RSA FAQ: What are strong primes and are they necessary for the RSA system?, RSA Laboratories,
[33] What are DSA and DSS?, RSA Laboratories,
[36] XML-Signature Syntax and Processing, RFC 3275 , The Internet Society & W3C, 2002
[37] XML-Signature Syntax and Processing , W3C Recommendation, 2002
[38] An Introduction to XML Digital Signatures, O'Reilly & Associates, Inc, 2001
[41] Canonical XML Version 1.0 , W3C, Copyright (c) 2001 W3C, 2001
[42] Directive 1999/93/EC on a Community framework for electronic signatures, Official Journal of the European Communities, 12-22, L 013, 2000
[44] XML Key Management Specification (XKMS) , W3C, Copyright (c) 2001 Verisign Inc., Microsoft Corporation, webMethods Inc., 2001
[45] OpenPGP Message Format, IETF, Copyright (c) 1998 The Internet Society, 1998
[46] PGP Message Exchange Formats, IETF, 1996
[47] A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms, IEEE Transactions on Information Theory, 469-472, 4, 1985
[48] Can We Trust Cryptographic Software? Cryptographic Flaws in GNU Privacy Guard v1.2.3, Advances in Cryptology - EUROCRYPT 2004, 555-570, 4, 2004
[49] GnuPG's ElGamal signing keys compromised, Mailing list post, 2003
[50] Kauza: Lidová tvořivost se nevyplácí, Kryptologie pro praxi, 16, 2004
[51] Tutoriál Web Services , EUROPEN, 2005
[52] Kauza: Lidová tvořivost se nevyplácí , Kryptologie pro praxi, 16, 2004
[53] Web Services Security: SOAP Message Security 1.1 , 2006
[54] XML Encryption Syntax and Processing , W3C, Copyright (c) 2002 W3C, 2002
[55] SAML 2: The Building Blocks of Federated Identity , O'Reilly & Associates, Inc, 2005
[56] Final Report of the EESSI Expert Team , EESSI, 1999
[57] Final Report of the EESSI Expert Team , EESSI, 1999
[58] ETSI a CEN/ISSS - nové normativní dokumenty , Crypto World, 1, 2004
[59] Online Elliptic Curve Cryptography Tutorial , Certicom Inc., Copyright (c) 2006 Certicom Inc.,
[60] Working Draft ANSI X9.62-1998 - ECDSA , American National Standards Institute, Copyright (c) 1998 American Bankers Association,
[61] Draft: FIPS PUB 186-3: Digital Signature Standard (DSS) , NIST, 2006
[64] Accelerated Verification of ECDSA Signatures , Certicom Research, Canada, 2005
[65] Mathematician rides curve toward new type of security , EE Times, 2005
[66] Handbook of applied cryptography , CRC Press, 1996
[67] Final report of European project IST-1999-12324: New European Schemes for Signatures, Integrity, and Encryption (draft version 0.15) , Springer-Verlag, 2004
[68] On the importance of checking cryptographic protocols for faults, Journal of Cryptology, 2, 101-119, 2001
[69] Elliptic curve cryptography on smart cards , Helsinki University of Technology, 2000
[70] Security Proofs for the RSA-PSS Signature Scheme and Its Variants, RSA Security, 2001
[71] Review of SEC1: Elliptic Curve Cryptography , Certicom Research, 1999
[72] SEC 1: Elliptic Curve Cryptography , Certicom Research, 2000
[73] Performance Analysis of Elliptic Curve Cryptography for SSL , Proceedings of ACM Worksop on Wireless Security, 2000
[74] Security Requirements for cryptographic modules , NIST, 2001
[75] Czech attack - Útok na privátní podpisové klíče PGP, CHIP, 2001
[76] Tunely v hašovacích funkcích: kolize MD5 do minuty, Kryptologie pro praxi, 2006
[77] Hašovací funkce, principy, příklady a kolize, Cryptofest, 2005
[78] NIST, 2002 Secure Hash Standard,