Elektronický podpis a Linux v roce 2021

27. 7. 2021
Doba čtení: 12 minut

Sdílet

 Autor: Depositphotos
Těžko se tomu věří, ale elektronický podpis je s námi (legislativně) už více než 20 let. Nedávno jsme ale dostali požadavky na jeho podporu, tak jsem si řekl, že si ho nakonec taky pořídím.

Popravdě je celkem smutné, že i v roce 2021 neexistuje žádná jednoduše použitelná a široce rozšířená digitální náhrada za klasický podpis. Máme dnes hromadu způsobů ověření, v mobilním bankovnictví můžeme přesouvat miliony, ale jak dojde na nějakou smlouvu, pořád závisíme na kuří noze na kusu papíru. Měl by to řešit právě elektronický podpis, ale jak dále ukážu v tomto článku, existují celkem zřejmé důvody, proč tomu tak ani po 20 letech není.

Hned na začátek bych chtěl říct, že nejsem na elektronický podpis žádný odborník. Stačí si přečíst několik článků na danou problematiku od Jiřího Peterky na Lupě a víte, že ani odborníkem být nechcete. Čím víc do toho člověk zabrušuje, tím víc zjišťuje, jak je legislativa kolem toho komplikovaná.

Trochu zklamání pro mě bylo, že elektronický podpis není celosvětově uznávaný. Váš podpis propiskou je uznávaný od Japonska až po USA, ale elektronické podpisy jsou roztříštěné podle národních legislativ. My máme aspoň to štěstí, že v rámci EU je legislativa sjednocená pod eIDAS, takže naše elektronické podpisy jsou uznávané alespoň v rámci Evropy.

Získání kvalifikovaného certifikátu

V České republice jsou tři certifikační autority akreditované k vydávání elektronických podpisů: Česká pošta, První certifikační autorita a eIdentity. Nepřišel jsem na důvod, proč si z těch tří nevybrat Českou poštu. Je nejlevnější, ověřit totožnost si můžete na každé poště s CzechPointem a je taky největší, takže má největší šanci být jako certifikační autorita podporovaná u protistrany. Elektronický podpis v podobě kvalifikovaného certifikátu stojí 400 Kč za rok. Díval jsem se na to, kolik stojí kvalifikované certifikáty splňující eIDAS u zahraničních certifikačních autorit, a vyjdou na tisícovky ročně, což je pro běžného člověka zcela mimo jakoukoliv rentabilitu.

Česká pošta nabízí online způsob žádosti o epodpis, ale v Linuxu nefunguje. Někde jsem četl, že je na ni potřeba Internet Explorer, což by mě normálně v roce 2021 šokovalo, ale v tomto případě by mě to ani nepřekvapilo. Offline způsob probíhá tak, že si doma vygenerujete privátní klíč a k němu žádost, s kterou zajdete na poštu. Na vygenerování privátního klíče a žádosti Pošta poskytuje letitou aplikaci v Javě, která funguje, ale byl jsem mnohem raději, když jsem zjistil, že mají také návod na vytvoření v OpenSSL.

K žádosti v podobě souboru s otiskem klíče, kterou musíte donést na flashce, je potřeba přidat ještě dva vyplněné formuláře. Abych na poštu nemusel znovu, chtěl jsem být připravený na všechny alternativy, takže kromě žádosti vygenerované pomocí OpenSSL, jsem měl i tu vygenerovanou jejich aplikací. Žádosti jsem měl pro jistotu také na záložní flashce, což se ukázalo jako šťastné rozhodnutí, protože primární flashka, na které mám kromě standardního oddílu FAT ještě jeden zašifrovaný LUKSem, dokázala počítač na poště dokonale zmást.

Celý proces na poště zabere asi 15 až 20 minut. Odkaz na osobní certifikát vám dojde do mailu a z pošty si odnesete papír s kódy pro případné zneplatnění. Doma si pak pomocí staženého certifikátu a privátního klíče buď v aplikaci České pošty nebo pomocí OpenSSL vygenerujete bundle certifikátu a privátního klíče ve formátu p12, který pak můžete používat jako elektronický podpis v aplikacích.

Úrovně elektronického podpisu

Nutno říct, že podle legislativy existuje několik úrovní elektronického podpisu. Výše popsaným postupem získáte tzv. uznávaný elektronický podpis. Ten je uznávaný jako náhrada vlastnoručního podpisu, pokud vystupujete v pozici běžného občana. Pokud ale vystupujete z pozice veřejné správy, potřebujete tzv. kvalifikovaný elektronický podpis. Ten je stejně jako uznávaný založený na certifikátu od kvalifikované autority, ale navíc vyžaduje, aby byl vygenerovaný a uložený na kvalifikovaném prostředku pro vytváření elektronických podpisů. Tím jsou typicky nějaké hardwarové tokeny. Takovým jsou nové občanské průkazy s čipem. Pokud chcete mít podpis přímo na občance a mít tak kvalifikovaný elektronický podpis, musí ho tam nahrát přímo pošta. Je to ale omezující, protože potřebujete čtečku čipových karet a jste závislí na softwaru pro komunikaci s občankou.

Myslím, že celý proces vytvoření elektronického podpisu dobře ilustruje, proč to u nás není masová záležitost. Je to nad technické schopnosti valné většiny občanů. Asi jediný způsob, jak zajistit, aby se to masově rozšířilo, je odstínit uživatele od technických detailů a zajistit, aby měl podpis pokud možno každý. Stát by měl dávat elektronický podpis zdarma ke každé nové občance s tím, že proces se zjednoduší pouze na to, že po uživateli se bude požadovat pouze zadání hesla z certifikátu. Když bude každý nosit elektronický podpis v peněžence, aniž by musel procházet složitým procesem a platit každý rok několik stovek, existuje nějaká šance, že by se to mohlo rozšířit.

Pokud chcete v Linuxu pracovat s elektronickým podpisem PostSignum, tak na zásadní problém narazíte hned na začátku: Česká pošta není mezi certifikačními autoritami. V Linuxu se seznam certifikačních autorit de facto odvíjí od toho, co má Mozilla v NSS, a tam kořenové certifikáty České pošty zatím prostě nejsou. Česká pošta se o to snaží, ale proces trvá už dva roky a je otázka, kdy bude dokončený. Ve Windows je Česká pošta uznávaná jako certifikační autorita už od roku 2010. V macOS je dle mých informací situace stejná jako na Linuxu.

Přidání kořenových certifikátů

Pokud tedy chceme vůbec ověřit elektronický podpis PostSignum, musíte si kořenové certifikáty České pošty stáhnout a importovat. Většina aplikací se dnes sjednotila na NSS a sdílí certifikáty přes sdílenou databázi, která se nachází v /etc/pki/nssdb  nebo ~/.pki/nssdb. Čekal jsem, že si s importem certifikátů do této databáze poradí Seahorse/GNOME Keyring, jakožto výchozí systémový nástroj (mimo jiné) pro práci s certifikáty. Ten to ale z nějakého důvodu nezvládne. Nicméně emailový klient Evolution, který používám, to zvládá na jedničku (Upravit->Předvolby->Certifikáty).

Případně lze použít méně intuitivní konzolový nástroj certutil. Firefox sice používá NSS (obojí pochází od Mozilly), ale úložiště certifikátů má vlastní. Ve Fedoře (a RHELu) ještě načítá systémové certifikáty z /etc/pki/ca-trust/source/anchors  a umožňuje zapnout načítání certifikátů z /usr/lib/mozilla/certificates, ale sdílená databáze NSS má smůlu. Řešení existuje v podobě načítání skrz p11-kit, ale pokud se jedná o jednorázové přidání několika certifikátů, je asi lepší to udělat ručně: Nastavení->Soukromí a zabezpečení->Zabezpečení->Zobrazit certifikáty…).

Přidání samotného elektronického podpisu ve formátu p12 je obdobné. Jen ho nepřidáváte mezi certifikáty autorit, ale mezi osobní certifikáty a musíte zadat heslo k obsaženému privátnímu klíči.

Správa certifikátů v Evolution

Správa certifikátů v Evolution

Ještě než jsem pustím do toho, jak jednotlivé aplikace práci s elektronickými podpisy zvládají, dovolím si menší vsuvku. Doteď jsem se bavil o pokročilém elektronickém podpisu vytvořeném pomocí kvalifikovaného certifikátu (v české legislativě uznávaného elektronického podpisu). V úvodu zmiňovaný eIDAS ale umožňuje další formy pokročilého elektronického podpisu. Jen od nich požaduje, že musí obsahovat informace jednoznačně odkazující na podpisujícího, který jako jediný má kontrolu nad prostředky k jeho vytvoření, a celý mechanismus dokáže zajistit následnou integritu podepsaného dokumentu.

Existují služby, které toho dosahují jinými způsoby než osobními certifikáty. Často po uživatelích jen chtějí „ruční“ podpis myší, což vede hodně lidí k domněnce, že k podepsání elektronického dokumentu stačí vložit naskenovaný ruční podpis ve formě obrázku. Pokud ale řešení neobsahuje další mechanismy k jednoznačnému ověření (přihlášení, biometrické informace z podepisování na tabletu jako tlak pera apod.) a zachování integrity dokumentu, spadá podpis do kategorie základního elektronického podpisu, který stále má určitou právní váhu, ale vůči státní správě nebo u důležitějších smluv s ním nepochodíte, protože jeho zabezpečení proti zneužití je minimální. V USA je legislativa vůči tomuto typu elektronického podpisu otevřenější. Asi proto se v mnoha aplikacích pod „digitálním/elektronickým podpisem“ neskrývá nic jiného než vložení obrázku podpisu do dokumentu.

Evince

Elektronický podpis asi nejčastěji využijete při podepisování dokumentů ve formátu PDF. Výchozím prohlížečem PDF je ve většině distribucí Evince, který zatím s podpisy neumí pracovat vůbec. O vývoj Evince se staráme především my a máme v plánu s tím něco dělat. V první fázi bychom chtěli uživateli zobrazit, že je dokument podepsaný, a podpis ověřit. V další fázi pak přímo podepisování umožnit.

Okular

Prohlížeč PDF z projektu KDE je, co se týče elektronických podpisů, o kus dále než Evince. Podpisy zobrazí a ověří už několik let, ale v nejnovější verzi umí dokumenty také podepisovat. Implementaci této funkcionality sponzorovala Technická univerzita v Drážďanech, takže se dá předpokládat, že splňuje evropské směrnice pro podepisování dokumentů, ale certifikaci na to nemá.

Pokud chcete dokument podepsat, musíte zamířit do Nástroje->Digitally sign… Okular vyžaduje, abyste do dokumentu vložili „razítko“, takže v následujícím kroku musíte vyznačit oblast, kde se má vykreslit. Do dokumentu se potom vloží čtverec s informací, kým a kdy byl dokument podepsán. Bohužel Okular trpí klasickým problém vkládání neASCII znaků do PDF, takže místo „Signed by Jiří Eischmann“ se zobrazí „Signed by Ji Eischmann“.

Okular bohužel u informací o elektronickém podpisu nezvládá české znaky

Okular bohužel u informací o elektronickém podpisu nezvládá české znaky

Foxit Reader

Potom, co Adobe přestalo vyvíjet Adobe Reader, což je taková referenční implementace PDF prohlížeče, pro Linux, byl Foxit Reader považovaný za nejpokročilejší komerční alternativu. Ačkoliv Foxit má několik produktů na práci s PDF, z nichž některé umí pracovat s elektronickým podpisem v podobě certifikátu, pro Linux podporuje pouze základní Foxit Reader, který umí do PDF vložit pouze „vizuální“ podpis tak, že jej napíšete myší nebo vyberete jako obrázek. Žádné jednoznačné ověření identity a zachování integrity dokumentu se nekoná. V tomto byl pro mě Foxit Reader zklamáním, které ještě umocnilo to, že aplikace dost často padá.

Vkládání „vizuálního“ podpisu ve Foxit Readeru

Vkládání „vizuálního“ podpisu ve Foxit Readeru

LibreOffice

Kancelářský balík LibreOffice má už výrazně nejpokročilejší podporu elektronického podpisu. Jak už jsem psal v úvodu článku, standardně se LibreOffice dívá do úložiště certifikátů Firefoxu, v Nástroje->Možnosti->Zabezpečení si ale můžete vybrat jinou cestu, třeba ke sdílenému NSS.

LibreOffice umí pracovat se standardy Evropské unie. Dokáže nabídnout jen certifikáty, které jsou AdES (advanced electronic signature – pokročilý elektronický podpis), a podporuje standardy PAdES a XAdES, které definují, jak se mají podepisovat PDF, respektive XML soubory. S podepsaným dokumentem z LibreOffice byste tak neměli narazit na problém, pokud by někdo vyžadoval podpis přesně podle norem.

LibreOffice umožňuje pracovat s podpisem několika způsoby. Můžete v něm podepsat již existující PDF, aniž byste ho upravovali. To se hodí v případech, kdy si PDF předem upravíte v nástroji, který podpisy neumí, a jde vám jen o samotné podepsání. Stačí vybrat Soubor->Elektronické podpisy->Podepsat existující PDF.

Seznam podpisů daného dokumentu

Seznam podpisů daného dokumentu

Můžete ale otevřít existující PDF v LibreOffice Draw a upravovat ho. Je třeba říct, že nejsou podporované formuláře a funguje to jen pro jednodušší dokumenty. Těm složitějším se většinou rozsype layout. Do upravovaného PDF můžete jako obrázek vložit sken ručního podpisu, aby bylo podepsané i vizuálně, případně můžete pod Vložit->Podpisový řádek přidat razítko vygenerované z elektronického podpisu podobně, jako to dělá třeba Okular.

Kromě PDF umí LibreOffice podepisovat také dokumenty ve formátu OpenDocument. U nich by se měl řídit právě standardem XAdES. Jen při každém otevření a editaci se podpis odstraní, takže je dobré podepisovat až finální verzi, kterou odesíláte, což ostatně dává smysl.

LibreOffice umí pracovat i s časovými razítky. To se hodí v případě, kdy je čas podpisu podstatný (např. účetní dokumenty) a musí být ověřitelný (lokální čas v počítači lze jednoduše zmanipulovat). Časové razítko také prodlužuje platnost podpisu za hranici platnosti certifikátu. Bez ohledu na to, jestli už osobní certifikát vypršel nebo byl předčasně zneplatněný, podpis doplněný o časové razítko platí dál. Časová razítka můžete získat od různých autorit, ale ta kvalifikovaná pouze u těch, které splňují evropskou legislativu. Ty to typicky nabízí jako placenou službu. Třeba Česká pošta si za ni účtuje cca 2 Kč za každé razítko. A na tom si LibreOffice vylámalo zuby. Umožňuje zadat pouze URL serveru, ale ten od České pošty vyžaduje ověření, které minimálně ve formě uživatelského jména a hesla v LibreOffice nefunguje (ještě je možnost ověření certifikátem, kterou jsem nezkoušel).

Informace o elektronickém podpisu vložená v LibreOffice

Informace o elektronickém podpisu vložená v LibreOffice

JSignPDF

Nástrojem zaměřeným čistě na elektronické podepisování je JSignPDF, který, jak jsem s překvapením zjistil, vyvíjí bývalý kolega Josef Cacek. Oproti LibreOffice přináší ještě další věci navíc. Například u časových razítek podporuje různé formy autentizace na serveru a neměl jsem s ním problém opatřit podepisovaný dokument časovým razítkem od České pošty.

Rozhraní JSignPDF

Rozhraní JSignPDF

JSignPDF má také pokročilejší možnosti pro vytvoření „vizuálního“ podpisu. Můžete kombinovat razítko vygenerované z údajů certifikátu a obrázek s ručním podpisem. Na rozdíl od Okularu bez problémů zvládá české znaky. Umožňuje vám si taky vybrat, zda se mí dokument podpisem uzamknout, nebo má být povoleno vyplňování formulářů a anotace.

Asi největší nevýhodou aplikace je to, že je napsaná v Javě. Neintegruje se do zbytku systému, dialogy pro výběr souboru jsou nepřehledné. Existuje nicméně také v podobě rozšíření pro LibreOffice.

Ruční podpis na pozadí informací o elektronickém podpisu

Ruční podpis na pozadí informací o elektronickém podpisu

Xournal

Pokud vám jde pouze o vložení „vizuálního“ podpisu do PDF dokumentu, velmi dobře k tomu poslouží aplikace Xournal, která je určená pro vytváření poznámek. Na rozdíl od LibreOffice se nesnaží editovat samotné PDF, ale pouze vkládat anotace, tedy obsah do vrstvy nad původní obsah, který zachovává v původním stavu, takže se vám nestane jako v LibreOffice, že by se layout dokumentu rozpadl.

Teoreticky si můžete vizuální část podpisu připravit v Xournalu a potom připojit samotný elektronický podpis, založený na certifikátu, v jiném nástroji. Nicméně příliš to nedoporučuji. Nástroje, které umí obojí, totiž vkládají vizuální podpis jako speciální pole, které je propojené s elektronickým podpisem. Když na něj kliknete v PDF prohlížeči, zobrazí se vám informace o elektronickém podpisu a jeho ověření. Tohoto při rozdělení do dvou kroků ve dvou nástrojích nedocílíte a ani bych se nedivil, kdyby to neodpovídalo požadavkům PAdES.

Vložení „vizuálního“ podpisu v Xournalu

Vložení „vizuálního“ podpisu v Xournalu

Evolution

Kromě podepisování dokumentů lze elektronický podpis využít také k zabezpečení emailových zpráv. A to dvěma způsoby: buď budete zprávy podepisovat, aby protistrana měla jistotu, že zpráva je opravdu od vás a nebyla cestou upravená, nebo zprávy přímo šifrovat. V druhém případu budete kromě privátního klíče ke svému certifikátu potřebovat také veřejné klíče certifikátů protistran.

Na emailovou komunikaci už téměř 15 let používám Evolution, který práci s elektronickým podpisem zvládá velmi dobře. Jak importovat certifikáty v Evolutionu, jsem popsal v úvodu článku. Abyste podpis mohli používat, musíte jej po importu nastavit v nastavení účtu (Upravit->Předvolby->Poštovní účty). Tam je potřeba zamířit na kartu Zabezpečení. V sekci S/MIME můžete vybrat podpisový a šifrovací certifikát.

Pokud si nenastavíte, aby se všechny zprávy automaticky podepisovaly a šifrovaly, můžete tyto možnosti vždy zapnout při psaní zprávy v nabídce Volby. Pokud se rozhodnete pro šifrování, následné odeslání selže, pokud nemáte veřejný klíč protistrany. Ty můžete importovat do sekce Certifikáty kontaktů. Pokud vám někdo posílá podepsané zprávy, Evolution vám umožňuje jeho veřejný klíč rychle a jednoduše importovat.

Podobně jako v Evolutionu se nastavuje a funguje podepisování a šifrování také v dalším populárním emailovém klientu – Thunderbirdu.

ict ve školství 24

Ověření podpisu v Evolution

Ověření podpisu v Evolution

Našel jsem i další nástroje pro práci s elektronickými podpisy v Linuxu, ale většinou se jednalo o staré, roky neudržované programy v Javě. Pokud znáte něco pro desktop, na co jsem nenarazil, budu rád, když mi to doporučíte.

Původně vyšlo na Sešívaném blogu. Autorem obrázků je Jiří Eischmann.

Autor článku

Používá Linux od roku 2005, podílel se na několika knihách o Linuxu a pracuje ve společnosti Red Hat, momentálně má na starosti tým, který pracuje na desktopových aplikacích.