Čipové karty úvod, Java Card Ing. Jiří Buček Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze LS 2010/11, Předn. 5. (c) Jiří Buček, 2010. Evropský sociální fond Praha& EU: Investujeme do vaší budoucnosti 1
Proč čipové karty Nosič informace spojené s nějakým užitečným účelem token Odolnost proti padělání Druhý faktor autentizace 1. Co víme (heslo, PIN) 2. Co máme (ČK) 3. Co jsme (prst, sítnice, obličej, hlas...) Škrabka na nádobí (Odvrácená stránka množství různých karet) MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 2
Příklady Předplacené telefonní karty (minulé tisíciletí) SIM Subscriber Identification Module (GSM) VISA/MC/EMV platební karty Průkaz pro vstup do budovy Elektronická jízdenka Průkaz na slevu Elektronická peněženka Označ. zvířete, člověka (ale to už nejsou karty) MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 3
Rozhraní Kontaktní (např. ISO 7816-2, USB,...) Bezkontaktní (např. ISO 14443) Kombinace kontaktního a bezkontaktního dva čipy hybridní jeden čip, dvě rozhraní duální (dual interface) Elektrické Elektromagnetické rádiové Optické potisk, záznam MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 4
Co je uvnitř Nic (skoro) jen propojené kontakty, rezonanční obvod apod. to ale není smart ani čipová Paměť ROM s unikátním sériovým číslem EEPROM zabezpečená paměť (např. Philips/NXP MIFARE Classic) ani ta ještě není smart v užším smyslu MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 5
Co je uvnitř (2) Počítač Konfigurovatelný pomocí API Programovaný při výrobě Programovatelný v terénu (např. Java Cards) Standard GlobalPlatform (dříve OpenPlatform) správa aplikací S krypto procesorem CPU, RAM, ROM, EEPROM, komunikační rozhraní, obvody napájení MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 6
Systém s čipovými kartami Čipová karta, token... data (+ aplikace) na kartě, klíče,... Čtečka terminál Middleware standardní API např. PKCS#11, Windows CSP Uživatelská aplikace (mail klient) Server,... MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 7
Prvky zabezpečení Nic doufáme, že nikdo neposlouchá, nenahrává, neopakuje. Spoléháme se, že nevzniknou klony, emulátory. Symetrická autentizace a šifrování klíč je tajný, sdílený mezi kartou a terminálem. Možno použít odvozování (diverzifikaci) klíčů Asymetrická schémata veřejný a soukromý klíč, PKI, certifikáty, řetězec důvěry MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 8
ISO 7816 komunikace MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 9
ISO 7816 komunikace (2) MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 10
Příklad APDU výběr aplikace CLA INS P1 P2 LC DATA 00 A4 04 00 06 41 42 43 44 45 46 00 standardní příkaz ISO 7816 A4 SELECT vyber (soub./aplik.) 04 vyber podle jména (AID) 00 (vrať nepovinnou FCI) 06 délka datového pole s AID číslo aplikace (AID) 41 42 43 44 45 46 MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 11
Java karty Karta obsahuje počítač + Java VM Podmnožina jazyka Java Zjednodušený VM, předzpracování (konverze) Java interpreter (většinou částečná HW podpora) Java Card Framework, runtime Persistence dat ( heap je v EEPROM ) Podpora transakčního zpracování Na Java kartách: Aplikace Applet MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 12
Java karty rysy jazyka Omezená množina typů: ano: byte (8), short (16) nepovinně: int (32) ne: long, float, double Nepodporováno: znaky, řetězce, vícerozměrná pole, dynamické nahrávání tříd, GC a finalizace, serializace, klonování objektů runtime java.lang, javacard.framework, javacard.security, javacardx.crypto, (java.rmi,...) V novějších verzích i float, řetězce, servlety... MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 13
Běhové prostředí appletů W. Rankl, W. Effing: Smart Card Handbook MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 14
Vývojové prostředky Java SE JDK Java Card Development Kit (záleží na verzi) knihovny simulátory konvertor převod formátu.class.cap (Converted APplet) exporty podpora pro verifikaci a linking při konverzi Instalátor nahrává applet na kartu (např. GPShell) IDE nepovinné, např. NetBeans, Eclipse,... MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 15
Proces překladu Zdrojový text.java javac... Přeložený kód.class converter... (výchozí AID) Převedený applet/knihovna.cap např. gpshell... (LOAD, AID load file) Load file na kartě př. gpshell... (INSTALL, AID instance) Instance appletu na kartě (zkonstruovaný objekt) MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 16
Struktura Appletu package pack1; import javacard.framework.*; public class Applet1 extends Applet { public static void install(byte[] barray, short boffset, byte blength) { new Applet1(); } protected Applet1() { register(); } public void process(apdu apdu) {... } } MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 17
Na co dát pozor Není GC, nevytvářet zbytečně objekty Při instalaci vytvořit, co je potřeba Objekty na heapu jsou perzistentní Příliš mnoho změn opotřebuje EEPROM, navíc pomalé Dá se vytvořit tranzientní pole typ. pro větší mezivýsledky Nahrávání appletů na HW kartu je zabezpečené Nepřekročit maximum čítače neúspěšných pokusů o autentizaci (!) MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 18
DEMO Netbeans IDE 6.8+ Java Card pluginy jsou ve standardním repozitáři, pro simulaci stačí MI-BHW Jiří Buček 5. Čipové karty úvod, Java Card 19