Windows Developer
Der Artikel „Mit Karte, bitte!“ von Helmut Stoiber ist erstmalig erschienen im Windows Developer 7.2012
Chipkarten-Dateisystem
Eine Chipkarte ist mit einem eigenen Betriebssystem (Card Operating System, COS) ausgestattet, das persistent im ROM des Chips gespeichert ist (Abb. 3). Ähnlich einer Computerfestplatte werden die Daten in Dateien organisiert und gespeichert. Damit die für Chipkarten geltenden, hohen Sicherheitsanforderungen umgesetzt werden können, werden die Dateien in hierarchischen Strukturen mit dezidierten Zugriffsrechten permanent oder temporär gespeichert. Gemäß ISO/IEC 7816-4 sind drei unterschiedliche Dateitypen definiert:
- Master File (MF): Fungiert als Root-Verzeichnis und tritt in der gesamten hierarchischen Struktur nur ein einziges Mal auf. Ist nicht für das Speichern von Dateien vorgesehen und ist somit eine Sonderform eines DF.
- Dedicated File (DF): Vergleichbar mit einem Verzeichnis (Directory) auf einer Computerfestplatte. Ermöglicht die strukturierte Organisation von einzelnen Dateien und somit die Separierung diverser Applikationen und deren individuelle Zugriffslimitierungen.
- Elementary File (EF): Klassische Datei, in der Schlüssel sowie Daten der Anwendung(en) und des Betriebssystems gespeichert sind.
Abbildung 7 zeigt die Topologie eines Chipkarten-Dateisystems in das exemplarisch eine PKCS#15-Applikation eingebettet ist. Diese Applikation besteht primär aus fünf EFs und zwei Schlüsseldateien ISF und IPF, die hierarchisch unterhalb eines DF angeordnet sind. Die Kurzform ISF steht für „Internal Secret File“ und bezeichnet eine Schlüsseldatei, die neben 3DES- und privaten RSA-Schlüsseln [2], PIN und PUK enthält. Diese Schlüsseldatei kann nicht gelesen, sondern nur geschrieben werden und zwar mit den Chipkartenkommandos WRITE KEY und GENERATE PUBLIC KEY PAIR. In der zweiten Schlüsseldatei, Internal Public Files (IPF), sind die öffentlichen RSA-Schlüssel gespeichert, wobei es sich um eine transparent strukturierte Datei handelt, sodass mit den Chipkartenkommandos READ BINARY bzw. UPDATE BINARY auf diese Datei zugegriffen werden kann.

Weiterhin sind außerhalb der PKCS#15-Applikation eine MF und eine EF, die als Verzeichnis für die komplette Dateistruktur der Chipkarte fungiert, zu erkennen. Neben diesen beiden Dateien sind zwei weitere Schlüsseldateien ISF_MF und IPF_MF eingezeichnet, die die globalen Schlüssel und Passphrasen für die Authentisierung gegenüber der Karte beinhalten.
Der Zugriff auf die Dateien einer Chipkarte erfolgt mit einem so genannten File Identifier (FID) oder einem Application Identifier (AID). Die Master File kann immer direkt mit dem FID 0x3F00 adressiert werden. Auf eine EF kann auch direkt mit einem Short File Identifier (SFI) lesend oder schreibend zugegriffen werden, sofern der geforderte Sicherheitslevel aktiviert ist. Die Adressierung mit den speziellen Identifiern sowie der hierarchische Aufbau eines realen Chipkarten-Dateisystems ist im Abschnitt „Smart-Card-Demo“ anhand von Codesequenzen veranschaulicht.
Nach dem Reset der Chipkarte ist immer automatisch die MF selektiert, sodass die Adressierung mit dem 2 Byte langen FID erfolgen kann, oder falls es sich um eine Dedicated File handelt, kann die Adressierung mit dem 1 bis 16 Byte langen DF-Namen vorgenommen werden. Eine direkte Auswahl einer Datei, relativ zur aktuellen Position, ist außerdem mit first, last, next oder previous möglich.
Chipkartenkommandos
Für den Austausch und das Management von Daten, die Verwaltung von Speicherbereichen sowie für die Verarbeitung von Information stellt das Betriebssystem einer Chipkarte einen Satz an Kommandos bereit. Die einzelnen Kommandos sind in ISO 7816-4, Sektion 6 (Basic Interindustry Commands), spezifiziert. Ein kurzer Abriss der wichtigsten Kommandos ist in Tabelle 5 auszugsweise ausgeführt, wobei neben der Kurzbeschreibung das jeweilige Instruction Byte (INS) ausgewiesen ist.
Tabelle 5: ISO-7816-4-Chipkartenkommandos
Kommando | Kurzbeschreibung | INS |
---|---|---|
READ BINARY | Liefert den gesamten Inhalt oder einen Teil eines EF mit transparenter Struktur | B0 |
WRITE BINARY | Schreiben binärer Daten in ein EF | D0 |
UPDATE BINARY | Überschreiben binärer Daten eines EF | D6 |
ERASE BINARY | Zurücksetzen binärer Daten eines EF auf den Wert „Gelöscht“, beginnend an einem vorzugebenden Offset | 0E |
READ RECORD(S) | Liefert den Inhalt des spezifizierten Records | B2 |
WRITE RECORD | Schreiben des übergebenen Records bzw. Überschreiben bereits vorhandener Daten, wobei diese Daten mit den Daten des Records logisch „UND“ oder „ODER“ verknüpft gespeichert werden können | D2 |
APPEND RECORD | Anhängen von Record-Daten an das Ende eines EF | E2 |
UPDATE RECORD | Überschreiben von Record-Daten | DC |
GET DATA | Auslesen eines oder mehrerer Datenobjekte | CA |
PUT DATA | Speichern von Datenobjekten | DA |
SELECT FILE | Auswahl einer Datei | A4 |
VERIFY | Vergleich der in der Karte gespeicherten Daten mit den übergebenen Daten (z. B. Passphrase) | 20 |
INTERNAL AUTHENTICATE | Einseitige Authentisierung der Chipkarte durch das Terminal | 88 |
EXTERNAL AUTHENTICATE | Einseitige Authentisierung des Terminals durch die Chipkarte | B2 |
GET CHALLENGE | Rückgabe einer Zufallszahl (Challenge) durch die Chipkarte | 84 |
MANAGE CHANNEL | Öffnet und schließt logische Kanäle | 70 |