Ovladače pro podporu práce s certifikáty

Pomocí občanského průkazu může držitel pracovat s elektronickými certifikáty uloženými na čip občanského průkazu: vytvářet elektronické podpisy a přihlašovat se certifikátem. Pro podporu práce s certifikáty je třeba do operačního systému instalovat ovladače čipu občanského průkazu.

Funkce ovladačů

Ovladače čipu občanského průkazu umožní aplikacím pracovat s certifikáty, uloženými v čipu občanského průkazu. Prostřednictvím ovladačů se dají certifikáty (a klíče) používat pro:

  • elektronické podepisování (dokumentů, e-mailů apod.)
  • přihlašování (např. do webových stránek)

Ovladače ale slouží také pro správu certifikátů v čipu občanského průkazu:

  • Čtení informací o uložených certifikátech
  • Vytváření či zápis nových certifikátů a kryptografických klíčů
  • Mazání nepotřebných certifikátů a klíčů

Další důležitou funkcí ovladačů je práce s přístupovými kódy občanského průkazu:

  • zobrazování okna pro zadání kódu
  • kontrola hodnot kódu oproti čipu občanského průkazu
  • změna hodnoty kódu
  • zablokování kódu po opakovaném chybném zadání
  • atd.

Dodržení technických standardů pro ovladače

Ovladače občanského průkazu dodržují uznávané technické standardy pro integraci čipových karet do operačních systémů PC. Díky důslednému dodržování standardů není třeba připravovat aplikace “na míru” občanskému průkazu. Stačí, když aplikace třetích stran používají tytéž technologické standardy a mohou občanský průkaz používat, resp. mohou využívat kryptografické operace občanských průkazů. Díky dodržování technologických standardů lze občanský průkaz používat v řadě běžně používaných aplikacích (nejen v níže uvedených).

Ovladače občanského průkazu jsou instalovány pro standardy:

  • CryptoAPI MS Windows, ovladač je dodáván ve formě tzv. minidriveru. Tento ovladač využívají aplikace, které používají kryptografické rozhraní operačního systému MS Windows (např. MS Office, vč. MS Outlook, Adobe Reader, MSIE, Edge, Chrome, atd…)
  • PKCS#11 - Tuto variantu ovladače mohou použít aplikace, které implementují vlastní kryptografii (např. Mozilla Firefox, Thunderbird, apod…). Ovladač PKCS#11 je podporován na platformách MS Windows, Linux i macOS.
  • tokenID - Tento ovladač používají nativní aplikace macOS (např.: Klíčenka, Mail, Safari apod…).

Integrace ovladačů do operačního systému MS Windows

Následující obrázek ilustruje způsob integrace ovladačů občanského průkazu do MS Windows:

Integrace ovladačů občanského průkazu do MS Windows

Aplikace, které pro kryptografické operace používají rozhraní CryptoAPI nebo Crypto Next Generation (CNG), nekomunikují s ovladačem občanského průkazu přímo. Minidriver občanského průkazu je pro aplikace skryt za kryptografickým rozhraním operačního systému. Volající aplikace tak vůbec nerozpoznají, že jim kryptografické operace zprostředkuje čip občanského průkazu.

Naproti tomu aplikace, které nevyužívají kryptografické rozhraní operačního systému, komunikují přímo s knihovnou PKCS#11. Aby tyto aplikace uměly využít kryptografických funkcí občanského průkazu, musí do nich uživatel konfigurovat správnou knihovnu PKCS#11 (někdy nazývanou též Cryptoki). Způsob konfigurace knihovny se pro jednotlivé aplikace liší, uživatel by měl najít správný způsob v technické dokumentaci dané aplikace.

Pro každou verzi občanského průkazu je určena jiná knihovna PKCS#11:

  • Pro práci s občanským průkazem vydaným před 1. 7. 2018 slouží PKCS#11 knihovna uložená v souboru eopczep11.dll
  • Pro práci s občanským průkazem vydaným po 1. 7. 2018 slouží PKCS#11 knihovna uložená v souboru eop2v1czep11.dll

Aby byla konfigurace aplikací, které využívají rozhraní PKCS#11, maximálně zjednodušena, je součástí instalace knihovna eopproxyp11.dll, která zajišťuje komunikaci s oběma verzemi občanských průkazů. Všechny varianty knihovny PKCS#11 se nacházejí v systémovém adresáři operačního systému.

Na 64-bitové verze operačního systému se knihovny PKCS#11 instalují ve 32-bitové i v 64-bitové verzi - aby bylo možno občanský průkaz používat i z 32-bitových aplikací. Typické umístění souborů s knihovnou PKCS#11 pak je:

  • 64-bitová verze: C:\Windows\System32\eopproxyp11.dll
  • 32-bitová verze: C:\Windows\SysWOW64\eopproxyp11.dll

