Mit Karte, bitte!

Grundlagen und Standards von Chipkarten (Teil 4)
Kommentare

Windows Developer

Der Artikel „Mit Karte, bitte!“ von Helmut Stoiber ist erstmalig erschienen im Windows Developer 7.2012
APDU
Der funktionale Umfang einer Chipkarte ist durch die Kommandos gemäß

Windows Developer

Der Artikel „Mit Karte, bitte!“ von Helmut Stoiber ist erstmalig erschienen im Windows Developer 7.2012

APDU

Der funktionale Umfang einer Chipkarte ist durch die Kommandos gemäß Tabelle 5 beschrieben und wird durch so genannte APDU (Application Protocol Data Units) auf die Low-Level-Schnittstelle abgebildet. Man unterscheidet zwischen Command-APDU, die vom Terminal zur Chipkarte gesendet werden, und Response-APDU, die von der Chipkarte zum Terminal übertragen werden. Die auf solchen APDU basierende Kommunikation wird während eines ATR (Answer to Reset) etabliert. Die ATR repräsentiert den ersten von der Chipkarte gesendeten Datenblock, nachdem diese einen Power-up empfangen hat. Neben Informationen über den Kartentyp enthält die ATR Protokollparameter, die unter anderem darüber Aufschluss geben, ob T=0 oder T=1 zu verwenden ist. Wie aus Abbildung 8 hervorgeht, setzt sich eine Command-APDU aus einem Header und einem Body zusammen. CLA, INS, P1 und P bilden den Header und bestehen jeweils aus genau einem einzelnen Byte, das heißt, der Header hat eine feste Struktur und Länge.

Abb. 8: Struktur einer Command-APDU
Abb. 8: Struktur einer Command-APDU

Der Aufbau des Bodys kann hingegen variieren und zwar in Abhängigkeit davon, um welchen von den in Tabelle 6 aufgeführten Fällen (Case) es sich handelt. Die Bedeutungen der einzelnen Bytes einer Command-APDU sind in Tabelle 7 zusammengestellt.

Tabelle 6: APDU-Fallunterscheidung

Case Kurzbeschreibung Struktur
Case 1 Kommando ohne Command-APDU und Response-APDU |Header|
Case 2 Kommando ohne Command-APDU, aber mit Response-APDU |Header|Le|
Case 3 Kommando mit Command-APDU, aber ohne Response-APDU |Header|Lc|Data|
Case 4 Vollständiges Kommando mit Command-APDU und mit Response-APDU |Header|Lc|Data|Le|
Tabelle 7: Command-APDU
Feld Name Länge Kurzbeschreibung
CLA Class 1 Typ des Kommandos: Interindustry oder proprietär
INS Instruction 1 Spezifisches Kommando, z. B. SELECT FILE
P1 Parameter 1 1 Parameter für das Kommando, z. B. Offset
P2 Parameter 2 1 Parameter für das Kommando, z. B. Offset
Lc Length command 0, 1, 3 Länge der Kommandodaten (Data)
Data Data Lc Kommandodaten
Le Length expected 0 – 4 Länge der erwarteten Antwortdaten

Eine Response-APDU besteht gemäß Abbildung 9 aus einem Body und einem Trailer. Der Body enthält die Antwortdaten oder weist die Länge Null auf, falls keine Antwortdaten gesendet wurden (Le=0) oder ein Verarbeitungsfehler aufgetreten ist. Die beiden Statusbytes SW1 und SW2 bilden zusammen das Statuswort, das über erfolgreiche oder fehlerhafte Ausführung des Kommandos Aufschluss gibt.

Abb. 9: Struktur einer Response-APDU
Abb. 9: Struktur einer Response-APDU

Die Norm ISO/IEC 7816-4 definiert eine Reihe von Return- und Fehlercodes in Form von zu einem Statuswort konkatenierten Bytes SW1 und SW2. Der Return-Code SW1=90 und SW2=00 bedeutet, dass die Transaktion fehlerfrei verarbeitet werden konnte. Aus Gründen der Übersichtlichkeit sind die übrigen Fehlercodes als Definitionen in das zu diesem Artikel gehörende Softwaredemoprojekt (SCDemo.sln) ausgelagert. Die APDU-Sequenz 00A4000C023F00 lässt sich beispielsweise wie folgt zerlegen:

  • CLA=00: Standardklasse (Interindustry) ohne Secure Messaging
  • INS=A4: SELECT FILE
  • P1=00: Steuerung für Select
  • P2=0C: Option für Select
  • Lc=02: Länge von Data ist 2 Byte
  • Data=3F00: FID der Master File
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -