Java Card 2.1.2 Übersicht

Werbung
Java Card 2.1.2
Programmierung von Smart Cards
mit Hilfe von Java
Übersicht
1.
2.
3.
4.
Einführung Smart Cards
Java Card Spezifikationen
Java Card Development Kit
Java Card in der Praxis und Fazit
1. Einführung Smart Cards
•
•
•
•
Smart Cards
Mikroprozessorkarten
Vorteile gegenüber Magnetstreifenkarten
Verbreitung der Smart Cards
Smart Cards
„
„
„
Enthält Chip zur Speicherung, Verarbeitung und
Übertragung von Daten
Abmessungen der Karte nach ISO 7810 festgelegt
Chiparchitektur nach ISO 7816,2 definiert
Eight Contact Points
Power
Reset
Check
Ground
Optional Contact
Input/ Output
Optional Contacts
Mikroprozessorkarten
RAM
256- 512 bytes
CPU
5 MHz
ROM
12 - 30 K
EEPROM
12 - 32 K
Mikroprozessorkarten sind „richtige“ Computer
Vorteile gegenüber
Magnetstreifenkarten
„
„
„
„
„
„
Weniger anfällig
Viel mehr Speicherplatz
Mehrere Applikationen auf einer Karte
Nachträgliches Löschen und Installieren von
Applikationen
Kommunikation mit Kartenlesegerät
Kryptographie
Verbreitung der Smart Cards
„
„
Weltweit 1.5 Milliarden Smart Cards verkauft (Stand
99)
Unter anderem von Visa, American Express, Florida
State University etc.
2. Java Card Spezifikationen
•
•
•
•
•
Herkömmliche Smart Cards vs. Java
Smart Cards (2)
Java Card API (2)
Java Card Runtime Environment JCRE
(2)
APDU: das Verbindungsprotokoll
zwischen Smart Card und
Kartenlesegerät (3)
Ein Beispielprogramm
Smart Cards vs. Java Smart
Cards(1/2)
Architektur einer konventionellen Smart Card:
Applikation
Betriebssystem
Prozessor
ƒKeine klare Trennung zwischen OS und Applikationen
ƒViele proprietäre, untereinander nicht kompatible Betriebssysteme
ƒApplikation läuft nur auf einem Betriebssystem
und gewissen Karten
ƒEntwicklung zeitaufwendig und teuer
Smart Cards vs. Java Smart
Cards(2/2)
Applet
Applet
Applet
Applet
Applet
Architektur einer Java Smart Card:
Java Card API
Java Card Virtual Machine
Betriebssystem
Prozessor
ƒKlare Trennung von Betriebssystem und Applikationen
ƒApplikationen sind kartenunabhängig
Java Card API (1/2)
„
„
Nur Teilmenge von Java unterstützt
In Java Card nicht implementiert
„
„
„
„
„
„
„
„
Dynamisches Laden von Klassen
Security Manager
Garbage Collection
Threads
Cloning
char, double, float, long
Mehrdimensionale Arrays
...
Java Card API (2/2)
„
API besteht aus
„ Teilen von java.lang
„
javacard.framework
„
javacard.security, javacardx.crypto
Java Card Runtime Environment
JCRE (1/2)
„
„
„
Lebensdauer der Java Card VM = Lebensdauer der
Smart Card
jedes Applet ist von javacard.framework.Applet
abgeleitet
JCRE interagiert mit dem Applet über folgende
Methoden:
„
„
„
„
install()
select()
process()
deselect()
Java Card Runtime Environment
JCRE (2/2)
„
„
Bei Änderung an Speicherresistenten Daten:
atomares Prinzip
Applet Isolation
Das APDU Protokoll (1/3)
„
„
„
„
„
Application Protocol Data Units
Halbduplex Kommunikationsprotokoll zwischen
Smart Card und CAD (Card Acceptance Device)
nach ISO 7816,4 spezifiziert
Smart Card ist passiver Kommunikationspartner
Command APDU, Response APDU
Das APDU Protokoll (2/3)
„
Command APDU
Command APDU
Mandatory Header
CLA INS
P1
P2
Conditional Body
Lc
Datafield
Le
ƒCLA: Identifikation einer Applikation
ƒINS: Auszuführende Instruktion
ƒP1,P2: Parameter
ƒLc: Anzahl der Bytes im Datafield
ƒDatafield: kann Daten enthalten
ƒLe: Max. Anzahl Bytes im Datafield der Antwort
Das APDU Protokoll (3/3)
„
Response APDU
Response APDU
Conditional Body
Datafield
Mandatory Trailer
SW1
SW2
ƒDatafield: kann Daten enthalten
ƒSW1, SW2: Statusworte
ƒBsp: Status 90 00 heisst: alles in Ordnung
Beispielprogramm (1/2)
import javacard.framework.*;
public class Wallet extends Applet {
....
private void getBalance(APDU apdu) {
byte[] buffer = apdu.getBuffer();
short le = apdu.setOutgoing();
if ( le < 2 )
ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
apdu.setOutgoingLength((byte)2);
buffer[0] = (byte)(balance >> 8);
buffer[1] = (byte)(balance & 0xFF);
apdu.sendBytes((short)0, (short)2);
}
Beispielprogramm (2/2)
Wallet_CLA =0xB0, VERIFY = 0x20; CREDIT = 0x30;
GET_BALANCE = 0x50;
Applet sei mit PIN 12345 und Kontostand 0 initialisiert
Typische Kommunikation:
0xB0 0x20 0x00 0x00 0x05 0x01 0x02 0x03 0x04 0x05 0x7F;
0x90 0x00;
0xB0 0x30 0x00 0x00 0x01 0x64 0x7F;
0x90 0x00;
0xB0 0x50 0x00 0x00 0x00 0x02;
0x00 0x64 0x90 0x00;
3. Java Card Development Kit
„
„
„
„
„
Java Card API Klassen
Converter: Testet ob Code von Java Card unterstützt
wird
Capgen: erzeugt .cap Dateien
JCWDE (Java Card Workstation Development
Environment): simuliert Java Card Umgebung
APDU Tool: damit können dem JCWDE APDU‘s
gesendet werden.
Ein Applet schreiben
myApplet.java
javac
capgen
myApplet.cap
myApplet.class
converter
myApplet.jca
JCWDE>....
4.Java Card in der Praxis und
Fazit
„
„
„
Verbreitung
„ 100 Mio. Java Cards in Umlauf (2000)
„ Visa, American Express,...
Hauptvorteile von Java Card
„ Kartenunabhängigkeit
„ Einfachheit
Fazit:Java auf dem Weg zum Standart in Sachen
Smart Card Programmierung
Quellen
„
Java Card Hauptseite:
www.java.sun.com/products/javacard
„
How to write a Java Card Applet:
www.javaworld.com/javaworld/jw-07-1999/jw-07-javacard_p.html
www.javaworld.com/javaworld/jw-12-1997/jw-12-javadev_p.html
„
Smart Card Hersteller:
www.slb.com
www.gemplus.com
Exkurs: Open Card
Herunterladen