Miroslav Holec
Premium

Jak funguje a jak získat elektronický podpis

Miroslav Holec   16. ledna 2023  update 4. ledna 2024

Pojem elektronický podpis s sebou nese pro běžné uživatele nekonečnou hořkou pachuť. Sám o sobě je totiž tento pojem velmi obecný a zahrnuje celé spektrum způsobů, kterými lze ověřit totožnost podepsané osoby ve vztahu k datům. V praxi se nejčastěji bavíme o podepsání konkrétní datové zprávy pomocí digitálního certifikátu vydaného certifikační autoritou. Pro připojení elektronického podpisu k datové zprávě tedy potřebuje podnikatel pouze digitální certifikát. A ani v roce 2023 není jednoduché digitální certifikát získat.

Jak funguje elektronický podpis

Každý, kdo pracuje s elektronickým podpisem by měl mít fundamentální představu o tom, jak podepisování dokumentů funguje a k čemu podepisování v praxi slouží. Přestože by bylo přesnější používat termín "digitální podpis", svezu se pro tentokrát na vlně běžně a marketingově užívaného termínu "elektronický podpis". Pro účely článku se bude jednat o totéž.

Hashování dokumentů

Podepisovaný dokument může být různého typu. Může se jednat stejně tak o obrázek jako o PDF dokument nebo hudební skladbu ve formátu MP3. Pro zjednodušení si představme, že můžeme s každým dokumentem provést sérii matematických operací a z daného dokumentu spočítat tzv. hash. Hash je text o pevně dané délce. Stačí jakákoliv změna v dokumentu a hash se matematicky přepočítá a změní. Ve vesmíru existuje určitě mnoho dokumentů, ze kterých by bylo možné získat totožný hash. To nás ale netrápí, protože nikdo moc netuší, které to jsou. Níže se můžete podívat, jak takový hash reálně vypadá:

image-20221228083300329

Výše uvedený hash jsem vypočítal pro scan mé občanky ve formátu PNG. Všimnout si můžete, že vypočítaný hash byl 2x totožný, protože byl počítán nad stejným obrázkem. Poté jsem obrázek zmenšil a spočítal hash znovu. Protože došlo ke změně obrázku, změnil se i vypočtený hash. K hashování jsem použil funkci SHA-256, která je dnes široce používaná.

Šifrování dokumentů klíčem

Nyní se dostaneme k pojmu elektronický podpis. Odesílatel, který disponuje digitálním certifikátem má k dispozici dva klíče: soukromý a veřejný. Tyto klíče jsou komplementární. Soukromý klíč vlastní pouze odesílatel a nikdo jiný s ním nikdy nepřijde do styku. Právě soukromým klíčem odesílatel vypočtený hash zašifruje a vytvoří tak elektronický podpis. Když odesílatel posílá dokument příjemci, pošle s ním i elektronický podpis.

Příjemce má od odesílatele k dispozici dokument, ze kterého si může spočítat opět ten samý hash a s pomocí veřejného klíče ověřit, zda byl tento stejný hash podepsán klíčem soukromým. Kdyby někdo v mezičase dokument změnil, pak by příjemce spočítal jiný hash a tudíž by ani neseděla kontrola pomocí veřejného klíče. Znamená to, že elektronický podpis nebrání změně dokumentu. Pouze umožňuje ověřit, že se dokument od podepsání soukromým klíčem nezměnil.

Zvídavého čtenáře možná napadne, proč vlastně potřebujeme hash. Proč rovnou nepodepisujeme celý obsah původního dokumentu? Jsou to přeci také "jedničky a nuly". Bylo by to sice možné, ale velmi zdlouhavé. Šifrovat celé dokumenty asymetricky by trvalo příliš dlouhou dobu. Proto se z nich vypočítává hash o pevné délce, která se uvádí v bitech.

Svou pevnou délku má také soukromý a veřejný klíč. Když narazíte na pojem SHA-256/RSA, bavíme se o hashování o délce 256 bytů (2048 bitů) a šifrovacím algoritmu RSA (Rivest, Shamir, Adleman). Čím je velikost klíče delší, tím je obecně šifrování bezpečnější a zároveň pomalejší. V současnosti je pro běžné scénáře zcela dostačující klíč o délce 2048 bitů.

Soukromý i veřejný klíč mají podobu tzv. certifikátů. Tím se dostáváme k hlavnímu marketingovému pojmu. Když si jdeme "koupit elektronický podpis", vlastně si kupujeme certifikát. Certifikát je fyzický soubor v počítači, který vedle klíče obsahuje i další data. Například informace o držiteli a vydavateli certifikátu nebo datum vydání certifikátu. Zakoupený certifikát je sám o sobě podepsán soukromým klíčem certifikační autority.

Existují různé formáty certifikátů. Vizuálně to může vypadat takto:

image-20221228082524431

V praxi bývá zvykem, že si v počítači vytvoříme tzv. CSR (certificate signing request). V rámci vytváření CSR vznikne soukromý a veřejný klíč. Veřejný klíč je přímo součástí CSR, zatímco soukromý klíč je uchován bezpečně v počítači. Součástí CSR je také identifikace žadatele. Vzniklý CSR musí následně podepsat soukromým klíčem certifikační autorita.

Certifikační autorita

Pokud je jasný princip elektronického podpisu, je na čase vyjasnit si dále pojem "certifikační autorita". Vytvořit certifikát si totiž může v počítači úplně každý a zcela zdarma. Následně lze takovým certifikátem podepsat dokument a ten někomu poslat k ověření. Adresát pak může a nemusí podpisu věřit. V tom je ten háček. Technicky si mohu vytvořit certifikát a zapsat do něj libovolné údaje. Mohu se vydávat za kohokoliv chci. To nás přivádí k pojmu "důvěryhodnost certifikátu". Když si certifikát vytvořím sám, není příliš důvěryhodný. Dokument podepsaný nedůvěryhodným certifikátem by žádný úřad neměl uznat. Záměrně píšu neměl, protože kvalifikovanost úředníků je prachbídná a v praxi... raději nic. Zkrátka pro komunikaci potřebujeme důvěryhodný certifikát.

Důvěryhodný certifikát nám musí vydat nezávislá a důvěryhodná instituce. Instituce, která je důvěryhodná pro odesílatele i příjemce. Obvykle je řeč o certifikační autoritě. Když chci tedy certifikát, požádám o něj certifikační autoritu. Úkolem certifikační autority je ověřit mou totožnost a mimo jiné za tuto službu si autorita vezme menší nebo větší "úplatek". Veškeré dokumenty tedy podepisuji certifikátem, který byl vydán certifikační autoritou. Důvěryhodným certifikátem. Příjemce pak kromě ověření dokumentu sleduje i důvěryhodnost certifikátu.

Celé je to velmi podobné principu ověření podpisu notářem. Když chceme někomu předat plnou moc, na úřadě by dotyčný s běžným podpisem nepochodil. Většinou musíme nechat podpis úředně ověřit někým, komu úřady důvěřují. Stačí zajít na poštu, která je takovém případě důvěryhodnou autoritou. Nyní je již podpis důvěryhodný.

Typy elektronických podpisů

Aby bylo vše ještě složitější, existuje hned několik typů elektronických podpisů (certifikátů) a každá certifikační autorita vydává jen určité typy. Zákon č. 297/2016 Sb. je v tomto ohledu konkrétní a ukládá například orgánům veřejné moci akceptovat pouze zaručený elektronický podpis založený na kvalifikovaném certifikátu.

Pokud chce podnikatel komunikovat pouze s jinými firmami, obvykle si vystačí s levnějšími komerčními/osobními certifikáty, které vystavuje mnoho certifikačních autorit. Platí, že "vyšší verze" jsou dražší, vyžadují přísnější stupeň ověření a jejich vystavení tudíž trvá delší dobu. Níže se můžete podívat na tabulku pro porovnání:

image-20221227231142017

V tabulce jsou vidět certifikační autority Sectigo a DigiCert. Zvýrazněný DigiCert Premium CLASS 2 používám pro komunikaci s firmami já. Firma má jistotu, že certifikátem podepsané dokumenty jsou podepsané mou osobou a organizaci.

Žádný z výše uvedených certifikátů není kvalifikovaný. Orgány veřejné moci v ČR dokumenty podepsané takovým certifikátem nesmí uznat. Soudy, sociální správa, celnice, zdravotní pojišťovny nebo různé státní instituce vyžadují nejčastěji podepsání kvalifikovaným certifikátem a ten vydává jen omezené množství autorit. V ČR se jedná o PostSignum, eIdentity a I.CA. Ve všech případech si certifikační autorita provádí důkladné ověření (například občanským průkazem).

Jaký typ certifikátu si vybrat a jakou zvolit autoritu?

Záleží na potřebách každého podnikatele. Proces vystavení certifikátu je poměrně složitý a řádově složitější v případě kvalifikovaných certifikátů. Za sebe musím říct, že pro komunikaci s českými orgány veřejné moci plně dostačuje datová schránka. Téměř jakýkoliv dokument poslaný datovkou je uznán. Nenašel jsem za poslední roky žádnou situaci, kdy bych si nevystačil s datovkou a potřeboval bych kvalifikovaný certifikát. Datovku jsem si před lety jednou vytvořil a od té doby s ní nejsou spojené žádné starosti ani náklady. Poslední dobou se navíc rozšiřuje ověřování s pomocí bankovní identity.

Doplnění 16.1.2023 Dle komentáře od Kamila Z., který jsem dostal e-mailem, existují situace, kdy je podpis založený na kvalifikovaném certifikátu nezbytný. Pokládám za užitečné příspěvek připojit:

image-20230116132003808

Z mého pohledu dávají smysl spíše komerční certifikáty. Používám je k podepisování různých dokumentů (NDA, nabídky, smlouvy) vůči firmám. Ze všech certifikačních autorit mám mnoho let dobrou zkušenost s DigiCert. Jejich certifikáty používám i pro zabezpečení všech mých webů.

Potřebujete-li certifikát výhradně ke komunikaci s jedním subjektem (jeden účel), není od věci zjistit, jaké má tento subjekt požadavky na důvěryhodnost certifikátu. Byla by škoda zaplatit za certifikát, jímž podepsaný dokument příjemce neuzná. Jestliže chcete obecný a široce uznávaný komerční certifikát, vybírejte ten, který obsahuje verifikaci e-mailu, jména a firmy.

Postup k získání komerčního certifikátu

Certifikát lze zakoupit u mnoha českých firem. Háček je v tom, že uznávané certifikační autority jsou zahraniční a tudíž se ve všech případech jedná o přeprodej. Český e-shop má jen roli mediátora mezi kupujícím a certifikační autoritou. Slouží k vytvoření objednávky a inkasování plateb, ze kterých si část odepíše na svůj účet a zbytek pošle certifikační autoritě. Kupující má na druhou stranu českou podporu, která s procesem získání certifikátu pomáhá. Postup vypadá zhruba následovně.

1. Objednávka

V první řadě je nutné si vybrat vhodný e-shop a certifikát. Já osobně mám dobrou zkušenost s obchodem SSLmentor. Stačí vybrat vhodný certifikát, dobu platnosti a vyplnit osobní údaje. Delší platnost certifikátu znamená, že celý proces vystavení nemusíme podstupovat tak často a cena je většinou i výhodnější. Na druhou stranu u certifikátu delší dobu platnosti riskujeme, že bude kompromitován.

image-20221228095951565

2. Verifikace

Na základě objednávky provede certifikační autorita ověření identity. Zde záleží na typu certifikátu. U těch nejlevnějších s ověřením e-mailu stačí kliknout na odkaz v e-mailové schránce. V případě ověření osob je většinou nutné poslat například scan řidičského průkazu a nějaký výpis z účtu nebo jiný dokument, kde je adresa se jménem. Běžně se setkávám s ověřením telefonickým hovorem ze zahraničí, kdy se operátor zeptá na jméno, e-mail a adresu. U kvalifikovaných certifikátů může být nutná fyzická přítomnost na úřadě nebo stažení dalšího software, s jehož pomocí ověření proběhne. Velmi často se již tento krok označuje jako žádost o vydání certifikátu a může být rozdělen do více kroků.

image-20221228100110553

3. Žádost o certifikát

Pokud to neudělá český e-shop sám, bude nutné vygenerovat žádost o vystavení certifikátu. Tento krok se liší od situace. Zpravidla se na základě výzvy dostanete na webovou stránku vydavatele certifikátu a tam bude nutné vyplnit veškeré informace o organizaci společně s kontaktními údaji a požadavky na certifikát. Výjimečně je v tomto kroku nutné vytvořit si svépomocí CSR. V takovém případě ale dostanete pokyny, jak to udělat. V případě certifikátu od DigiCert je tento krok volitelný. Použití vlastního CSR je vždy bezpečnější.

image-20221228095825540

4. Získání certifikátu

Poslední krok se liší s ohledem na krok 3. Jednodušší varianta spočívá pouze ve stažení hotového balíčku s certifikátem v různých formátech. Jestliže bylo v kroku 3 nutné vytvořit CSR, pak certifikační autorita v kroku 4 umožní stažení certifikátu, který se musí spárovat s původním soukromým klíčem. V tomto případě jistě dodá e-shop podrobnější pokyny. Postup se totiž liší dle platformy a vydavatele certifikátu.

Postup získání kvalifikovaného certifikátu

Pro vydání kvalifikovaného certikátu jsou k dispozici 3 autority. Jestliže Vám nevadí osobní návštěva na pobočce preferované autority, pak si zvolíte PostSignum pro větší množství poboček.

Rozdíly k 4.1.2024 vidím následující:

👉 eIdentity - Nenašel jsem možnost vydání certifikátu online a mají jen 3 pobočky. Za mě nepoužitelné.

👉 PostSignum - Umožňuje vydání osobního certifikátu online s tím, že ověřit identitu je nutné pomocí služby eObčanka (= musíte mít občanku s čipem a čtečku OP). Pokud tuto výbavu nemáte, musíte se stavit osobně na pobočce České pošty se službou Czech POINT. To samé platí, pokud chcete vydat certifikát s uvedením IČ (OSVČ, právnická osoba). Výhodu vidím v tom, že poboček Czech POINT je mnoho.

👉 I.CA - Umožňují vydání osobního certifikátu online s tím, že pro ověření identity je nutné nainstalovat si mobilní aplikaci Zealid. V mobilní aplikaci je nutné ověřit svou identitu naskenováním občanského průkazu a obličeje. Proces je poměrně jednoduchý a projít jím můžete s pomocí návodu online. V případě certifikátů s uvedením IČ (OSVČ, právnické osoby) se i zde nevyhnete návštěvě pobočky (i když na webu je uvedeno, že se můžete obrátit na sales, takže možná to nějak jde). Pro vydání certifikátu je nutné udělat prvotní registraci. Poté musíte čekat až 24 hodin na e-mail s možností dokončení žádosti. Jestliže tedy na vydání hodně spěcháte, asi je lepší PostSignum. Na druhou stranu I.CA Vám dokáže vydat tzv. TWINS, což je kombinace kvalifikovaného certifikátu a komerčního certifikátu v jednom.

Dodal bych, že v případě vydání certifikátu například pro OSVČ budete muset ve všech případech na pobočce předložit i živnostenský list.

Instalace kořenového certifikátu

Ještě než se pustíme do instalace vydaného certifikátu, je nutné mít v počítači nainstalovaný kořenový certifikát certifikační autority, která vám vydala váš certifikát. Kořenový certifikát totiž slouží k ověření všech certifikátů, které daná CA vydala. Máte-li počítač delší dobu, řadu kořenových certifikátů už v něm máte. Každá certifikační autorita má nicméně své kořenové certifikáty, které je nutné do počítače instalovat. Většinou mají příponu cer a na daný soubor stačí jen poklepat. Některé CA nabízí ke stažení program, který certifikáty nainstaluje a správně nastaví. Certifikát se totiž musí instalovat do složky s kořenovými certifikáty, takže vás počítač možná vyzve k zadání hesla správce.

Počítač dost možná kořenový adresář označí za nedůvěryhodný. V takovém případě by byly nedůvěryhodné i certifikáty vydané danou CA. Budete muset ručně upravit nastavení kořenového certifikátu a označit ho jako důvěryhodný. Tento krok musíte udělat výhradně s certifikátem, který skutečně pochází od dané CA. Za žádných okolností neoznačujte jako důvěryhodné certifikáty soubory, jejichž původ neznáte!

image-20240108133500319

Mějte na paměti, že když někomu pošlete podepsaný dokument, musí mít cílová osoba nainstalovaný kořenový certifikát od dané CA, aby mohla platnost podpisu ověřit. I z toho důvodu je dobré volit CA, které jsou široce užívané v daném prostředí.

Instalace certifikátu

Nyní máme fyzicky uložený certifikát. Nejčastěji se používá formát pfx nebo p12 dle platformy (Windows / Linux / macOS). Dle potřeby lze souborovou příponu p12 a pfx změnit. Certifikát by měl být uložen na bezpečném místě, protože s jeho pomocí může kdokoliv podepisovat dokumenty. Při exportu certifikátu doporučuji vždy nastavit silné heslo.

Aby s certifikátem bylo možné pracovat, je nutné ho uložit do úložiště certifikátů. V případě macOS stačí na certifikát pouze poklepat myší a je hotovo. Certifikát by se měl uložit na správné místo. V případě Windows je to více klikání.

image-20230106150604001

Jak podepsat dokument

Stačí spočítat hash dokumentu, poté ho asymetricky zašifrovat soukromým klíčem a vzniklý podpis odeslat spolu s dokumentem. To ale nikdo ručně dělat nechce. V praxi proto použijeme software, kterému jen řekneme, že chceme dokument podepsat digitálním certifikátem. Asi nejjednodušší je použít Adobe Acrobat Reader.

Důležitá aktualizace: Podepisování dokumentů s novými verzemi produktu Adobe Acrobat Reader již není zdarma. Je nutné přeplatné. Podepisování zdarma je možné jen u starší verze Adobe Acrobat Reader DC.

Adobe DC zdarma pro windows a mac

Adobe Acrobat Reader si umí sáhnout do úložiště certifikátů a dokument podepsat. Pracuje s formátem PDF, takže jiné typy dokumentů budete muset do PDF převést. Používáte-li macOS, vytvoření PDF je hračka. Stačí ve finderu kliknout pravým tlačítkem nad souborem a v rychlých akcích zvolit možnost "Vytvořit PDF".

image-20221228093509551

V případě běžných office dokumentů (docx, xlsx) je nejjednodušší daný dokument otevřít ve výchozí aplikaci a uložit do formátu PDF.

PDF soubor poté otevřeme v aplikaci Adobe Acrobat Reader a ze záložky nástroje vybereme položku Certifikáty. Následně zvolíme možnost Digitálně podepsat a na vhodném místě v dokumentu vytvoříme rámeček, kam se natisknou metadata podpisu. Poté aplikace nabídne certifikát k podpisu a máme hotovo.

image-20230106151022381

V místě podpisu pak vznikne něco v tomto smyslu:

image-20230106151329142

Tím je dokonáno.

Závěr

Popsali jsme si fungování elektronického podpisu. Je důležité si uvědomit, že elektronický podpis představuje záruku, že podepsaný dokument se od svého podepsání určitou identitou nezměnil. Příjemce dokumentu se musí rozhodnout, zda bude podpisu důvěřovat. Důvěryhodný digitální podpis je vytvořen s pomocí digitálního certifikátu, který vydala důvěryhodná certifikační autorita. Při komunikaci se státem je nutné podepisovat dokumenty kvalifikovaným certifikátem, který v Česku vydávají pouze 3 subjekty. Pro komunikaci se státem může být jednodušší použít datovou schránku nebo bankovní identitu. Pro komunikaci s firmami je dostačující "komerční" certifikát. Proces vystavení digitálního certifikátu je poměrně zdlouhavý. Vydaný certifikát je vhodné uložit na bezpečné místo, aby nedošlo k jeho znaužití. S vydaným certifikátem lze podepisovat PDF dokumenty s pomocí aplikace Adobe Acrobat Reader.