Mit Karte, bitte!

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

Windows Developer

Der Artikel „Chipkarten“ von Helmut Stoiber ist erstmalig erschienen im Windows Developer 8.2012
HBCI-Chipkarte
Home Banking Computer Interface (HBCI) ist ein vom Zentralen Kreditausschuss

Windows Developer

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

HBCI-Chipkarte

Home Banking Computer Interface (HBCI) ist ein vom Zentralen Kreditausschuss (ZKA) entwickelter Standard, der ein auf Chipkarten basierendes Online-Banking zwischen einem Bankrechner und einem mit dem Internet verbundenen Computer ermöglicht. Mittlerweile wurde das erstmals 1996 veröffentliche Verfahren weiterentwickelt und trägt derzeit die Bezeichnung Financial Transaction Services (FinTS). Die derzeit auf dem Markt etablierte Spezifikation FinTS V4.0 kann von [2] heruntergeladen werden. Anhand einer aus der realen Finanzwelt stammenden HBCI-Chipkarte werden im Folgenden Techniken vorgestellt, die das Auslesen und Schreiben von Daten ermöglichen und die kompatible De- und Enkodierung dieser Daten nach dem TLV-Standard veranschaulichen. Somit bleibt das Thema ausschließlich auf die Chipkarte fokussiert, und die umfangreichen von FinTS unterstützten Geschäftsvorfälle bleiben außen vor, denn für die Integration in eigene PC-Applikationen stehen diverse Bibliotheken zur Verfügung. Die offizielle, kostenfreie Version des Banking-Kernels kann von [3] heruntergeladen werden.

Laut Spezifikation befindet sich auf einer HBCI-Chipkarte die Applikation DF_BANKING_20 mit der AID „D27600002548420200“. Die AID von DF_BANKING_20 besteht aus der nationalen RID des ZKA (‚D2 76 00 00 25′), der ASCII-kodierten Kennung „HB“ (’48 42′) sowie der Version der Applikation 2.0 (’02 00‘). Um sicher zu stellen, dass diese Applikation existiert, wird die AID in Verbindung mit dem Kommando SELECT FILE zur Chipkarte gesendet. Das in Tabelle 5 aufgeführte Ergebnis bestätigt das Vorhandensein von DF_BANKING_20. Weiterhin definiert die Spezifikation eine Applikation mit der Bezeichnung DF_NOTEPAD mit der AID „D2760000254E500100“, allerdings ist diese optional. Die zu DF_NOTEPAD gehörende AID setzt sich aus der RID des ZKA (‚D2 76 00 00 25‘), der ASCII-kodierten Kennung „NP“ (‚4E 50′) und der Version der Applikation 1.0 (’10 00‘) zusammen. Um herauszufinden, ob diese optionale Applikation existiert, wird ein SELECT FILE mit diesem AID zur Karte gesendet. Der Return-Code gemäß Tabelle 5 lässt erkennen, dass diese optionale Applikation auf der hier verwendeten HBCI-Karte nicht existiert.

Tabelle 5: HBCI-spezifische Kommandos

Kommando Command-APDU/Response-APDU
DF_BANKING_20
Select ohne Datenrückgabe
00A4040C 09 D27600002548420200
9000: OK
DF_NOTEPAD
Select ohne Datenrückgabe
00A4040C 09 D2760000254E500100
6A82: [File not found]
DF_BANKING_20
Select mit FCI-Datenrückgabe
00A40400 09 D27600002548420200 00
9000: OK
6F0D8409D27600002548420200A500
DF_BANKING_20
Select mit FCP-Datenrückgabe
00A40404 09 D27600002548420200 00
9000: OK
621E8201388302A6008409D2760000254842020085
020562A1068B0400300201
DF_BANKING_20
Select mit FMD-Datenrückgabe
00A40408 09 D27600002548420200 00
9000: OK
64448503C80003850508A6000030850510A6000010
8505F0A6000013850518A6000012850520A6000015
850528A60000168505D0A60003018505D8A6000302
8505E0A6000303

Im nächsten Schritt lassen sich zu der selektierbaren Applikation DF_BANKING_20 zusätzliche Daten auslesen, indem der Parameter P2 der APDU-Sequenz entsprechend gesetzt wird. Die File Control Information (FCI) wird von der Chipkarte für P2=00 zurückgegeben. Zusätzlich muss bei einem Kommando mit Datenrückgabe das Le-Byte gesetzt werden (’00‘). Weiterhin werden die File Control Parameter (FCP) für P2=04 und die File Management Data (FMD) für P2=08 von der Chipkarte zurückgeliefert. Die erzielten Resultate sind in Tabelle 5 zusammengestellt, wobei es sich bei den als Response-APDU zurückgegebenen Werten um eine hexadezimal kodierte Bytesequenz handelt. Genauer betrachtet, handelt es sich um Daten, die gemäß TLV kodiert sind.

Analyse unbekannter Chipkarten

TLV steht für „Tag Length Value“, wobei „Tag“ eine anwendungsspezifische Kennung ist, „Value“ der hexadezimal kodierte Wert dieses Tags ist und „Length“ die Anzahl der Bytes von Value ausweist. Diese Form der Kodierung wird innerhalb der Chipkartenkommunikation angewendet und zwar sowohl bei den zu sendenden als auch bei den zu empfangenden Daten. TLV-Kodierungen werden außerdem bei digitalen Zertifikaten, Signaturen und Schlüsseldateien sowie bei Daten mit hoher Packungsdichte verwendet. Letzteres wird ermöglicht, da aufgrund der Längenangabe für alle Nutzdaten (Value) eine individuelle Länge festgelegt ist, sodass keine Redundanzen entstehen. Detailliert ist TLV in der ASN.1-Spezifikation (Abstract Syntax Notation One) beschrieben. Die genaue Bezeichnung dieser Spezifikation lautet ISO/IEC 8824-1:2008.

Das Parsen von TLV-Strukturen kann entweder manuell oder mit einem Tool vorgenommen werden. Am Beispiel der aus der HBCI-Karte ausgelesen FCI-Daten ist die Zerlegung dieser Sequenz in Tabelle 6 veranschaulicht. Für diese relativ kurze Sequenz lässt sich leicht erkennen, dass dem FCI-Tag (6F) dreizehn weitere Bytes folgen. Die nächste Teilsequenz wird mit dem Tag „84“ eingeleitet und weist eine Länge von neun Bytes auf. Diese repräsentiert den AID von DF_BANKING_20. Das letzte Tag (A5) hat die Länge null und enthält somit keine Daten.

Tabelle 6: Kurze TLV-Sequenz

Tag Länge Wert Erläuterung
6F 0D   Tag und Länge für FCI (vgl. Tabelle 5)
84 09 D27600002548420200 AID von DF_BANKING_20
A5 00   keine proprietären Informationen

Während eine kurze TLV-Sequenz ohne größeren Aufwand manuell zerlegt werden kann, erleichtert der Einsatz eines Tools das Parsen einer umfangreicheren TLV-Sequenz wesentlich. In Abbildung 3 sind exemplarisch die FMD-Daten von DF_BANKING_20 mit dem frei verfügbaren Tool ASN.1 Editor visualisiert. Dieses Tool kann von [4] heruntergeladen werden. Ein weiteres Tool ist DumpASN1.exe, hierbei handelt es sich um ein Kommandozeilentool ohne GUI. Nachdem die einzelnen Werte (Values) von den jeweiligen Tags isoliert sind, können diese interpretiert werden. Für die FMD-Daten von DF_BANKING_20 bedeutet das, dass gemäß Spezifikation (FinTS V3.0) diese Tags die für den Zugriff auf spezielle Datenobjekte benötigten Adressen beinhalten.

Abb. 3: TLV-Struktur - ASN.1-Editor
Abb. 3: TLV-Struktur – ASN.1-Editor
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -