- Suche

- Kontakt

Programmieren von Java Smartcards SS 2005

Dozent(in): Prof. W. Reif, Kurt Stenzel, Holger Grandy
Termin: Vorlesung: Do, 12:30-14:00, Übung: Di, 14:15-17:30 u. Mi, 14:15-17:30
Gebäude/Raum: Vorlesung: 1005 NWI, Übung: 1006 NWI
Ansprechpartner: Kurt Stenzel, Holger Grandy

Downloads:

Der Lehrstuhl Softwaretechnik und Programmiersprachen bietet im SS 2005 die Veranstaltung "Programmieren von Java Smartcards" (integrierte V + Ü) an.

Inhalt:
Smartcards (Chipkarten mit einem Prozessor) erhalten immer größere Verbreitung. Sie sind flexibler und sicherer als Karten mit Magnetstreifen und erobern sich einen riesigen Zukunftsmarkt von Anwendungen. Der neueste Trend geht in Richtung multi-applikativer Karten, die mehrere `Anwendungen' enthalten, und auf die dynamisch neue Anwendungen geladen werden können. Beispiele hierfür sind digitale Unterschrift, elektronische Geldbörse, intelligente Tickets, Loyalty Cards etc. Die Veranstaltung bietet einen Einstieg in die neueste Chipkartentechnologie. Für die Programmierung wird die Sprache JavaCard verwendet, die eine Teilmenge von Java ist. Da eine Chipkarte nur sehr beschränkte Ressourcen hat, ist das Einsparen von Speicherplatz oberstes Gebot. Neben der korrekten Programmierung ist das richtige Design der Kommunikationsprotokolle (zum Schutz vor Hackern, dem Verlust von Daten usw.) mindestens genauso wichtig.Die Veranstaltung ist eine integrierte Vorlesung und Übung. In dem Vorlesungsteil werden Kenntnisse in JavaCard, der Chipkartentechnologie, dem Design der Anwendungsprotokolle und in kryptographischen Methoden vermittelt. In dem praktischen Teil wird am Rechner (und Chipkartenleser) eine innovative Anwendung (elektronische Bahnfahrkarten, die es in dieser Form noch nicht gibt) erstellt. Dabei müssen die Protokolle spezifiziert und die Chipkarte sowie die Terminals mit GUI programmiert werden.Als Chipkarten werden Java SmartCards von Gemplus eingesetzt, die 64 K EEPROM, 3DES und 1024 Bit RSA bieten. Es wird voraussichtlich drei Aufgaben geben: Programmieren eines einfachen Spiels (Mastermind), einer aufladbaren Kopierkarte und einer elektronischen Bahnfahrkarte.

Wert: 8 Leistungspunkte, Scheinerwerb: Erfolgreiche Teilnahme an den Übungen, Abschlußprüfung

Hinweis zur Abgabe und Aufgabe4:

  • Bitte beachten Sie, dass die Aufgabe 4 gekürzt wurde: Die Abgabe von Testfällen (als Testscripte mit dem Prototester) ist nicht mehr notwendig.
  • Aufgrund einiger Nachfragen nochwals hier der Hinweis: Der Abgabetermin für alle Aufgaben ist der 15.7.2005, 23:59 Uhr, sh. auch die jeweiligen Abschitte "Abgabe" in den Aufgabenbeschreibungen. Dieser Termin ist fix. Abgaben zu einem späteren Zeitpunkt werden nicht mehr akzeptiert.
  • Bitte kommt in den kommenden Tagen auf uns zu, um einen Termin für die Abnahme zu vereinbaren. (Wenn möglich, bitte einen Termin in der Woche vom 25.7. bis 29.7. wählen)
  • Noch ein Hinweis: Es kommt jedes Jahr wieder vor, dass manche EMail-Provider größere Mails nicht akzeptieren und deswegen Abgaben nicht ankommen. Bitte achtet darauf, mehrere kleinere Zip-Files zu erstellen und diese dann in mehreren EMails zu schicken, wenn Euer Provider solche Probleme hat.
  • Und last but not least: Die Abnahme findet auf der echten Karte statt, nicht im Simulator. Bitte testet Eure Applets nochmals vorher mit der echten Karte. Falls Ihr für Aufgabe 4 zum Test für "Ticket übertragen" temporär noch eine zweite Karte haben möchtet, dann meldet Euch einfach bei uns.

Vorkenntnisse:

  • Unbedingt erforderlich: Programmierkenntnisse in Java (Info II und Sopra)
  • Nicht erforderlich: Kenntnis kryptographischer Protokolle
Termine:
  • Vorlesung Donnerstags, 12:30 - 14:00 Uhr 1005 (NW1)
  • Übungen (1): Dienstags 14:15 - 15:45 Uhr und 16:00 - 17:30 Uhr, Raum 1006 (NW1)
  • Übungen (2): Mittwoch 14:15 - 15:45 Uhr und 16:00 - 17:30 Uhr, Raum 1006 (NW1)
  • Übungen Donnerstags:
    • 09.6.: Gruppe 1
    • 16.6.: Gruppe 1
    • 23.6.: Gruppe 2
    • 30.6.: Gruppe 1
    • 07.7.: Gruppe 2
    • 14.7.: Gruppe 1

Ansprechpartner:Kurt Stenzel und Holger Grandy, Tel.: 0821/598-2178, Zimmer 2032, NW 1

Aufgaben

Bitte beachten Sie ab Aufgabe 3 den Leitfaden zur Erstellung von Dokumentation und Programmen!

Falls Sie Ihre Protokollspezifikationen mit LaTex erstellen wollen, können Sie hier ein Template herunterladen.

Vorlesungsfolien

Tipps und FAQ

Hier finden Sie Tipps und Anleitungen zum Javacard Praktikum.

Das Testprogramm TestDESede.java aus der Vorlesung.

Gruppeneinteilung

  Dienstag Mittwoch
1. Anja Wojciechowski, Fredrik Larsen Zlatina Georgieva, Antonia Immerz
2. Rolf Kiefhaber, Markus Helbig Markus Bauer, Qirong Wu
3. Andreas Hahn, Michael Stengel Sebastian Kern, Miriam Burger
4. Stefan Patsch, Julia Peterwitz Martin Roser, Marco Jilg
5. Stefan Schnitzler, Florian Müller Carde-Michaela Hackbarth, Stefan Romberg
6. Markus Sinsel, Jonas Gronde Markus Bischof, Richard Kircheis
7. Ralf Jahr, Peter Sommer Daniel Lercher, Martin Straub
8. Yanan Zhong, Baocheng Wang Florian Mücke, Adalbert Ochotta
9. Aboua Sodonougbo,Roland Glück Nicolas Gümbel, Ferry Hielscher
10. Susanne Tober, Matthias Kus Alexander Holzmann, Stefan Brenner
11. Stefan Wastl, Christian Holder Florian Ott, Michael Graf
12. Andreas Tremmel, Carsten Angeli Georg Berky, Martin Dobmeier
13. Irakli Guliashvili, Natalia Kourova Martin Groth, Markus Henze
14. Shi Min, Peng Xiaohai Stephan Schaller, Thomas Weber
15.   Hu Jianyong, Pham Trung Thanh

Unterlagen

Die folgende Doku wird hier zur Verfügung gestellt, damit der Zugriff während des Semesters immer gewährleistet ist. Es gelten die entsprechenden Copyrights der Autoren/Firmen.

ISO Statusworte

Diese Liste enthält die JavaCard-Definitionen des ISO-Standard. Folgende Liste wird im javacard.framework.ISO7816 definiert:
90 00 No Error SW_NO_ERROR
61 00 Response bytes remaining SW_BYTES_REMAINING_00
67 00 Wrong length SW_WRONG_LENGTH
69 82 Security condition not satisfied SW_SECURITY_STATUS_NOT_SATISFIED
69 83 File invalid SW_FILE_INVALID
69 84 Data invalid SW_DATA_INVALID
69 85 Conditions of use not satisfied SW_CONDITIONS_NOT_SATISFIED
69 86 Command not allowed SW_COMMAND_NOT_ALLOWED
69 99 Applet selection failed SW_APPLET_SELECT_FAILED
6A 80 Wrong data SW_WRONG_DATA
6A 81 Function not supported SW_FUNC_NOT_SUPPORTED
6A 82 File not found SW_FILE_NOT_FOUND
6A 83 Record not found SW_RECORD_NOT_FOUND
6A 84 Not enough memory space in the file SW_FILE_FULL
6A 86 Incorrect parameters (P1,P2) SW_INCORRECT_P1P2
6B 00 Incorrect parameters (P1,P2) SW_WRONG_P1P2
6C 00 Correct Expected Length (Le) SW_CORRECT_LENGTH_00
6D 00 INS value not supported SW_INS_NOT_SUPPORTED
6E 00 CLA value not supported SW_CLA_NOT_SUPPORTED
6F 00 No precise diagnosis SW_UNKNOWN


Weitere Definitionen für APDUs in javacard.framework.ISO7816

CLA_ISO7816 0 Class-byte für ISO-konforme APDUs
INS_EXTERNAL_AUTHENTICATE 0x82 Instruction für das external_authenticate Kommando
INS_SELECT 0xA4 Instruction für das select Kommando
OFFSET_CLA 0 Index in den APDU-Buffer für das Class-Byte
OFFSET_INS 1 Index in den APDU-Buffer für das Instruction-Byte
OFFSET_P1 2 Index in den APDU-Buffer für Parameter 1
OFFSET_P2 3 Index in den APDU-Buffer für Parameter 2
OFFSET_LC 4 Index in den APDU-Buffer für Lc bzw. Le-Byte
OFFSET_CDATA 5 Index in den APDU-Buffer wo die eigentlichen Daten beginnen

Spezielle Statusworte des GemXpresso Pro R3 Cardmanagers

Folgende (spezifische) Statusworte könnte der Cardmanager bzw. die Java virtuelle Maschine noch zurückliefern:

 

61 XX Normal processing, XX number of bytes still available
62 83 Selected applet blocked
63 00 Cryptogram not verified
63 10 More data available
65 81 Memory failure
67 00 Incorrect length
69 82 Security status not satisfied
69 85 Command conditions not satified
69 99 Command failed and no more applets are selected
6A 80 Incorrect data: unknown criteria or incorrect AID length
6A 81 Function not supported
6A 82 Applet not found in the selected application
6A 84 Insufficient memory
6A 86 Incorrect P1, P2
6A 88 No element matches the search criteria
6B 00 Incorrect P1 or P2 parameter
6C XX Only XX bytes of data are available
6D 00 Unknown instruction code
6E 00 Incorrect instruction class
6F 00 No specific diagnosis (Exception im Applet)
6F 80 Stack Overflow (?)
90 00 Command processed without error
92 40 Memory problem
94 02 Acess out of range
94 84 Algorithm not supported
94 85 Invalid key check value
9F XX XX bytes of data available

 

weitere Informationen zu der Lehrveranstaltung:

empfohlenes Studiensemester der Lehrveranstaltung: Hauptstudium
Fachrichtung Lehrveranstaltung: Informatik
Nummer der Lehrveranstaltung: 07040
Dauer der Lehrveranstaltung: 2 SWS
Typ der Lehrveranstaltung: V - Vorlesung
Leistungspunkte: 8 LP für WV + Ü
Prüfung: Sonstige
Semester: WS 2006/07