Integrace ovladačů do operačního systému Linux

Součástí instalace eObčanka pro Linux jsou i ovladače čipu občanského průkazu pro práci s certifikáty. Ovladače jsou instalovány pro standard PKCS#11. Aby aplikace třetích stran (např. Firefox, Thunderbird, Chrome, …) uměly využít kryptografických funkcí občanského průkazu, musí do nich uživatel konfigurovat správnou knihovnu PKCS#11 (někdy nazývanou též Cryptoki). Způsob konfigurace knihovny se pro jednotlivé aplikace liší, uživatel by měl najít správný způsob v technické dokumentaci dané aplikace. Pro každou verzi občanského průkazu je určena jiná knihovna PKCS#11:

  • Pro práci s občanským průkazem vydaným před 1. 7. 2018 slouží PKCS#11 knihovna uložená v souboru libeopczep11.so
  • Pro práci s občanským průkazem vydaným po 1. 7. 2018 slouží PKCS#11 knihovna uložená v souboru libeop2v1czep11.so

Aby byla konfigurace aplikací, které využívají rozhraní PKCS#11 maximálně zjednodušena, je součástí instalace i knihovna libeopproxy11.so, která zajišťuje komunikaci s oběma verzemi občanských průkazů. Tento soubor se nachází v adresáři /usr/lib/x86_64-linux-gnu.

Integrace ovladačů do operačního systému macOS

Pro operační systém macOS jsou dodávány ovladače ve formátu tokenD a PKCS#11.
Aplikace, které využívají ovladače přes tokenD, není třeba nijak konfigurovat. Operační systém sám zajistí, aby tyto aplikace uměly s občanským průkazem pracovat. Certifikáty lze pomocí rozhraní tokenD zobrazit v aplikaci Klíčenka (Keychain Access).
Naproti tomu aplikace, které nevyužívají kryptografické rozhraní operačního systému, komunikují přímo s knihovnou PKCS#11. Aby tyto aplikace uměly využít kryptografických funkcí občanského průkazu, musí do nich uživatel konfigurovat správnou knihovnu PKCS#11 (někdy nazývanou též Cryptoki). Způsob konfigurace knihovny se pro jednotlivé aplikace liší, uživatel by měl najít správný způsob v technické dokumentaci dané aplikace. Pro každou verzi občanského průkazu je určena jiná knihovna PKCS#11:

  • Pro práci s občanským průkazem vydaným před 1. 7. 2018 slouží PKCS#11 knihovna uložená v souboru libeopczep11.dylib
  • Pro práci s občanským průkazem vydaným po 1. 7. 2018 slouží PKCS#11 knihovna uložená v souboru libeop2v1czep11.dylib

Knihovny jsou umístěny v adresáři /usr/local/lib/eOPCZE/
Aby byla konfigurace aplikací, které využívají rozhraní PKCS#11 maximálně zjednodušena, je součástí instalace i knihovna libeopproxyp11.dylib, která zajišťuje komunikaci s oběma verzemi občanských průkazů. Tento soubor se nachází stejně jako knihovny PKCS#11 v adresáři /usr/local/lib/eOPCZE/.

Instalace a zprovoznění ovladačů

Ovladače pro podporu práce s certifikáty v občanském průkazu jsou součástí instalačního balíčku obslužných aplikací eObčanka. Ovladače se tedy nainstalují spolu s ostatními aplikacemi pro podporu občanských průkazů. Pro správné fungování ovladačů je třeba - kromě občanského průkazu s aktivovanými elektronickými funkcemi - mít k PC připojenou čtečku karet.
Ovladače pro CryptoAPI a ovladače tokenD není po instalaci nutno dodatečně konfgurovat. Naproti tomu, pro použití ovladačů typu PKCS#11 je třeba konfigurovat příslušné aplikace třetích stran (např. Firefox, Thunderbird). Postup konfigurace ovladačů PKCS#11 je popsán v instalační příručce pro daný operační systém.

Okna pro zadání přístupových kódů

Ovladače občanského průkazu provádějí většinu svých operací na pozadí. Uživatel jejich činnost většinou nezaznamená. Pokud je ale třeba při některé operaci zadat hodnotu přístupového kódu, může ovladač zobrazit okno a vyzvat uživatele k zadání příslušného kódu. Podobné okno se může zobrazit při změně hodnoty či odblokování přístupového kódu. V některých případech se o zadání hodnoty PIN/QPIN postará volající aplikace. V takovém případě se hodnoty PIN/QPIN zadávají do okna aplikace - a okno ovladače se nezobrazí.

Hodnoty PIN/QPIN se zadávají z bezpečnostních důvodů: zadáním kódu uživatel schvaluje prováděnou operaci a “odemyká” občanský průkaz pro provedení operace. Zadávání přístupových kódů dává uživateli kontrolu nad aktivními operacemi s certifikáty a klíči, uloženými v čipu občanského průkazu. Pro čtení veřejných informací z čipu není třeba zadávat PIN ani QPIN. Typicky lze z čipu bez zadání PINu přečíst např. seznam certifikátů, stavy přístupových kódů apod. Veškeré aktivní operace se soukromými klíči je nutno schválit zadáním příslušného přístupového kódu.

Ovladače občanského průkazu samy rozpoznají, zda je danou operaci nutno schválit zadáním PIN anebo QPIN. V takovém případě ovladače vyzvou uživatele k zadání příslušného kódu.

Čipová karta – zadejte PIN

V okně pro zadání kódu je vždy uvedeno, jaký kód má uživatel zadat. Uživatel by měl jednotlivé kódy rozlišovat: opakované zadání nesprávného kódu vede k zablokování kódu!
Vzhled oken pro zadání přístupového kódu se liší podle použitého operačního systému i aplikace. Pokud uživatel používá čtečku s integrovanou klávesnicí, vzhled okna se tomu přizpůsobí.

Cache PIN

Pro zvýšení uživatelského pohodlí si ovladače umí “zapamatovat hodnotu” PIN. Uživatel v dané aplikaci zadá hodnotu PIN jen jednou a při dalších operacích už PIN nemusí znovu zadávat: kanál mezi ovladačem a čipem občanského průkazu zůstává navázaný. Komunikační kanál se uzavře, pokud nastane některá z následujících podmínek:

  • Uživatel vyjme kartu ze čtečky, nebo dojde k odpojení čtečky či k technické závadě.
  • Uživatel ukončí aplikaci.

Při dalším spuštění aplikace je třeba hodnotu PIN znovu zadat. Zadání PIN je platné jen pro danou aplikaci. Aplikace nemohou mezi sebou hodnotu PIN sdílet. Pokud má např. uživatel spuštěny dvě aplikace, v nichž chce používat certifikáty z občanského průkazu, musí v obou aplikacích zadat PIN. (Aplikace nemohou sdílet PIN z bezpečnostních důvodů. Je třeba zajistit, aby např. malware, běžící v operačním systému, nemohl bez vědomí uživatele provádět citlivé operace s občanským průkazem.) Na rozdíl od PIN je nutné hodnotu QPIN zadávat při každé operaci elektronického podepisování. Aplikace si hodnotu QPIN nikdy neumějí “zapamatovat”. Pomocí QPIN se schvaluje vytvoření kvalifikovaného elektronického podpisu. Vytvoření kvalifikovaného podpisu je bezpečnostně citlivý akt, který má právní váhu vlastnoručního podpisu. Uživatel proto musí mít vytvoření každého kvalifikovaného podpisu pod svou výhradní kontrolou. Proto je třeba každou podpisovou operaci s klíčem kvalifikovaného certifikátu schválit zadáním QPIN.

Spolupráce ovladačů se čtečkami

Ovladače komunikují s čipem občanského průkazu prostřednictvím čtečky karet, resp. technologického rozhraní PC/SC. Ovladače umí fungovat:

  • S běžnými čtečkami (bez klávesnice).
    Uživatel zadává hodnoty PIN/QPIN na klávesnici počítače.
  • Se čtečkami, které mají integrovanou klávesnici, popř. i displej.
    V takovém případě se hodnoty PIN/QPIN zadávají na klávesnici čtečky.

Vzhled okna pro zadání PIN/QPIN na klávesnici čtečky se změní – okno neobsahuje editační pole pro zadání kódu.

Podpora virtualizovaných operačních systémů

Ovladače podpory občanského průkazu lze instalovat nejen do operačního systému fyzického PC, ale také do virtualizovaného operačního systému. Operace s certifikáty v občanském průkazu lze tedy pak provádět ve virtualizovaném prostředí.

Pro práci s občanským průkazem je třeba:

  • Instalovat do virtualizovaného operačního systému softwarovou podporu občanského průkazu.
    Instalace softwarové podpory se na virtualizovaném operačním systému provádí stejným způsobem, jako na fyzickém hostiteli.
  • Připojit do virtualizovaného systému čtečku čipových karet.
    Fyzicky je třeba čtečku připojit k lokálnímu zařízení a poté ji propagovat do virtualizovaného prostředí. Nejčastějším řešením je propagace lokálního USB portu do virtualizovaného systému. Podrobnosti o propagaci čtečky je třeba najít v dokumentaci virtualizační platformy.