Mit Karte, bitte!

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

Windows Developer

Der Artikel „Chipkarten“ von Helmut Stoiber ist erstmalig erschienen im Windows Developer 8.2012
EC-Bankkarten
Die meisten Herausgeber von Bankkarten haben ihre Karten mittlerweile

Windows Developer

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

EC-Bankkarten

Die meisten Herausgeber von Bankkarten haben ihre Karten mittlerweile mit einem Chip ausgestattet, der den auf der Kartenrückseite vorhandenen Magnetstreifen ersetzen soll. Während in den Anfängen diese Chips und die darauf implementierten Funktionen und Protokolle proprietär waren und somit eine Interoperabilität zwischen verschiedenen Instituten nicht oder nur sehr eingeschränkt möglich war, basieren aktuelle EC-Bankkarten auf dem so genannten EMV-Standard. EMV steht für die größten Zahlungskartenorganisationen, die sich aus Europay International, MasterCard und VISA konstituiert. Der Einsatz von Chips, die dem EMV-Standard folgen, bietet entscheidende Vorteile im Vergleich zum Magnetstreifen: Der Chip kann nicht dupliziert werden (Chip Cloning) und die gespeicherten Daten sind gegen unrechtmäßiges Verändern geschützt. Ohne Kenntnis der individuellen PIN kann keine Authentifizierung (Cardholder-Verifikation) durchgeführt werden. Genauer betrachtet authentifiziert sich der Karteninhaber gegenüber dem Chip, sodass die Authentifizierung direkt am POS-Terminal (Point of Sales) ohne Online-Verbindung durchgeführt werden kann. Die Datenstrukturen und Kommandos einer EC-Karte sind in FinTS V4.0 (siehe Abschnitt HBCI-Chipkarte) spezifiziert. Gemäß dieser Spezifikation existiert neben der Master File (MF) und diversen Elementary Files (EF) die Datei EF_ID, auf die mit dem Short File Identifier (SID=19) zugegriffen werden kann. Diese Datei enthält einen Record, in dem die Kartenidentifikationsdaten gespeichert sind. Das Auslesen dieses Records erfolgt in zwei Schritten:

  1. Selektieren von DF_BANKING_20 mit SELECT: „00A4040C 09 D27600002548420200“
  2. Lesen des Records mit READ RECORD: „00B2 01CC 00“

Das Chipkartenkommando READ RECORD ist in ISO-7816-4 „6.5 Interindustry Commands“ spezifiziert und wie folgt aufgebaut: CLA=00, INS=B2 (READ RECORD), P1=01 (Record-Nummer), P2=CC (Reference Control Byte). P2 setzt sich aus der Konkatenation von SID=19 (11001) und der Option 100 (Record-Nummer steht in P1) zusammen, sodass sich der hexadezimale Wert P2=CC (11001100) ergibt. In Tabelle 7 sind die Kartenidentifikationsdaten einer kompatiblen EC-Karte aufgeführt, wobei die einzelnen Bedeutungen der entsprechenden Werte aus der Spezifikation FinTS V4.0 entnommen sind.

Tabelle 7: Kartenidentifikationsdaten gemäß FinTS V4.0

Byte Wert Bedeutung
1 67 Branchenhauptschlüssel
2-4 25 90 00 Kurz-BLZ
5-9 99 00 00 10 26 Individuelle Kartennummer
10 3D Prüfziffer für Byte 1-9
11-12 05 12 Verfallsdatum der Karte
13-15 01 04 01 Aktivierungsdatum der Karte
16-17 02 80 Ländercode
18-20 45 55 52 Währungskennzeichen „EUR“
21 01 Wertigkeit der Währung
22-23 22 00 Chiptyp || Filler
01   Betriebssystemversion

Neben dem „Electronic-Cash-System“ verfügt eine EC-Karte in der Regel über weitere Applikationen, wie beispielsweise die „elektronische Geldbörse“. Die Applikation hat die Kurzbezeichnung DF_BÖRSE und die AID „D27600002545500200“ (Version 2). Das Auslesen von solchen applikationsspezifischen Daten erfolgt prinzipiell genauso wie zuletzt gezeigt, d. h. selektieren einer Datei und anschließendes Auslesen der Daten (Records). Demgemäß kann auf diese Weise beispielsweise der aktuelle Saldo einer Geldkarte ausgelesen werden. Allerdings kann nicht a priori auf alle Dateien zugegriffen werden, da bei der Initialisierung des Chips Zugriffsregeln implementiert werden. Man unterscheidet zwischen uneingeschränktem Zugriff (MF), kein Zugriff (PIN) und bedingtem Zugriff. Secure Messaging zählt zu der Kategorie „bedingter Zugriff“, da erst nach dem Aufbau eines sicheren Übertragungskanals (Secure Channel) mit dem Chip kommuniziert werden kann. Der Ablauf einer derartigen Kommunikation wird in Teil 3 dieser Artikelserie ausführlich beschrieben werden.

SIM-Karten

Ein Subscriber Identity Module (SIM) ist eine Chipkarte mit dem Formfaktor ID-000 (vgl. Teil 1 der Artikelserie, Abbildung 2). Auf dem Chip sind die eineindeutige Chip-ID (ICCID) und der Service Subscriber Key (IMSI) gespeichert, der die eindeutige Identifizierung eines mobilen Telefons innerhalb von GSM- und UTMS-Netzen ermöglicht. Weiterhin sind PINs für den normalen Gebrauch und PUKs für das Aufheben einer gesperrter PIN (unblock) permanent gespeichert. Außerdem können Rufnummern des jeweiligen Kartenbesitzers abgespeichert werden. Zusätzlich werden temporäre Informationen über die aktuelle Netzwerkverbindung und Services zwischengespeichert. Die Spezifikation „3GPP TS 24.008 V10.3.0 (2011-06)“ definiert die Netzwerkprotokolle, die Hintergrundsysteme sowie die Integration von mobilen Telefonen und steht zum Download unter [5] zur Verfügung. Im Folgenden ist der Zugriff auf ein SIM anhand des Auslesens der chipspezifischen Parameter ICCID und IMSI beschrieben. Hierfür wird die Dateistruktur benötigt, die aus GSM Technical Specification [6] hervorgeht. Die Master File MF hat standardmäßig die ID 3F00 und EF_ICCID lässt sich mit der FID 2FE2 selektieren. Da es sich bei den Daten von ICCID um reine Binärdaten handelt, können diese Daten mit dem Chipkartenkommando READ BINARY (B0) ausgelesen werden. Insgesamt ergibt sich nachstehende Sequenz:

  • Selektieren des MF mit SELECT: 00A4 000C 02 3F00
  • Selektieren des EF_ICCID mit SELECT: 00A4 000C 02 2FE2
  • Lesen der Daten mit READ BINARY: 00 B0 00 00 0A

Das zurückgelierte Byte-Array für EF_ICCID ist in der linken Spalte von Tabelle 8 aufgeführt. Gemäß CCITT Recommendation E.118: „The international telecommunication charge card“ liegen diese Daten im gepackten BCD-Format vor und müssen deshalb vor der Interpretation konvertiert werden.

Tabelle 8: EF_IDDID

ICCID-BCD ICCID Bedeutung
98 89 Major Industry Identifier (MII) – 2 Ziffern
89 steht für Telekommunikation
94 49 Ländercode gemäß ITU-T – 2 Ziffern
49 steht für Deutschland
20 02 Herausgeber-ID – 2 Ziffern
04 00 31 77
56 53 67
40 00 13 77
65 35 76
Individual Account Identification
und Check-Digit-Ziffer

In Listing 1 ist eine kurze C#-Sequenz gezeigt, die die Konvertierung byteweise bewerkstelligt und das Ergebnis als String zurückliefert. Das Ergebnis nach der Konvertierung ist in der mittleren Spalte von Tabelle 8 zu sehen. Die Interpretation der einzelnen Bytes erfolgt gemäß CCITT-E.118 und ist in der Spalte „Bedeutung“ in Tabelle 8 gegeben.

Listing 1: BCD-Konvertierung

public string BCD_TO_INT(byte bcd)
{
  byte msb = ((byte)(bcd << 4));
  byte lsb = (byte)(bcd >> 4);
  return String.Format("{0:X2}", (byte)(msb | lsb));
}  
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -