V prvním dílu tohoto seriálu jsme se seznámili s veledůležitým poznatkem: že posuzování platnosti elektronických podpisů je vždy vztaženo k určitým předpokladům a nemůže být „absolutizováno“, tedy nějak oddělováno od těchto předpokladů.
Ukazovali jsme si to na konkrétním příkladu podpisového certifikátu literární postavy Josefa Švejka: jakmile jsme tomuto certifikátu vyjádřili svou důvěru, rázem nám příslušný program začal odpovídat „ano“, kdykoli jsme se zeptali na platnost podpisu vytvořeného s tímto certifikátem. Ale do té doby, než jsme tak učinili, nám stejný program na stejnou otázku odpovídal „nevím“.
Dnes se ještě nedostaneme k tomu, co všechno je zapotřebí, aby se programem vyřčené „ano“ dalo interpretovat jako platnost uznávaného elektronického podpisu ve smyslu zákona. K tomu totiž musí být splněny ještě další předpoklady, se kterými se budeme seznamovat teprve postupně. Dnes si pouze letmo naznačíme, čeho se týkají.
Půjde například o to:
- Zda podepsaný dokument nebyl od okamžiku podpisu změněn (například někým padělán). To poznáme podle toho, že není porušena jeho integrita.
- Zda podpis vznikl tehdy, kdy vzniknout mohl (v době platnosti podpisového certifikátu). Budeme se tedy muset nějak řešit otázku času vzniku podpisu. To vůbec nemusí být triviální (zejména chybí-li na podepsaném dokumentu časové razítko).
- Zda podpis nevznikl v době, kdy byly nějak kompromitovány údaje, nutné k vytvoření podpisu. Může se totiž stát, že v určitém okamžiku někdo oprávněnému držiteli ukradne tzv. privátní klíč (či ho získá jakoukoli jinou cestou) – a pak by se vlastně mohl podepisovat jeho jménem. Samozřejmě existuje obrana, oprávněný vlastník může tzv. revokovat svůj podpisový certifikát (předčasně ho zneplatnit). A my, když posuzujeme jakýkoli jeho podpis, musíme vždy nejprve zjistit, zda toto nenastalo (zda podpisový certifikát nebyl revokován ještě před okamžikem vzniku podpisu).
Již dnes se ale můžeme zmínit o jednom velmi nebezpečném zjednodušení, se kterým se lze v běžné praxi setkat: že pouhá integrita (tj. „neporušenost“) dokumentu bývá někdy ztotožňována s platností elektronického podpisu. V tom smyslu, že při ověřování platnosti podpisu se pouze prozkoumá integrita dokumentu – a když se zjistí, že není porušena (tj. dokument nebyl od svého podpisu jakkoli změněn), prohlásí se elektronický podpis na dokumentu za platný.
To je zásadní chyba, která může mít fatální důsledky. Co je nám platné, když víme, že se dokument nezměnil – když vůbec nevíme, od koho pochází a kdo je autorem podpisu na něm? Jistota, že se dokument nezměnil, nám vůbec nic nepřináší – protože pokud nám dokument podstrčil někdo se zlými úmysly (a ne ten, o kom si myslíme že je autorem), pak měl dostatek času dokument libovolně pozměnit, ještě než ho podepsal.
Ostatně, soubor z minulého dílu, s podpisem Josefa Švejka, měl také integritu v pořádku (neporušenou). Pokud bychom i u něj (nesprávně) hodnotili platnost podpisu jen podle neporušené integrity (tj. podle toho, že se od podpisu nezměnil), pak bychom vlastně úplně rezignovali na zkoumání toho, komu podpis na dokumentu patří. Skutečně bychom věřili, že patří Josefu Švejkovi?
Jakou roli hraje podpisový certifikát?
Nechme si ale integritu raději na příště a zůstaňme ještě u otázky důvěry. Konkrétně u zkoumání toho, komu podpis na dokumentu vlastně patří.
Právě tím se totiž dostaneme k nejzákladnějšímu principu elektronického podpisu. Ten zajišťuje – skrze onu asymetrickou kryptografii, na které je elektronický podpis založen – že existuje „nezpřetrhatelná“ vazba mezi konkrétním elektronickým podpisem a podpisovým certifikátem.
Pro názornost si můžeme představit, že podpisový certifikát je obdoba visačky na kufru. A podobně jako na visačce je i na certifikátu „něco“ napsáno – ale nikoli jméno a adresa majitele kufru, nýbrž identita autora podpisu.
Zjištění toho, komu patří konkrétní elektronický podpis, je tak vlastně v principu úplně jednoduché: podíváme se na onu visačku, která je s podpisem „nezpřetrhatelně“ spojena (a to nikoli nějakým páskem, gumičkou apod., ale kryptografickými metodami), a podíváme se, co je na ní napsáno. Jednoduché, ne?
Jak už jistě tušíte, problém je v tom, zda můžeme věřit tomu, co je na podpisovém certifikátu napsáno. I v případě kufru se může stát, že někdo úplně cizí si na visačku v nestřeženém okamžiku napíše své jméno a adresu – a vlastně si tím jakoby přivlastní celý kufr.
V případě certifikátů je něco takového ještě snazší. Ostatně, v minulém dílu jsme si to názorně ukázali, na příkladu certifikátu literární postavy Josefa Švejka.
Takže v praxi bychom měli o to více dávat pozor na to, které visačce/certifikátu budeme věřit a které nikoli.
Co znamená důvěra v podpisový certifikát?
Analogie s kufrem a visačkou bohužel není úplně dokonalá. Třeba v tom, že mezi visačkou a kufrem je vztah 1:1 (jedna visačka může viset jen na jednom kufru). To u podpisového certifikátu jde o vztah 1:N, neboť jeden a tentýž certifikát může být spojen (kryptografickými metodami) s elektronickými podpisy na mnoha (na N) dokumentech.
Protože když si jednou pořídíte podpisový certifikát, můžete ho následně použít (pro vytvoření svého elektronického podpisu), kolikrát budete chtít – dokud neskončí jeho platnost. Což je u kvalifikovaných certifikátů obvykle 1 rok.
Podobně když konkrétní úředník podepisuje elektronické dokumenty, které „odcházejí“ z úřadu skrze datové schránky, používá k tomu stále stejný certifikát (dokud neskončí jeho platnost a on si bude muset pořídit nový certifikát, nebo dokud neodejde z úřadu či není přeřazen na jinou funkci apod.).
Co se ale stane, když my vyjádříme svou důvěru certifikátu tohoto úředníka? Efekt bude přesně takový, jak jsme si ho ukazovali v minulém dílu na příkladu podpisového certifikátu Josefa Švejka: náš program nám začne odpovídat „ano“ , kdykoli mu předložíme nějaký dokument s podpisem příslušného úředníka, vytvořeným podle tohoto certifikátu (a požádáme-li program o ověření platnosti podpisu). Přesněji: řekne nám „ano“, pokud mu v tom nezabrání nesplnění některé z dalších náležitostí platného elektronického podpisu, zmiňované výše (tedy neporušená integrita dokumentu, platnost certifikátu v době podpisu a jeho (ne)odvolání).
Shrnuto: vyjádřením důvěry k jednomu certifikátu vlastně vyjadřujeme svou důvěru (alespoň ohledně identity autora podpisu) všem dokumentům, které jsou podepsány s využitím tohoto certifikátu.
Co znamená důvěra v serverový certifikát?
Než se pustíme dále, ukažme si, že přesně stejný problém s důvěryhodností certifikátů nastává i jinde, než u elektronických podpisů na dokumentech. Vzpomínáte si ještě na tento článek (Stalo se: Česká pošta neradila správně), který popisoval problém s přístupem na stránky portálu ISDS (s webovým rozhraním k datovým schránkám)?
Tady došlo k přesně stejnému problému, jen s jiným typem certifikátu a jiným účelem využití: aby uživatel věděl, zda se dostal na skutečné webové rozhraní datových schránek (a ne na nějaké podvržené webové stránky, které by z něj jen lákaly přihlašovací jméno a heslo), prezentují se mu navštívené stránky svým certifikátem (zde konkrétně: serverovým certifikátem). Ten si také můžeme představit jako visačku, která ale nevisí ani na kufru ani na PDF dokumentu, ale na webové stránce, resp. stránkách – a je na ní napsáno něco, co dokládá „pravost“ stránek.
Konkrétně třeba webový portál ISDS, který sídlí na adrese „mojedatovaschranka.cz“, je vybaven serverovým certifikátem, který potvrzuje, že stránky serveru „jsou skutečně stránkami na adrese mojedatovaschranka.cz“, viz obrázek.
Pokud je příslušný serverový certifikát považován právě používaným programem (tj. vaším browserem) za důvěryhodný, pak browser vyhodnotí příslušné stránky jako „ty pravé“ a nechá vás na ně vstoupit a procházet z jedné na druhou (resp. mezi všemi stránkami, které serverový certifikát „pokrývá“).
Přitom vám browser dává najevo, že identitu stránek podle certifikátu ověřil (a také že se serverem komunikuje zabezpečeným způsobem, přes protokol HTTPS). Viz následující dva obrázky, pro Internet Explorer a Firefox.
Jiná situace ovšem nastane, pokud právě používaný browser „nezná“ příslušný serverový certifikát. Tedy pokud nemá podle čeho posoudit, zda je či není důvěryhodný – a tudíž ani nedokáže posoudit, zda příslušné stránky jsou či nejsou „těmi pravými“, nebo nějakými podvrženými stránkami, které se za „ty pravé“ jen vydávají.
Jde vlastně o obdobu toho, kdy vyhodnocujeme platnost elektronického podpisu na dokumentu a příslušná aplikace (například Adobe Reader) nám řekne „nevím“. Browser ale v této situaci aktivně varuje svého uživatele, že hodlá vstoupit na „neznámou půdu“. Následující příklad ukazuje vysvětlení, které k tomu poskytuje Firefox:
Toto je přesně ten problém, který si přivodila i Česká pošta s webových portálem ISDS na adrese mojedatovaschranka.cz: nepoužila pro něj takový serverový certifikát, který by většina browserů „znala sama od sebe“ a věděla, že ho může považovat za důvěryhodný. Musel by to totiž být certifikát, vystavený od některého ze zahraničních konkurentů vlastní certifikační autority PostSignum, kterou provozuje právě Česká pošta.
Místo toho Česká pošta použila serverový certifikát od “své“ autority PostSignum, který snad žádný browser nezná „sám od sebe“ – a tak vznikl popisovaný problém a na uživatele začala vyskakovat hláška na obrázku. A ani ve vysvětlování a napravování tohoto problému Česká pošta příliš neexcelovala (podrobněji viz již zmiňovaný článek „Stalo se: Česká pošta neradila správně“).
Les, nebo strom důvěry?
Vraťme se nyní zpět k podstatě problému: ať již se jedná o „podpisový“ certifikát a elektronický podpis na dokumentu, nebo o serverový certifikát a přístup ke konkrétnímu serveru, vždy jde o jedno a to samé: zda příslušný certifikát je či není důvěryhodný.
Nechme nyní na chvíli stranou to nejdůležitější (tedy samotné posouzení důvěryhodnosti) a podívejme se na tento problém čistě prakticky: když už máme pádný důvod, proč nějaký certifikát považovat za důvěryhodný, jak konkrétně svou důvěru vyjádříme?
V předchozím dílu jsme si to ukázali na příkladu s certifikátem Josefa Švejka: museli jsme ho umístit do úložiště důvěryhodných certifikátů příslušné aplikace (a ještě do správné „přihrádky“).
To bychom ale měli něco takového dělat s každým certifikátem, na který kdy narazíme? Pro každého úředníka, který nám kdy pošle něco se svým elektronickým podpisem? Pro každý zabezpečený server, který kdy navštívíme? Navíc pro každý program, který používáme a který s elektronickými podpisy pracuje?
Určitě již tušíte, že bude existovat nějaké jednodušší řešení, než pokaždé znovu vyjadřovat důvěru dalšímu a dalšímu certifikátu (nehledě již na samotné posuzování toho, zda tak můžeme učinit a dát mu svou důvěru).
Ono řešení spočívá v „přenosu důvěryhodnosti“. Princip je opět jednoduchý: věříme-li někomu, budeme věřit i tomu, za koho se nám on zaručí.
Aplikováno na naše potřeby může tento princip znít následovně: důvěřujeme-li někomu, kdo sám vydává certifikáty, můžeme důvěřovat i všem certifikátům, které vydá. A díky tomu pak můžeme věřit tomu, co je (všemi takto vydanými) certifikáty podepsáno či identifikováno (u serverových certifikátů).
Celý tento princip by se dal zobecnit do podoby jakéhosi „stromu důvěry“: pokud důvěřujeme tomu, kdo či co je v kořeni stromu, a pokud známe pravidla pro větvení a růst stromu (pro vznik nových uzlů) a považujeme je také za důvěryhodná, pak můžeme důvěřovat i všem uzlům a listům (koncovým uzlům), neboli celému stromu.
Smysl tohoto principu by už mohl být zjevný: právě díky němu nemusíme vyjadřovat svou důvěru každému jednotlivému uzlu či listu stromu (každému jednotlivému certifikátu), ale stačí nám vyjádřit svou důvěru kořeni celého stromu. Tedy nejvyššímu patru celé hierarchie.
A vlastně nám to může pomoci i s hodnocením důvěryhodnosti: místo toho, abychom museli posuzovat důvěryhodnost každého uzlu znovu a znovu, stačí nám posoudit důvěryhodnost kořene stromu a důvěryhodnost pravidel, podle kterých se ke stromu připojují další uzly.
Akreditované certifikační autority a stát jako garant důvěryhodnosti
Jak ale v praxi co nejefektivněji (a také co nejbezpečněji) využít uvedený princip se „stromem důvěry“?
Mělo by smysl například to, aby si svůj vlastní strom důvěry vytvářel například každý úřad, resp. každý orgán veřejné moci, či firma, organizace atd.?
Možné to je a stále se to děje, ale náš problém to moc neřeší: stále bychom totiž museli individuálně posuzovat důvěryhodnost každého úřadu (instituce, firmy atd.), a pečlivě studovat pravidla, podle kterých takovýto subjekt své certifikáty vydává. A to není pro praxi příliš únosné. Alespoň ne pro tu praxi, kterou zde máme na mysli a která souvisí s datovými schránkami, e-governmentem, úřady, zákony atd.
Nás proto bude zajímat jiné řešení. Takové, které záměrně počítá jen s několika málo stromy důvěry (a jejich kořeny), a které se navíc „opírá“ o autoritu státu. V tom smyslu, že důvěryhodnost kořene i pravidel budování stromu (vydávání certifikátů atd.) nejprve detailně posoudí stát, podle všech svých požadavků a norem (daných zákonem), a výsledek pak zveřejní.
Kladný výsledek takovéhoto posouzení je označován jako akreditace. A ten, kdo ho získává, je subjekt který vydává certifikáty, a který je z našeho pohledu kořenem celého stromu. V odborné terminologii se o něm hovoří jako o certifikační autoritě (ve smyslu poskytování certifikačních služeb). A pokud získá akreditaci od státu, stává se akreditovanou certifikační autoritou.
Zdůrazněme si ale hned, že opravdu není certifikační autorita jako certifikační autorita. Pokud chcete, můžete si zřídit svou vlastní certifikační autoritu – tím, že si na svém počítači pustíte příslušný program a s jeho pomocí vystavíte jeden či více certifikátů. Stejně tak může třeba banka provozovat svou vlastní certifikační autoritu pro své zákazníky, kteří následně používají vystavené certifikáty pro přístup ke svému bankovnímu účtu přes Internet. A tady už může jít o hodně. Takže certifikační autority mohou být opravdu velmi různé.
Proto v praxi vždy dávejme opravdu velmi velký pozor na to, kdo a podle jakých pravidel vystavil konkrétní certifikát (která certifikační autorita) – a podle toho také posuzujme jeho důvěryhodnost. Mementem budiž příklad z minulého dílu s certifikátem Josefa Švejka, vystavený „na koleně“ (na domácím počítači).
My ale máme, v rámci tohoto seriálu k datovým schránkám, situaci přece jen jednodušší v tom, že se můžeme omezit jen na (státem) akreditované certifikační autority – jejichž důvěryhodnost za nás posoudil stát. Dnes jsou v ČR takovéto autority tři (v pořadí získání akreditace):
- I.CA (První certifikační autorita)
- CA PostSignum (Certifikační autorita České pošty)
- CA eIdentity
Každá z nich přitom musí definovat a zveřejnit pravidla svého fungování, včetně pravidel pro vydávání různých druhů certifikátů. Tato pravidla se jsou obecně označována jako certifikační politiky, a pro každý druh vydávaného certifikátu obvykle platí samostatná (tj. jiná) certifikační politika. Například pro vydávání (osobních) certifikátů by příslušná certifikační politika měla zcela vylučovat vystavení certifikátu literární postavě Josefa Švejka (viz první díl).
Kvalifikované certifikáty a uznávaný podpis
Důležité také je, že když už stát posuzuje fungování některých certifikačních autorit a dává jim svou akreditaci, pak si také může vynucovat, aby pro určité účely – například „pro komunikaci v rámci orgánů veřejné moci“ – byly používány jen certifikáty vydané těmito akreditovanými certifikačními autoritami. A ještě ne jakékoli certifikáty (protože i akreditovaná autorita jich obvykle nabízí více druhů), ale jen takové, které jsou v zákoně přesně popsány co do svých vlastností a parametrů. A těm se říká kvalifikované certifikáty.
Tím už jsme se dostali i k další důležité terminologii: k tomu, čemu se v praxi říká „uznávaný elektronický podpis“. Je definován v zákoně o elektronickém podpisu (zákon č. 227/2000 Sb.) v jeho paragrafu 11, který říká, že:
V oblasti orgánů veřejné moci je možné za účelem podpisu používat pouze zaručené elektronické podpisy a kvalifikované certifikáty vydávané akreditovanými poskytovateli certifikačních služeb (dále jen „uznávaný elektronický podpis“).
Kořenové a zprostředkující certifikační autority
Teď už jistě tušíte, že alespoň pro potřeby komunikace „v oblasti orgánů veřejné moci“ bude postačovat vyjádřit důvěru třem výše vyjmenovaným certifikačním autoritám, které jsou akreditované od státu. Tedy pokud nebudeme mít zásadněji odlišný názor od státu, který jejich důvěryhodnost posuzoval v rámci akreditace.
Takže když například vyjádříme svou důvěru akreditované certifikační autoritě PostSignum, provozované Českou poštou, už nebudeme muset individuálně vyjadřovat svou důvěru konkrétním certifikátům, které tato certifikační autorita vystavila. A například při vstupu na webový portál ISDS by nás již neměla trápit výše popisovaná hláška o neznámém serverovém certifikátu (protože jde o certifikát, vystavený právě akreditovanou certifikační autoritou PostSignum).
Stejně tak by pro nás měl být automaticky důvěryhodný i kvalifikovaný (podpisový) certifikát každého úředníka, pokud mu jej vystavila akreditovaná certifikační autorita PostSignum. A pokud vyjádříme svou důvěru všem třem akreditovaným certifikačním autoritám, už bychom měli mít náš problém vyřešený.
Bohužel tomu tak ještě není. Princip je skutečně takový, jak jsme si ho právě popsali – ale praxe je přece jen složitější. Jak co do technické implementace (kterou si necháme na příště), tak i co do fungování samotných certifikačních autorit.
Každá z akreditovaných certifikačních autorit v ČR totiž poskytuje více služeb, než jen vydávání kvalifikovaných certifikátů (pro potřeby podepisování při komunikaci v rámci orgánů veřejné moci). O jedné další variantě jsme se již zmínili, jsou to serverové certifikáty, vystavované nikoli konkrétním fyzickým osobám, ale konkrétním serverům.
Kromě toho ale akreditované certifikační autority běžně vydávají také další varianty certifikátů, ať již kvalifikovaných či jiných (označovaných pak jako „komerční“): kvalifikované systémové certifikáty, či osobní komerční certifikáty, certifikáty testovací, či již zmiňované certifikáty serverové (které nejsou kvalifikované, ale komerční).
Podrobnější rozlišení těchto certifikátů si nechme na později. Dnes si jen dopředu naznačme, že pro datové schránky využijeme osobní certifikát jak kvalifikovaný, tak i komerční: kvalifikovaný je nutný pro podepisování (tedy pokud vůbec chceme či potřebujeme podepisovat vlastní dokumenty, vkládané do datové schránky), zatímco pro přihlašování k datové schránce je nutný certifikát komerční.
A pokud bychom například potřebovali zašifrovat nějaké své sdělení (dokument), budeme také potřebovat certifikát komerční (a nikoli kvalifikovaný). Důležité ale je, že pro zašifrování naší zprávy by to musel být certifikát příjemce, nikoli ten náš!
Ale nepředbíhejme, k šifrování se ještě dostaneme: to důležité, co pro nás v tuto chvíli vyplývá z „širší produkce“ našich akreditovaných certifikačních autorit, je to že se tyto autority obvykle organizačně člení, nejčastěji na dvě či tři dceřiné autority: kvalifikovanou, komerční, a někdy ještě autoritu časových razítek. A teprve ty pak vydávají jednotlivé druhy certifikátů, podle specifických certifikačních politik. Představu, pro konkrétní příklad CA PostSignum, ukazuje obrázek.
S tím souvisí i obvyklá terminologie: „mateřská“ certifikační autorita je označována jako kořenová certifikační autorita (anglicky: root certificate autority), a její dcery jako zprostředkující certifikační autority (anglicky: intermediate certificate autority). Výjimkou je v tomto ohledu I.CA, která má „ploché“ uspořádání (viz příště).
S tím pak musíme počítat při konkrétním vyjadřování důvěry, skrze instalování certifikátů příslušných autorit: nestačí instalovat jen certifikát kořenové autority, ale obecně si musíme nainstalovat i certifikáty všech jí podřízených certifikačních autorit – aby se nám správně rozpoznávaly všechny druhy certifikátů od všech těchto autorit, resp. vyhodnocovala platnost podpisů a časových razítek. A také aby se mohla správně zkontrolovat celá hierarchie vystavujících certifikačních autorit, která je popsána v samotném certifikátu, viz příklad na obrázku.
Navíc musíme dát pozor na to, abychom si příslušné certifikáty certifikačních autorit instalovali na správné místo, do správných „přihrádek“ v rámci úložiště certifikátů dané aplikace či operačního systému. Pokud zvolíme špatnou přihrádku (či necháme volbu na systému a ten se splete), pak nebude následné vyhodnocování podpisů probíhat správně a my budeme dostávat nesprávné odpovědi.
Ale jak konkrétně to udělat, si nechme zase na příště.