Protokollieren der Kommunikation

Bevor man den Kartenklon programmieren kann, muss man das Protokoll ermitteln, durch das Terminals mit der Chipkarte "sprechen". Wir wissen, dass es sich bei der Postcard um eine ISO 7816-kompatible Karte handelt und kennen daher die "Wörter" der Sprache; dies sind die dokumentierten ISO 7816-4 Befehle, die die Karte versteht. Leider reicht das noch nicht ganz aus:

Wir müssen noch ermitteln, wie aus diesen "Worten" ganze "Sätze" gebildet werden - und was diese Sätze "bedeuten". Der Quellcode des französischen Kartenklons gibt darauf zwar einige Hinweise, aber wir wollten es genauer wissen...

Aus diesem Grund wird in den folgenden Kapiteln beschrieben, auf welche Art und Weise die Kommunikation zwischen Terminal und Chipkarte protokolliert werden kann. Ein solches Vorgehen ist selbst dann empfohlen, wenn das Protokoll (wie im Fall von EMV) ausführlich dokumentiert ist - denn auch eine echte Sprache lernt man nicht aus Büchern, sondern durch Gespräche.


Hardware-basiertes Logging

Beim Hardware-basierten Logging wird die Kommunikation zwischen Terminal und Chipkarte auf der Signal-Ebene protokolliert (physikalisches Logging); damit lassen sich alle Besonderheiten der Kommunikation - insbesondere das Timing - genau protokollieren und analysieren.

Dazu wird eine Platine mit Chipkarten-Kontakten in das Terminal eingeführt; diese Kontakte sind über die Platine nach aussen geführt und können so zur Protokollierung abgegriffen werden. Gleichzeitig sind sind die Kontakte an die "echte" Smartcard durchgeschleift, so dass das Terminal auch mit der Karte sprechen kann.

Hardware-basiertes Logging ist immer dann notwendig, wenn z.B. das Timing der Kommunikation eine entscheidende Rolle spielt. Dies ist aber zum Glück nicht bei allen Smartcards relevant, denn die Standardisierung der Kommunikation (dieselbe Karte funktioniert in verschiedenen Terminals und ein Terminal kann mit verschiedenen Karten sprechen) führt zu Toleranzen im Timing, das man in einem Kartenklon deshalb nur bedingt berücksichtigen muss.

Der Nachteil dieser Methode ist sicherlich, dass es nicht möglich ist, "unauffällig" zu protokollieren; zudem funktioniert diese Methode an Terminals nicht, die einen "Shutter" verwenden, um die Karte nach dem Einzug von der Aussenwelt abzuschneiden.


RFID-basiertes Logging

Als Idee - leider aber noch nicht realisiert - wird vorgeschlagen, einen Chipkarte zu benutzen, die eine weitere Hardware-Komponente für die RFID-Kommunikation besitzt. Diese Karte würde dann die (logische) Kommunikation des Terminals an einen externen Rechner (Laptop) übertragen, der die Befehle an die echte Karte durchschleift und die Antworten zurück übermittelt.

Leider sind solche Karten noch nicht verfügbar; es bleibt auch zu klären, ob die RFID-Kommunikation durch das Terminal hindurch überhaupt funktioniert - aber die Idee ist reizvoll.


Software-basiertes Logging

Beim Software-basierten Logging wird ebenfalls eine programmierbare Chipkarte verwendet, auf der eine Logger-Applikation läuft. Diese Karte wird in einem realen Terminal verwendet, um die Befehle vom Terminal zu empfangen.

Auf bekannte Befehle kann die Karte mit einer gespeicherten Antwort reagieren; unbekannte Befehle werden protokolliert. Nach Entfernen der Karte aus dem Terminal und Auslesen der "neuen" Befehle auf dem PC können diese Befehle an die echte Karte geschickt werden, um die korrekten Antworten zu erhalten. Diese Antworten werden auf der Logger-Karte abgelegt und die Karte erneut im Terminal benutzt.

Dieser Vorgang wird solange wiederholt, bis die gesamte Kommunikation einer Transaktion erfasst ist.

Dieser Vorgang würde nur bedingt funktionieren, wenn die Kommunikation ein Challenge-Response-Verfahren beinhalten oder die Kommunikation verschlüsselt stattfinden würde. Zum Glück ist beides bei der Postcard nicht der Fall.