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 |
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.
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 |
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
|
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 |
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 |
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) | Ausgabejahre | Prefix |
47 | 2000,2001 | 000040000 |
48 | 2003,2004 | 000044000 |
2007 | 00004A000 | |
49 | 2005 | 000048000 |
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...