ID TECH
Kontakt
Alle technischen Beiträge

Technischer Beitrag

Tools zur Integration von Zahlungsgeräten: Encrypt/Decrypt Tool

ID TECH stellt eine Reihe hervorragender kostenloser Hilfsprogramme für alle zur Verfügung, die Zahlungsanwendungen mit unseren Produkten entwickeln. In früheren Beiträgen habe ich über Parsomatic, unseren kostenlosen Daten-Parser (als Webformular implementiert), und UDemo gesprochen – die universelle SDK-Test-App, die mit allen unseren aktuellen Produkten kompatibel ist (in C# für Windows implementiert). Es wäre fahrlässig, Sie nicht auch auf unser Encrypt/Decrypt Tool hinzuweisen, das Sie in Ihrem Browser laden können, indem Sie auf diesen Link.

Das Encrypt/Decrypt Tool ist eine leistungsstarke, eigenständige Einzelseiten-HTML-App mit einer nativen JavaScript-Implementierung von AES-Verschlüsselung, Triple DES, DUKPT-Schlüsselableitung, SHA-Hashing, HMAC und vielem mehr. Die gesamte Logik ist auf einer einzigen Seite enthalten (es gibt keine serverseitigen Komponenten), was bedeutet, dass Sie die HTML-Datei herunterladen und die Logik direkt in Ihrem Browser einsehen können (z. B. mit den hervorragenden Entwicklertools von Chrome).

Wie auf dem Screenshot oben zu sehen ist, öffnet die oberste Schaltfläche des Encrypt/Decrypt Tools ein Dropdown-Menü, das einige der verfügbaren Funktionen anzeigt. Eine häufige Anfrage von Kunden lautet: „Wie kann ich die Trackdaten meines Lesegeräts entschlüsseln?" (gemeint sind Kreditkarten-Trackinformationen, die in MagStripe-Daten vorkommen oder Teil eines EMV-Tags sein können). Solche Daten werden in der Regel entweder mit AES oder mit Triple DES verschlüsselt (obwohl ID TECH auch weitere Algorithmen unterstützt). Die Entschlüsselung kann etwas knifflig sein – nicht wegen des eigentlichen Entschlüsselungsvorgangs, sondern aufgrund der Art und Weise, wie Schlüssel erzeugt und verwendet werden.

In den meisten Kreditkartenszenarien in der Branche verschlüsselt das Lesegerät sensible Kartendaten mit einem Einmalschlüssel, der für jede Transaktion eindeutig ist. Dies ist das sogenannte DUKPT -Verfahren. Bei DUKPT (Derived Unique Key Per Transaction) wird ein neuer Schlüssel wird für jede Transaktion neu abgeleitet, sodass kein Schlüssel zweimal verwendet werden kann (wodurch Replay-Angriffe verhindert werden). Der Leser beginnt mit einem eindeutigen 128-Bit-Schlüssel, und bei jedem Kartenlesvorgang wird ein Zähler erhöht. Dieser Zähler ist in einem Wert enthalten, der als Key Serial Number (KSN) bezeichnet wird. Zu beachten ist, dass die KSN selbst öffentlich ist. (Sie wird in einem realen Entschlüsselungsszenario zusammen mit den verschlüsselten Daten an die entschlüsselnde Partei übermittelt.) Zum Zeitpunkt der Transaktion wird die KSN mithilfe eines speziellen Algorithmus mit dem ursprünglichen Verschlüsselungsschlüssel des Lesers so kombiniert, dass ein eindeutiger neuer Schlüssel abgeleitet wird (unter Verwendung von Einweg-Hashes, sodass ein gestohlener Schlüssel nicht zur Berechnung anderer Schlüssel verwendet werden kann). Der zugrunde liegende Algorithmus ist in ANSI X.9-24 definiert. Es handelt sich dabei um ein recht cleveres symmetrisches Schlüsselverwaltungsverfahren, das jedoch in der Implementierung etwas anspruchsvoll ist. Genau deshalb haben wir das für Sie übernommen. (Hinweis: Das in meinem letzten Beitrag erwähnte UDemo-Programm enthält ebenfalls eine Entschlüsselungsfunktion, die die DUKPT-Logik ausführt, wird jedoch ohne Quellcode geliefert.)

Um verschlüsselte Track-Daten zu entschlüsseln, benötigen Sie die KSN der Transaktion, einen BDK sowie die verschlüsselten Daten. Mit dem Encrypt/Decrypt Tool wählen Sie „Encrypt or decrypt data" wie im obigen Screenshot dargestellt und klicken anschließend auf die kleine Schaltfläche Derive . . . die daraufhin erscheint. Es öffnet sich ein kleines Dialogfenster, in dem Sie die KSN (zehn Hex-Bytes) sowie einen 16-Byte Base Derivation Key eingeben (dieser repräsentiert den ursprünglichen Schlüssel, der zur Erstellung des Initial PIN Encryption Key (IPEK) verwendet wurde, welcher beim ersten Einsatz in den Leser eingeschleust wurde). Für Test- und Entwicklungszwecke verwenden die meisten Anwender den sogenannten ANSI-Standard-Testschlüssel (mit dem Wert 0123456789ABCDEFFEDCBA9876543210) als BDK. Dieser Wert ist der voreingestellte BDK-Wert im Encrypt/Decrypt Tool (kann jedoch problemlos überschrieben werden).

Nach der Eingabe einer 10-Byte-KSN (als Hex-Bytes, mit oder ohne Leerzeichen) können Sie die gewünschte Schlüsselvariante auswählen (PIN, Data oder MAC) und anschließend auf die große Schaltfläche Derive Key Schaltfläche. Ein 16-Byte-Schlüssel wird berechnet (und auf dem Hauptbildschirm angezeigt). Wenn Sie dies zu Hause nachvollziehen möchten, können Sie einen KSN von 62 99 49 01 19 00 00 00 00 02 eingeben (und den Standard-BDK übernehmen) und dann auf Derive Key klicken und überprüfen, ob Sie einen abgeleiteten Datenschlüsselwert von 1A994C3E09D9ACEF3EA9BD4381EFA334 erhalten haben.

Mit dem so erhaltenen Schlüssel lässt sich ein roher Datenblock entschlüsseln:

DA 7F 2A 52 BD 3F 6D D8 B9 6C 50 FC 39 C7 E6 AF 22 F0 6E D1 F0 33 BE 0F B2 3D 6B D3 3D C5 A1 F8 08 51 2F 7A E1 8D 47 A6 0C C3 F4 55 9B 1B 09 35 63 BE 7E 07 45 90 72 AB F8 FA AB 53 38 C6 CC 88 15 FF 87 79 7A E3 A7 BE

Wie unten unter „Ausgabe" dargestellt, beginnen die entschlüsselten Daten mit „%B42" (beachten Sie den Tooltip, der eine ASCII-Ausgabe der entschlüsselten Daten enthält) und enthalten die Kartendaten eines Herrn George W. Bush, Jr.:

Wenn auch nur ein einziges Bit des Schlüssels falsch gewesen wäre, hätten wir bei der Entschlüsselung unlesbaren Datenmüll erhalten. (Probieren Sie es aus: Führen Sie dieses Beispiel selbst im Tool aus und ändern Sie zufällig ein Bit im Schlüssel.)

Das ist nur ein kleiner Einblick in die Möglichkeiten des Encrypt/Decrypt-Tools. Weitere Details zur Funktionsweise von DUKPT (und zur Entschlüsselung von Kreditkartendaten) finden Sie in meinem früheren zweiteiligen Beitrag zu diesem Thema, der hier beginnt.

Haben Sie Fragen zur Schlüsselinjektion? Zur Verschlüsselung? Zu MSR oder EMV? Wenden Sie sich an unsere Experten. Sie erreichen uns jederzeit unter 1-800-984-1010.