Auslesen der Kartendaten

Um Chiffrat und Klartext-Informationen von Postcards auszulesen, wird ein einfacher Chipkartenleser sowie eine entsprechende Software benötigt, die üblicherweise dem Chipkartenleser beiliegt. Diese Software sollte die Kommunikation zwischen Computer und Chipkarte nach Standard ISO 7816-4 erlauben.

Zum Auslesen der Karten wird das nachfolgende Kommando an die Karte übermittelt:

BC:B0:08:E0:70

Diese antwortet mit dem Statuscode 9000 (OK) und gibt die angeforderten Daten zurück:

2E 03 30 33 30 00 0E C6 3D A0 D2 47 3A 69 CD 09
33 B6 D8 52 31 18 CA 43 34 6B 44 EE 3E CE 4A 33
39 4F 87 2C 31 35 6A 80 37 0B FE BB 35 46 69 F3
37 5A 63 F2 2E 02 38 F1 30 05 01 62 33 00 00 02
33 42 08 15 37 70 01 03 32 80 05 03 37 56 35 01
34 45 54 34 3B 20 44 4F 34 E4 14 C4 34 20 20 20
32 02 02 02 30 20 20 20 32 02 02 02 30 20 F6 23

N.B.: Stellt man eigene Postcards her, so muss dieser Datenbereich aus den jeweiligen gewünschten Werten für Kartennummer, Gültigkeitszeitraum, Karteninhabername usw. selbst erstellt werden. Dafür ist zusätzlich der geheime Schlüssel der PostFinance notwendig, der in dieser Beschreibung ermittelt wird.

Analyse des Dateninhaltes

Die Analyse des Dateninhaltes erfolgt so, wie sie für die französische Bankkarte beschrieben ist. Das Vorgehen lässt sich ohne weitere Anpassung auf die schweizerische Postcard übertragen.

Chiffrat-Datenblock

Die erhaltenen Daten sind wie folgt organisiert: Der Datenblock beginnt mit einem vier Byte langen Header 2E 03 30 33; dabei bezeichnet 03 den Typ der nachfolgenden Daten ("Chiffrat") und 30 die zugehörige Länge (48 Bytes).

2E 03 30 33
30 00 0E C6 3D A0 D2 47
3A 69 CD 09 33 B6 D8 52
31 18 CA 43 34 6B 44 EE
3E CE 4A 33 39 4F 87 2C
31 35 6A 80 37 0B FE BB
35 46 69 F3 37 5A 63 F2

Die 48 Byte Daten sind kodiert, wobei jeweils sieben Ursprungs-Bytes in acht Darstellungs-Bytes überführt wurden; d.h. die tatsächliche Datenlänge beträgt nur 42 Bytes. Die Dekodierung erfordert, dass jedes 8.te Halbbyte - beginnend mit dem ersten Halbbyte der erhaltenen Daten - gelöscht wird; das zu löschende Halbbyte hat immer den Wert 3.

Als Chiffrat erhält man aus den vorliegenden Daten also:

c = 0000EC6DA0D247A69CD093B6D852118CA4346B44EEECE4A3394F872C1356A8070BFEBB54669F375A63F2

Karten-Datenblock

Der zweite Datenblock beginnt mit dem Header 2E 02 38 F1; dabei bezeichnet 02 wiederum den Typ der nachfolgenden Daten ("Kartendaten") und 38 die zugehörige Länge (56 Bytes).

2E 02 38 F1
30 05 01 62 33 00 00 02
33 42 08 15 37 70 01 03
32 80 05 03 37 56 35 01
34 45 54 34 3B 20 44 4F
34 E4 14 C4 34 20 20 20
32 02 02 02 30 20 20 20
32 02 02 02 30 20 F6 23

Auch diese Daten sind nach dem oben beschriebenen Verfahren kodiert, d.h. jedes 8.te Halbbyte (fett) ist in der Dekodierung zu löschen. Danach erhält man 49 Bytes Nutzdaten mit den Karteninformationen. Diese sind wie auf der französischen Bankkarte formatiert und es ergibt sich folgender Aufbau der Datenstruktur:

00501623000002342081577 0 0103 280 0503 756 3501 4455434B20444F4E414C44202020202020202020202020202020 F623
-----------(1)--------- - (2)- (3) (4)- (5) (6)- ----------------(7)---------------------------------
  1. Erweiterte Karten-ID (23 Halbbytes) (Beschreibung)
  2. Ausgabedatum (März 2001)
  3. Landescode (ISO 3166 numerisch, Deutschland !?)
  4. Ablaufdatum (März 2005)
  5. Währungscode (ISO 4217 numerisch, CHF)
  6. Währungsdarstellung
  7. Karteninhaber (DUCK DONALD)

Bestimmung der Klartext-Daten für die Signierung

Die Klartextdaten k für die Verschlüsselung werden aus den Kartendaten wie folgt bestimmt:

k' = Prefix || (1) || (2) || (4)
k = k' || k'

Prefix ist ein 36-Bit-Datenblock, dessen Wert vom Laufzeit/Ausgabedatum der jeweiligen Karte abhängt (siehe Tabelle). Der Prefix wird mit der Karten-ID (92-Bit) sowie den Ausgabe- und Ablaufdatum (jeweils 16 Bit) konkateniert, um den Teil-Klartext k' von 160 Bit zu erhalten. Der finale Klartext k ergibt sich, indem zwei k' zusammengefügt werden.

Laufzeit (Monate)AusgabejahrePrefix
472000,2001000040000
482003,2004000044000
200700004A000
492005000048000

Als Klartext für die Signierung der Karte erhalten wir in unserem Beispiel:

k = 00004400000501623000002342081577010305030000440000050162300000234208157701030503

Im nächsten Kapitel werden wir sehen, wie aus diesen Daten der geheime Schlüssel der Kartenausgabestelle berechnet werden kann...