Java-Card-Entwicklungstool
Stichwörter
Java, Java Card, Sun, JCRE, Chipkarten, Smartcard, Visual C++, Konverter, Firewall, Entwicklungstool
Aufgabenstellung
Prozessorgestützte Chipkarten nach dem Java-Card-Standard ermöglichen die hersteller- und typunabhängige Karten-Programmierung auf dem Standard einer hochstehenden und modernen Programmiersprache. Derartige Chipkarten erhalten derzeit stetig steigende Bedeutung, vor allem im Telekommunikations- und Sicherheitsbereich (Zugangskontrollsysteme).
Der Java-Card-Simulator bietet dem Chipkarten-Entwickler die Möglichkeit, Karten nach Java-Card-Standard nachzubilden und Programmcode in der Simulationsumgebung auszutesten, zu korrigieren und zu ändern. Da es nicht möglich ist, auf eine reale Karte geladenen Code zu korrigieren oder zu ändern, erspart der Einsatz der Simulationsumgebung hohe Kosten, die durch auf die Karte geladenen fehlerhaften Code entstehen können.
Zentrale Aufgabe von Bardenheuer war die Integration einer neuen Java Card Virtual Machine (*.cap-File-Konzept nach Sun Java Card 2.1.2) sowie die Erweiterung der Vorgängerversion des Simulators von einem reinen Debug-Tool zu einer vollständigen Entwicklungsumgebung unter Einsatz von MS Visual C++ 6.0.
Neben der Ablösung der bisherigen Virtual Machine auf Basis von *.class-Dateien durch die Java Card Virtual Machine auf Basis von *.cap-Dateien waren von Bardenheuer folgende Arbeiten auszuführen:
- Untersuchung und Realisierung der erforderlichen Erweiterungen von Java Card 2.0 auf Java Card 2.1, wie z. B. die Implementierung des Firewall-Konzeptes
- Integration des Java-Card-Konverters von Sun
- Anpassungen der Kommunikationskommandos (Application Protocol Data Units, APDUs) an das „T=0“-Protokoll (s. a. ISO 7816)
- Änderungen am Java Card Runtime Environment (JCRE)
- Entwicklung des Simulators zu einer Endbenutzerversion und parallel dazu zu einer Version mit erweiterten Fähigkeiten für Betriebssystem-Entwickler
- Schutz des Codes und der Objekte des Betriebssystems durch Verschlüsselung und Unterbindung der Anzeige in der Endbenutzer-Version
Datei-Input für den Java-Card-Simulator
Lösung
Als Datei-Input dienen nunmehr extern zu *.class-Dateien kompilierte Java-Dateien, die innerhalb der Simulationsumgebung zu *.cap-Dateien konvertiert werden. (Bestehende Sourcecode-Dateien können auch innerhalb der Simulation editiert werden.) Auch die direkte Verwendung vorhandener, (intern oder extern) bereits zu *.cap-Dateien konvertierter Dateien ist möglich – verschlüsselt und unverschlüsselt.
Verschiedene Chipkarten werden durch entsprechende Simulations-Templates nachgebildet. Jedes Template enthält dabei die spezifischen Daten der simulierten Karte.
In der grafischen Benutzeroberfläche des Java-Card-Simulators können Java-Sourcecode und Java-Card-Bytecode visualisiert werden, wie bei entsprechenden Windows-gestützen Entwicklungswerkzeugen üblich.
Eine Reihe von Debug-Fenstern ermöglicht die Anzeige der relevanten Daten für das laufende Simulations-Projekt: Projektstruktur, Initialisierungsdaten der simulierten Karte, Objekte auf dem Heap, Werte auf dem Stack, lokale Variablen, Compiler-Ausgaben, aber auch die verfügbaren Kommandos („APDUs“) zur Kommunikation mit der Karte.
Das gezielte Debuggen der simulierten Karte wird durch Haltepunkte, Lesezeichen und umfangreiche Möglichkeiten zur Beobachtung von Variablen und Objekten (Watch-Fenster) unterstützt.
Der Java-Sourcecode von als *.class-Dateien geladenen und erst innerhalb der Simulationsumgebung konvertierten Java-Packages kann modifiziert und neu kompiliert/konvertiert werden. Bei extern konvertierten Packages besteht diese Möglichkeit nicht, da in diesem Fall nicht zwingend die entsprechenden *.class- und *.java-Dateien vorliegen.
Die künftige Flexibilität der Simulations-Umgebung wird durch deren modularen Aufbau gewahrt. Neben anderen Programmteilen ist auch die komplette Kartensimulation als DLL gekapselt.
Sie wünschen weitere Informationen oder haben Fragen zur Realisierung eines Projekts? Senden Sie uns eine E-Mail mit Ihrem Anliegen und wir werden uns umgehend mit Ihnen in Verbindung setzen. Gerne helfen wir Ihnen auch telefonisch unter der Nummer 089 547054-0 weiter.
