Mit Karte, bitte!

Einsatzmöglichkeiten und Anwendungen von Chipkarten (Teil 5)
Kommentare

Windows Developer

Der Artikel „Chipkarten“ von Helmut Stoiber ist erstmalig erschienen im Windows Developer 8.2012
Die Ermittlung der International Mobile Subscriber Identity (IMSI) erfolgt analog

Windows Developer

Der Artikel „Chipkarten“ von Helmut Stoiber ist erstmalig erschienen im Windows Developer 8.2012

Die Ermittlung der International Mobile Subscriber Identity (IMSI) erfolgt analog zum Auslesen der ICCID, d. h. es ist zunächst die Master File und im Anschluss daran das EF_IMSI mit der FID 6F07 zu selektieren, bevor mit einem READ BINARY die Daten ausgelesen werden können.
Als weiteres Beispiel ist im Folgenden das Lesen und das Schreiben des Rufnummernverzeichnisses veranschaulicht, das in der Elementary File EF_ADN (Abbreviated dialling numbers) gespeichert ist. EF_ADN hat den File Identifier 6F3A und ist nicht direkt unter der Master File lokalisiert, sondern unterhalb der Dedicated File DF_TELECOM, die den File Identifier 7F10 hat. Das Lesen einer Rufnummer läuft in vier Schritten ab, wobei zunächst ausgehend von der Master File drei Selektionen von Nöten sind, bevor mit READ RECORD (B2) die Daten gelesen werden können:

  • Selektieren des MF mit SELECT: 00A4 000C 02 3F00
  • Selektieren des DF_TELECOM mit SELECT: 00A4 000C 02 7F10
  • Selektieren des EF_ADN mit SELECT: 00A4 000C 02 6F3A
  • Lesen der Daten mit READ RECORD(S): 00 B2 01 04 1E
Tabelle 9: APDU für READ RECORD(S)

APDU Wert Erläuterung
CLA 00 Standardklasse (Interindustry) ohne Secure Messaging
INS B2 READ RECORD(S)
P1 01 Record-Nummer
P2 04 Bit 8-4: 0 0 0 0 0 Aktuell selektiertes EF
Bit 3-1: 001 Record-Nummer steht in P1
Le 1E Anzahl der zu lesenden Bytes

Das Chipkarten-Kommando READ RECORD(S) setzt sich wie in Tabelle 9 ausgeführt zusammen. Das zurückgelieferte Byte-Array setzt sich aus einer ASCII-Sequenz und BCD-Daten zusammen. Für einen exemplarischen Rufnummerneintrag „Mustermann“ mit der Rufnummer „0179 123456789“ ist das aus 30 Bytes zusammengesetzte Byte-Array in Tabelle 10 aufgeschlüsselt.

Tabelle 10: Struktur eines Rufnummerneintrages

Byte Wert Bedeutung
1-16 4D 75 73 74 65 72 6D 61 6E 6E FF FF FF FF FF FF Mustermann (ASCII-Konvertierung)
FF = unbenutzte Bytes
17 08 Länge der folgenden BCD-Daten
18,19 81
10
TON und NPI (Numbering Plan Identification)
20-28 97 21 43 65 87 F9 FF FF FF FF 01 (nicht enthalten) 79
12 34 56 78 9
FF = unbenutzte Bytes
29 FF Capability/Configuration Identifier
30 FF Extension1 Record Identifier

Der zu schreibende Rufnummerneintrag muss natürlich dieselbe Kodierung und Struktur aufweisen, wie die des zuvor ausgelesenen Rufnummerneintrages. Somit ergibt sich für einen exemplarischen Neueintrag mit dem Namen „Stoiber Helmut“ und der Rufnummer „089 987654321“ folgendes Byte-Array: „53 74 6F 69 62 65 72 20 48 65 6C 6D 75 74 FF FF 07 81 80 99 78 56 34 12 FF FF FF FF FF FF“.

Tabelle 11: APDU für UPDATE RECORD

APDU Wert Erläuterung
CLA 00 Standardklasse (Interindustry) ohne Secure Messaging
INS DC UPDATE RECORD
P1 01 Record-Nummer
P2 04 Bit 8-4: 0 0 0 0 0 Aktuell selektiertes EF
Bit 3-1: 001 Record-Nummer steht in P1
Lc 1E Anzahl der zu schreibenden Bytes
Data Field XX Zu schreibende Bytes
Standardchipkarten

Wie aus den vorgestellten Beispielen hervorgeht, ist für das Arbeiten mit Standardchipkarten eine umfassende Spezifikation erforderlich, die in den meisten Fällen vollständig oder teilweise über eine Internetrecherche beschafft werden kann. Zunächst ist der Spezifikation die Filestruktur (IDs) zu entnehmen, damit auf die verfügbaren Applikationen (AID) und Datenobjekte zugegriffen werden kann. Weiterhin muss das Format der Daten aus der Spezifikation hervorgehen, damit entweder Record-basiert oder byteweise verarbeitet werden kann. Die Interpretation der zu lesenden oder zu schreibenden Daten erfordert Kenntnis darüber, welche Bedeutung die einzelnen Tags haben und welche Länge die zugehörigen Werte aufweisen, da diese proprietär kodiert und nicht selbsterklärend sind, wie das beispielsweise bei einer Datenbank der Fall ist, wo in der Regel aus den Spaltennamen auf die Bedeutung der Daten geschlossen werden kann. Letztendlich müssen die Zugriffsbedingungen (Access Control) spezifiziert sein und zwar für die jeweiligen Chipkartenkommandos und Datenobjekte.

Ausblick

Nachdem in diesem zweiten Teil des Artikels die Analyse von unbekannten Chipkarten und darauf aufbauend das Arbeiten mit gebräuchlichen Chipkarten anhand von praktischen Beispielen veranschaulicht ist, beschäftigt sich der dritte und letzte Teil mit elektronischen Dokumenten. Hierzu werden zunächst die Grundlagen und die verschiedenen Sicherheitsstufen eines elektronischen Reisepasses nach internationalen Standards erläutert und im Anschluss daran wird anhand eines kompletten .NET-Projektes eine voll kompatible Lesersoftware nach ICAO-Standards für die Sicherheitsstufen „Passive Authentication“ und „Basic Access Control“ vorgestellt.

Dipl.-Ing. Helmut Stoiber ist externer Berater für Software- und Systemarchitektur mit Schwerpunkt Sicherheitstechnologie sowie EDV-Sachverständiger für Systeme und Anwendungen der Informationsverarbeitung. Sie erreichen ihn unter hs@itgutachten.net.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -