Cryptography Reference
In-Depth Information
wurden, war das Laden von Anwendungen nur den Chipkartenlieferanten möglich. Neuere
Generationen von Chipkarten können aber von verschiedenen Applikationen und Dienstanbie-
tern genutzt werden. Ein Mobilfunkanbieter will zum Beispiel Speicherplatz auf „seiner“ SIM-
Karte (Subscriber Identity Module) für ein elektronisches Ticket eines Nahverkehrsunterneh-
mens zur Verfügung stellen. Die SIM-Karte muss deshalb in der Lage sein, zu einem beliebi-
gen Zeitpunkt die Ticket-Applikation nachzuladen. Aufgrund solcher Anforderungen wurde
begonnen Multi-Applikations-Chipkarten auf Basis von Interpretern zu entwickeln, Abb. 7-5.
Ein Interpreter, z.B. eine Virtuelle Maschine nach dem JavaCard™-Standard, kapselt den
Zugriff auf den Chipkarten-μController durch einen virtuellen Bytecode-Befehlssatz. Es gibt
verschiedene Standards, die einen Interpreter-Befehlssatz und Klassenbibliotheken für den
Einsatz auf der Chipkarte spezifizieren. Durch diese Standards wird eine Interoperabilität zwi-
schen den verschiedenen Chipkarten-Betriebssystemen gewährleistet. Ein JavaCard™-Applet
ist deshalb auf Chipkarten verschiedenster Chipkartenlieferanten lauffähig.
Interpreter haben neben der hohen Sicherheit, die sie bieten, auch einige Nachteile. Besonders
kritisch ist die langsamere Ausführungsgeschwindigkeit im Vergleich zu direkt für die Platt-
form kompiliertem Code. Ein weiterer Nachteil sind Einschränkungen für den Applikations-
programmierer, der nur die Funktionalitäten des Interpreter-Befehlssatzes und der Klassenbib-
liotheken aus der Laufzeitumgebung nutzen kann. Ein direktes Programmieren der Chipkarten-
Hardware bietet gegenüber der Laufzeitumgebung des Interpreters deutlich mehr Flexibilität.
Chipkarten-Applikationen
Laufzeitumgebung bestehend aus
einem Interpreter mit API
Basisbetriebssystem mit
Speichermanagement, Krypto-Routinen, ...
Chipkarten-Hardware
Abb. 7-5: Aufbau eines Chipkartenbe-
triebssystems mit Interpreter.
7.3.3.1 Der JavaCard™-Standard
Die Java™-Laufzeitumgebung bietet Java™-Applikationen besondere Sicherheitsfunktionen
(siehe auch [GoJoSt05]). Dazu gehört eine Überprüfung des Application-Codes (Bytecodes)
durch einen Java-Verifier, noch bevor das Programm überhaupt ausgeführt wird. Während der
Programmlaufzeit verhindert eine Adressierung über Namens-Referenzen (reference by name)
eine unbeabsichtigte gegenseitige Beeinflussung von Applikationen. Beliebige Zugriffe auf
Adressen im Speicher des Computers, z.B. über Zeiger wie in der Programmiersprache C,
werden durch die Java Virtual Machine ( JVM , siehe [LiYe99]) unterbunden. Gerade der Spei-
Search WWH ::




Custom Search