Uplatnění standardů při integraci aplikací a kryptografických čipových karet OKsystem, spol. s r. o. www.oksystem.cz Ivo Rosol ředitel vývojové divize rosol@oksystem.cz +420 244 021 250 Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Abstrakt Praktické zkušenosti z implementace originálního softwarového řešení pro integraci kryptografických čipových karet různých výrobců do prostředí Windows, Linux a Java při maximálním respektování standardů. There is no doubt, that at least in some segments cryptography, especially public key cryptography, established basics for IT security and crypto smart cards are the most important secure cryptography and PK cryptography tokens. Identification, strong authentication, digital signature and secure communication are basic building blocks of majority of todays applications. Besides strong security there is another important point – interoperability. Standards (de jure and de facto) are considered as interoperability drivers but in real life there are often to many degree of freedom in standards, or some standards are to complex to be economicaly implemented or there are several diferent standards in some area or on the other hand standards are missing, proposed or not well established. Existing gap between standards compliance and achieved real interoperability can be bridged over by carefull design and implementation of software interoperability layer between todays cards and todays computers and their OS. Common name of such layer is middleware and my presentation is case study of design and implempementation of quite new middleware software. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Čipové karty Čipové karty existují a vyvíjejí se již více než 25 let. Během této doby jsme svědky změny role čipové karty od jednoduchého identifikačního předmětu, nositele uložených informací až po pokročilý kryptografický prostředek, který je klíčem k bezpečnému přístupu k informačním a komunikačním technologiím. Reviewing relatively short history of smart cards we can see changing role of smart card, from simple memory token to more advanced file system oriented cards (possibly with some basic cryptography) serving as information carrier up to modern cryptographic cards serving as information access enabler or simply key to information access. As usually standards evolvement follows technology evolvement with some delay as well as official standards follows industrial standards. Between well established industrial standards for cryptography interface belongs PKCS#11, MS CAPi and JCE. These 3 interfaces was choosen as key interoperability items for presented middleware design. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Kryptografické čipové karty Kryptografické čipové karty umožňují generování a uložení kryptografických klíčů v bezpečné paměti a provádění kryptografických operací přímo na kartě s využitím hardwarové akcelerace. Běžně jsou implementovány algoritmy DES, TDES, RSA a SHA1, na nových čipech i AES a ECC. Kryptografické čipové karty jsou levné a bezpečné prostředky pro širokou škálu aplikací (IAS, SSO...) na různých HW platformách a operačních systémech. Kryptografické čipové karty jsou počítače s vlastním operačním systémem a komunikačním rozhraním. This is simple specification of todays crypto smart card – relatively cheap and secure portable token with asymetric cryptography, on card key generation Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Komunikace dvou počítačů Komunikace 2 počítačů s odlišným technickým vybavením a operačním systémem. Komunikace je realizována s využitím společného sériového (ISO 7816-3) nebo USB (ISO 7816-12) rozhraní a specifikací komunikačního protokolu (ISO 7816 - 4). Naneštěstí, zatímco syntaxe „společného jazyka“ je dána, sémantika zasílané zprávy je specifická pro každý typ nativní, nebo programovatelné karty. On this slide we can see communication betwenn card and computer as communication between 2 computers. For sure languages of these computers are different! Fortunately common communication protocol is defined and message syntax is standardised. Unfortunatelly, message (APDU) semantics (that is meaning of the words in the message) vary. In fact, APDU semantics represents basicaly command set of the card and distinquish on the lowest (card edge) interface various cards, both native and programmable. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Standardy a interoperabilita čipových karet – běh na dlouhou trať Existuje řada oficiálních standardů a respektovaných specifikací, definujících fyzické charakteristiky, umístění kontaktů, parametry pro kontaktní i radiovou komunikaci, metody pro zasílání příkazů a získání odpovědí, organizaci systému souborů, řízení přístupu, uložení kryptografických objektů a řadu dalších aspektů. Mezi základní standardy patří ČSN ISO/IEC 7816 a ČSN ISO/IEC 14443, uznávané specifikace tvoří Java Card a PC/SC. Při respektování všech těchto standardů a specifikací v současné době neexistují dvě karty různých výrobců, které by byly kompatibilní na požadované úrovni. Navíc, mezinárodní standardy se nezabývají dostatečně kryptografií a kryptografickým rozhraním čipových karet. Situaci zachraňují implementace de facto standardů PKCS#11, MS CAPI a JCE, které přispívají k interoperabilitě aplikací a kryptografických čipových karet. Reviewing relatively short history of smart cards we can see changing role of smart card, from simple memory token to more advanced file system oriented cards (possibly with some basic cryptography) serving as information carrier up to modern cryptographic cards serving as information access enabler or simply key to information access. As usually standards evolvement follows technology evolvement with some delay as well as official standards follows industrial standards. Between well established industrial standards for cryptography interface belongs PKCS#11, MS CAPi and JCE. These 3 interfaces was choosen as key interoperability items for presented middleware design. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Syntaxe pro komunikaci 1. APDU (Response) 2. APDU (Reply) On this slide we can see communication betwenn card and computer as communication between 2 computers. For sure languages of these computers are different! Fortunately common communication protocol is defined and message syntax is standardised. Unfortunatelly, message (APDU) semantics (that is meaning of the words in the message) vary. In fact, APDU semantics represents basicaly command set of the card and distinquish on the lowest (card edge) interface various cards, both native and programmable. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Potřebujeme překladatele do mnoha jazyků, nebo společné esperanto? Sémantika komunikace Potřebujeme překladatele do mnoha jazyků, nebo společné esperanto? V praxi se využívají různé systémy a různé čipové karty, pro jejich interoperabilitu je možné postupovat následovně: Vybrat konkrétní typ čipové karty a pracovat pouze s ním, v rámci jediného systému (1:1) Vybrat a podporovat několik typů čipových karet v rámci jediného systému (1:n) Podporovat několik systémů a několik typů čipových karet (m:n) Vzrůstající složitost je možné zvládnout s pomocí „společného jazyka“. Problémem je různá „úroveň jazyků“ aplikací a čipových karet. Potřebujeme „tlumočníka“, který zprostředkuje komunikaci. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Middleware – prostředník komunikace Aplikace Aplikační rozhraní Middleware (integrační vrstva) Operační systém Hardwarové rozhraní Čtečka Čipová karta Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Standardy Aplikace Middleware Operační systém Čtečka Nativní karta PKCS#11, CAPI, Java Security API Middleware PKCS#15 PKCS#6 (SCard) ISO7816/4 (APDU) PCSC#3-5 Operační systém PCSC#2 Čtečka Nativní karta Java karta ISO7816/1-4, PKCS#15 GP/OP Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Aplikace na straně počítače Efektivní vývoj aplikací využívající čipové karty pro provádění kryptografických a datových operací musí být odstíněn od konkrétní technologie. Prostředkem k tomu jsou kryptografická rozhraní definovaná v rámci jednotlivých platforem nebo operačních systémů. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Windows - CryptoAPI a CSP Microsoft Crypto API (MS CAPI) je proprietární architektura firmy Microsoft použitá v systémech Windows. Aplikace využívající MS CAPI mohou využívat alternativní kryptografické služby prostřednictvím standardního rozhraní, aniž musí komunikovat přímo s konkrétním CSP. Aplikace volá funkce vrstvy MS CAPI, které jsou realizovány prostřednictvím dynamických knihoven Advapi32.dll a Crypto32.dll operačního systému Windows. CSP udržuje privátní/veřejné klíče v permanentní paměti v takzvaných kontejnerech, umístěných v technickém zařízení, nebo při čistě softwarovém řešení v zašifrovaném tvaru na disku. Microsoft definuje funkce CSP (syntaxi, vstupní, výstupní a návratové hodnoty) a umožňuje tak vývojářům dodat vlastní CSP, podporující různé kryptografické algoritmy. Vlastní CSP musí exportovat stanovené funkce CryptoSPI a musí být elektronicky podepsán firmou Microsoft. Důležité je, že přestože CSP je tvořen dynamickou knihovnou ve Windows, vlastní kryptografické operace mohou být prováděny v technickém vybavení (například čipové kartě). Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
API nezávislé na systému - PKCS#11 Kryptografické rozhraní k zařízením provádějícím kryptografické operace bylo navrženo společností RSA Laboratories pod označením PKCS#11 (Cryptoki). Na rozdíl od CAPI je toto rozhraní navrženo bez závislosti na použitém operačním systému a je nejpoužívanějším kryptografickým rozhraním mimo platformu Windows. Rozhraní PKCS#11 je primárně svázáno s programovacím jazykem C/C++. Z běžných aplikací toto rozhraní používá internetový prohlížeč Mozilla (Netscape) a jeho poštovní klient, Lotus Notes, Entrust a další. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Platforma Java – JCA/JCE Java aplikace může využít několik pokročilých API – Java Authentication and Authorisation Service (JAAS), Java Secure Socket Extension (JSSE), Java Certification Path a Java Generic Security Services (GSS-API). Kryptografické funkce jsou implementovány v rámci připojitelných modulů Java Cryptography Extension (JCE). Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Aplikace na straně čipové karty Aplikací na čipové kartě rozumíme strukturu datových a kryptografických objektů umístěných v souborovém systému čipové karty. Většina současných dodavatelů kryptografických aplikací na čipových kartách, pracuje se svým (proprietárním) formátem aplikace. Takovou kartu pak nelze použít pro jinou aplikaci, než poskytuje vydavatel karty. Standard ČSN ISO/IEC 7816-15 (PKCS#15) definuje standardní kryptografickou aplikaci CIA (Cryptography Information Application). Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Struktura ISO/IEC 7816-15/PKCS#15 Hlavními přednostmi PKCS#15 proti proprietárním formátům jsou především přenositelnost a flexibilita. Přenositelnost znamená, že čipová karta může být použita v různých PKCS#15 kompatibilních aplikacích (na kartě) od různých výrobců. Flexibilita umožňuje využít stejné principy ukládání pro různé typy čipových karet a poskytuje tak PKCS#15 aplikaci (na PC) dostatek informací pro správné použití karty. Adresář aplikací PKCS#15 aplikace Jiná aplikace klíče certifikáty osobní data Adresář objektů Adresář klíčů Klíč pro podpis Klíč pro šifrování Adresář certifikátů Certifikát pro podpis Certifikát pro šifrování Adresář osobních dat jméno adresa data Čipová karta Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Specifikace middleware OKsmart OKsmart je originální české softwarové řešení (middleware) pro transparentní integraci kryptografických čipových karet různých výrobců do prostředí systémů Windows a Linux s maximálním respektováním standardů. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Middleware OKsmart Aplikace na počítači Aplikační rozhraní Middleware OKsmart (část rezidentní na počítači) Operační systém Hardwarové rozhraní Čtečka Middleware OKsmart (část rezidentní na kartě) Čipová karta Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Hlavní dosažené cíle Hradec Králové, 4. – 5. 4. 2005 Konference ISSS Možnost vytvářet aplikace nezávislé na použité kartě, popř. čtečce Shodná podpora čipových karet nabízená pro platformy Windows a Linux (Unix) Přímá podpora hlavních typů nativních kryptografických karet významných výrobců s vlastnickým operačním systémem (v první fázi Axalto Cryptoflex a Gemplus GPK) a snadné rozšíření množiny podporovaných karet beze změny klíčových knihoven. Přímá podpora programovatelných karet se systémem Java Card od různých výrobců karet. Na kartu musí být nahrány aplety, které jsou součástí OKsmart Maximální využití uznávaných a používaných standardů, architektur a rozhraní (PKCS#15, PKCS#11, PKCS#12, MS CSP, Java, Java Card, PC/SC, Scard, ISO 7816, X.509...) umožňuje aplikacím třetích stran transparentní využití podporované množiny čipových karet (za předpokladu, že tyto aplikace používají uvedené standardy). Schopnost uložit více certifikátů a klíčů na čipovou kartu. Volba délky klíče podporované kartou Generování klíčů a provádění kryptografických operací přímo na kartě. Import RSA klíčů a certifikátů podle specifikace PKCS#12. Interoperabilita aplikací využívající čipovou kartu pro kryptografické účely jako podepisování, dešifrování a autentizaci na základě služeb MS CSP a PKCS#11 a JCA/JCE. Kryptografické moduly využívají služeb společné knihovny PKCS#15 a proto je čipová karta plně kompatibilní při spolupráci s PKCS#11 i CSP. Implementace operací používaných při procesu personalizace čipů a v systémech pro správu karet (podmnožina příkazů Global Platform/Open Platform) Jazykové mutace (standardně čeština, angličtina) Široké licenční a obchodní možnosti pro uživatele čipových karet (licence na kartu, na počítač, na kiosek atd.) Pružná reakce na budoucí standardy a potřeby aplikací a uživatelů čipových karet (správa karet, klíčů, biometrická autentizace, virtuální karta...) Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Architektura OKsmart Aplikace JCE CSP PKCS#11 PKCS#15 SCard SCIfd Aplikační rozhraní JCE CSP PKCS#11 PKCS#15 SCard Uživatelské rozhraní SCIfd SCInput Rozhraní čipové karty Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Základní systémové komponenty OKsmart OKsmart je modulární systém tvořený sadou knihoven, z nichž některé jsou výměnné a umožňují tak rozšiřovat podporovanou sadu funkcí a karet. Základní programátorské rozhraní (API) je k dispozici pro jazyk C/C++, kromě toho je možné samozřejmě využívat nadstavbové knihovny a komponenty, které využívají architekturu MS CAPI (například CAPICOM) nebo rozhraní PKCS#11. Komponenta Plarforma Použití OKcsp Windows Knihovna pro MS CAPI aplikace - Outlook, IExplorer, MS Word, přihlášení do Windows, aplikace třetích stran. OKpkcs11 Windows Linux Knihovna pro PKCS#11 aplikace - Mozilla, Netscape + e-mail, Lotus Notes a aplikace třetích stran SCard Knihovna SCard s rozhraním PC/SC Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Základní PC aplikace pro OKsmart OKsmart obsahuje také užitečné programové vybavení, které slouží pro práci s čipovou kartou. Komponenta Plarforma Použití OKsmart Format Windows Formátování čipové karty, vytvoření a smazání PKCS#15 aplikace a základní personalizace. OKsmart Manager Linux Import a export certifikátů, import certifikátu a privátního klíče ze souboru ve formátu PKCS#12, změna a odblokování PIN, informace o kartě. OKsmart Safe Správce hesel a privátních údajů uložených na kartě a aplikace pro automatické zadávání hesel do aplikací. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Aplikace rezidentní na čipové kartě pro OKsmart OKsmart je též tvořen aplikací CIA (PKCS#15) rezidentní na čipové kartě a sadou apletů pro Java Card. Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Implementace CSP v rámci OKsmart Důležité aspekty: Vývojář aplikací pro Windows nemusí rozlišovat mezi kryptografií prováděnou v software nebo hardware CSP je DLL ve Windows, ale vlastní kryptografické operace provádí čipová karta. CSP je implementován ve formě dynamické knihovny (okcsp.dll), která je elektronicky podepsána společností Microsoft a je nezávislá na podporované čipové kartě. (karta musí být naformátována pro PKCS#15 aplikaci OKsmart). Při rozšíření portfolia podporovaných karet není nutné měnit CSP Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Implementace PKCS#11 v rámci OKsmart Důležité aspekty: Rozhraní PKCS#11 v OKsmart je implementováno pomocí dynamické knihovny OKpkcs11 (.so, .dll), která je nezávislá na typu použité karty (formátované pro PKCS#15 aplikaci OKsmart)! Při rozšíření portfolia podporovaných karet není nutné měnit knihovnu PKCS#11 Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Implementace JCE v OKsmart rozhraní JCE Java .jar JCE JPKCS#11 C++, .dll, .so JNI Objektové rozhraní PKCS#11 (C++) Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Čipové karty se systémem Java Card Java Card poskytuje řadu výhod: Nezávislost na jediném výrobci Instalace apletů po vydání karty Funkce a bezpečnost definovaná vydavatelem Nesmí se ale zapomenout na: Vývoj programového kódu rezidentního na kartě (apletů) Paměť EEPROM spotřebovanou pro aplety Výkonost Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Architektura Java Card Počítač/terminál Čipová karta (Java Card) Aplikace na počítači Applet firewall Applet 1 Applet 2 APDU Java Card Runtime Environment APDU Java Card API Java Card VM čtečka Nativní OS čipové karty Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Java Card – rozhraní APDU a SIO APDU (AID1) APDU (AID2) 1. 2. JCRE Datový aplet AID1 (klient) 4. 3. Autentizační aplet AID2 (server) sdílená paměť SIO Firewall Klient požaduje od JCRE SIO serverového apletu identifikovaného pomocí AID2 . JCRE se dotazuje serverového apletu na SIO a posílá AID1 klientského apletu. Server vydává ukazatel na požadovaný SIO nebo null, podle toho zda klientský aplet může nebo nemůže komunikovat se serverem JCRE předává výsledek klientské aplikaci. Klientský aplet volá SIO.metoda, parametry lze předávat hodnotou (byte, short) nebo odkazem na sdílenou paměť (ostatní datové typy) (APDU buffer, tranzientní pole v RAM) Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Implementace Java Card apletů v OKsmart DA – datový aplet podpora souborového systému podle ISO7816-4 maximálně 4 úrovně adresářů řízení přístupu pomocí DES klíčů uložených v aktuálním nebo nadřízeném adresáři využití a správa SE (Security Environment) podle ISO7816-8 (řízení přístupových práv) uložení šablon SE zprostředkování SE autentizačnímu apletu Uložení certifikátů Uložení DES klíčů AA - autentizační aplet PIN a PUK Uložení PIN a PUK (APDU) Změna PIN (APDU, SIO) Odblokování PIN (APDU) Ověření PIN (autentizace držitele karty) (APDU, SIO) vydání informace o stavu ověření (SIO) DES autentizace pro ostatní aplety generování výzvy (SIO) výpočet hash (SIO) generování DES klíče (SIO) externí a interní autentizace (SIO) vydání informace o stavu autentizace (SIO) PA – PKI aplet správa RSA klíčů generování páru klíčů (APDU) import klíčů na kartu (APDU) mazání klíčů (APDU) výpočet hash (APDU, SIO) vytvoření podpisu (APDU, SIO) ověření podpisu (APDU, SIO) Datový aplet SIO Autentizační aplet SIO PKI aplet Hradec Králové, 4. – 5. 4. 2005 Konference ISSS
Současný a budoucí vývoj Šifrování disku pomocí čipové karty Volitelná čtečka s klávesnicí (PINpad) a další... OKsystem, spol. s r. o. www.oksystem.cz Ivo Rosol ředitel vývojové divize rosol@oksystem.cz +420 244 021 250 Hradec Králové, 4. – 5. 4. 2005 Konference ISSS