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 Payment-Apps 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 funktioniert (in C# für Windows implementiert). Es wäre fahrlässig, wenn ich Sie nicht auch auf unser Encrypt/Decrypt Tool hinweisen würde, das Sie in Ihrem Browser öffnen können, indem Sie auf diesen Link.

Das Encrypt/Decrypt Tool ist eine leistungsstarke, in sich geschlossene Single-Page-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 (zum Beispiel mit den hervorragenden Entwicklertools von Chrome).

Wie Sie im obigen Screenshot sehen können, zeigt die oberste Schaltfläche des Encrypt/Decrypt Tools ein Dropdown-Menü mit einigen der Möglichkeiten, die das Tool bietet. Eine häufige Anfrage unserer Kunden lautet: „Wie kann ich die Trackdaten entschlüsseln, die von meinem Lesegerät kommen?" (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üsselung verschlüsselt (obwohl ID TECH auch andere Algorithmen unterstützt). Die Entschlüsselung solcher Daten kann etwas knifflig sein – nicht wegen des Entschlüsselungsvorgangs selbst, sondern wegen der Art und Weise, wie Schlüssel generiert und verwendet werden.

In den meisten Kreditkartenszenarien in der Branche verschlüsselt das Lesegerät sensible Kartendaten mit einem Einmalschlüssel, der für die jeweilige Transaktion einzigartig ist. Dies ist das sogenannte DUKPT -Verfahren. Bei DUKPT (Derived Unique Key Per Transaction) wird für jede Transaktion ein neuer Schlüssel abgeleitet, sodass kein Schlüssel zweimal verwendet werden kann (was Replay-Angriffe verhindert). Das Lesegerät startet mit einem eindeutigen 128-Bit-Schlüssel, und jedes Mal, wenn eine Karte gelesen wird, erhöht sich ein Zähler. 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 original Verschlüsselungsschlüssel auf eine Weise ableitet, die einen eindeutigen neuen Schlüssel erzeugt (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 um ein durchaus cleveres symmetrisches Schlüsselverwaltungsverfahren, das jedoch in der Implementierung einige Tücken birgt – weshalb wir diese Arbeit bereits für Sie erledigt haben. (Hinweis: Das in meinem letzten Beitrag erwähnte UDemo-Programm enthält ebenfalls eine Entschlüsselungsfunktion, die die DUKPT-Logik übernimmt, wird jedoch ohne Quellcode geliefert.)

Um verschlüsselte Track-Daten zu entschlüsseln, benötigen Sie den KSN für die Transaktion, einen BDK sowie die verschlüsselten Daten. Im Encrypt/Decrypt Tool wählen Sie dazu „Daten verschlüsseln oder entschlüsseln" wie im obigen Screenshot gezeigt und klicken anschließend auf die kleine Schaltfläche Derive . . . Es öffnet sich ein kleines Dialogfenster, in dem Sie den KSN (zehn Hex-Bytes) sowie einen 16-Byte-Base Derivation Key eingeben – dieser repräsentiert den ursprünglichen Schlüssel, der zur Erzeugung des Initial PIN Encryption Key (IPEK) verwendet wurde, welcher beim ersten Start in den Leser eingespielt wurde. Für Test- und Entwicklungszwecke wird häufig der sogenannte ANSI-Standard-Testschlüssel (mit dem Wert 0123456789ABCDEFFEDCBA9876543210) als BDK verwendet. Dieser Wert ist im Encrypt/Decrypt Tool als Standard-BDK voreingestellt (kann jedoch problemlos überschrieben werden).

Nachdem Sie einen 10-Byte-KSN (als Hex-Bytes, mit oder ohne Leerzeichen) eingegeben haben, können Sie die gewünschte Schlüsselvariante (PIN, Data oder MAC) auswählen und anschließend auf die große Schaltfläche Derive Key klicken. Daraufhin wird ein 16-Byte-Schlüssel berechnet und im Hauptfenster angezeigt. Wenn Sie die Schritte direkt nachvollziehen möchten, geben Sie als KSN den Wert 62 99 49 01 19 00 00 00 00 02 ein (und übernehmen den Standard-BDK), und klicken Sie anschließend auf Derive Key und überprüfen Sie, 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 in der Ausgabe unten zu sehen, beginnen die entschlüsselten Daten mit „%B42" (beachten Sie den Tooltip, der eine ASCII-Darstellung 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ätte die Entschlüsselung nur unlesbare Zeichenfolgen ergeben. (Probieren Sie es aus: Führen Sie dieses Beispiel selbst im Tool aus und ändern Sie ein beliebiges Bit im Schlüssel.)

Dies 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, beginnend hier.

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