Programmieren von Java Smartcards Aufgabe 0: Zur Einführung in die Programmierung von Giesecke und Devrient Java Smartcards soll ein neues Kartenapplet erstellt, im Simulator getestet sowie anschließend auf die Karte gespielt und getestet werden. Dieses Projekt soll anschließend in das SVN Repository, welches für die Vorlesung erstellt wurde, eingecheckt werden, das auch zur Abgabe der weiteren Projekte dient. 1. Erstellen eines neuen Applets Starten Sie das SmartC@fe Professional Toolkit (Programme / Giesecke&Devrient) und legen Sie ein neues Projekt (z.b. TestProject) an. Wählen Sie SmartCa@fe Express 3.X als Zielplattform für das Projekt aus.
Anschließend wird der Simulator gestartet und man kann eine neue JavaCard Applet Klasse anlegen. 2. Erstellen eines Applets Ein neues Package kann man über Project / Create New Package erstellen. Dazu wird mit dem OPT Wizard eine neue.opt Datei angelegt. Anschließend muss ein Name für das zu erstellende Package angegeben werden sowie eine Package AID gewählt werden.
Anschließend müssen Zielverzeichnis und Name der.opt Datei eingegeben werden. Bei der Eingabe der Optionen für den Compiler ist es wichtig die Option 32-Bit Integer zu deaktivieren, da die Karten nur 16 Bit Arithmetik unterstützen. Abschließend muss ein Name für die Applet Klasse vergeben werden zusammen mit einer Applet AID und mittels Add New Object To List hinzugefügt werden. Mittels Fertig Stellen wird nun ein neues Applet in OffCard angelegt, welches einen Konstruktor, eine statische Methode install und die process Methode enthält. 3. Programmierung des Applets Das Applet soll jetzt zwei neue APDUS unterstützen, einmal RETURN_ARRAY sowie NEW_ARRAY. RETURN_ARRAY soll dabei den Inhalt eines 4 byte Arrays auslesen und zurücksenden. NEW_ARRAY soll dieses 4 byte Array mit zufälligen byte Werten zwischen 0 und 10 initialisieren. Für alle Konstanten sollen bei der Programmierung immer final static byte Werte verwendet werden. Diese APDUs sollen nun implementiert werden, die Funktionsaufrufe aus der process Methode heraus funktionieren wie auf den Folien beschrieben. 4. Testen des Applets Um das Applet zu testen muss dieses mittels Load to Simulation in die Simulation geladen werden, die Security Domain AID soll dabei leer bleiben.
Anschließend erscheint das Applet unter OnCard und kann in der Simulation getestet werden. Damit APDUs an das Applet geschickt werden können muss das Applet nach dem laden auf die Karte installiert werden und mittels eines speziellen SELECT APDUs ausgewählt werden. Diese Protokollschritte müssen dazu unter Script / New Script in einem Skript hinterlegt werden. Dabei muss beachtet werden, bei Install und Select die richtige Applet AID zu verwenden. Das genaue Format des Install APDUs kann der Dokumentation zum SmartC@fe Toolkit nachgelesen werden. Werden nun alle Kommandos von Init_Update bis Select erfolgreich durchgeführt, können die Applet APDUs RETURN_ARRAY und NEW_ARRAY getestet werden. Zu beachten ist dabei, dass ein mehrmaliges Aufrufen von Init_Update dazu führt, dass jedes mal eine neue Challenge generiert wird, so dass die Daten des Ext_Auth APDU neu berechnet werden müssten. Um das zu vermeiden, muss ein reset der Karte per Clear Card ausgeführt werden bevor ein neues Ext_Auth ausgeführt werden kann.
5. Testen auf der Karte Zum Abschluss soll das Applet noch auf der Karte getestet werden. Dazu müssen unter Project / Options / Download der richtige Kartenleser ausgewählt werden, die richtige Schlüsseldatei eingetragen werden (GD_V_CDK (CPG 2.04).key) sowie das Secure Channel Protocol 2 (SCP2) aktiviert werden. Falls hier die falschen Parameter gewählt werden, kann die Karte unbrauchbar gemacht werden!
Die eingetragene Applet AID ist die des Kartenmanagers und darf nicht verändert werden. Anschließend kann per Download Selected Package To Card das Applet auf die Karte geladen und dort benutzt werden. Dabei soll Single Command for INSTALL & MAKE SELECTABLE aktiviert sein. Danach ist das Applet auf die Karte geladen, installiert und als auswählbar markiert,
kann also mittels des SELECT APDUs angewählt werden und anschließend können APDUs an das Applet geschickt werden. Zum Testen des Applets auf der Karte muß ein neues Projekt angelegt werden wie im Getting Started zum Smartc@fe Toolkit beschrieben. 6. Einchecken in SVN Die Abgabe aller Übungen des Praktikums zu Programmierung von Java Smartcards wird über ein SVN Repository erfolgen. Desweiteren sollen die Repositories auch bei der Entwicklung der Programme benutzt werden, da die Rechner in regelmäßigen Abständen gesäubert werden. Zum Einchecken der Kartenprojekte steht Tortoise SVN zur Verfügung (Dokumentation: http://tortoisesvn.tigris.org/). Bei der Entwicklung der Terminalprogramme sollte am besten das SVN PlugIn von Eclipse verwendet werden. Die SVN Repositories befinden sich unter: https://swt.informatik.uni-augsburg.de/javacardsvn/gruppexx In dieses Repository sollen alle Quelldateien und notwendige Bibliotheken eingecheckt werden, bei der Abgabe auch eine lauffähige Version als jar Datei.