最近まで、クレジットカードのデータを読むには、リーダー(ID TECH製の多くのリーダーの1つなど)にカードを通し、仮想端末アプリ(または他のアプリ)に、リーダーから直接出てきたトラックデータを吸い取らせるだけでよかったのですが、それが簡単になりました。 問題のデータは、暗号化されていないキーストロークとして画面に表示されるだけです。
そのような時代でした。 今日、磁気ストライプ リーダーの多くは暗号化されたデータを USB 経由で出力し (多くの場合、キーボード モードではなく HID モード)、磁気ストライプ カードに加え、チップ カードも扱わなければならなくなりました。 チップカードのデータはTLV(tags, length, values)という形式をとっており、数年前の「古いマグストライプデータ」とはかなり異なっているようです。
最近の投稿では、業界標準のTDESおよびAES復号化アルゴリズムと、業界標準(ANSI X9.24)のDUKPTキー導出技術を組み合わせて、クレジットカードデータを復号する方法を紹介しましたが、そもそも、復号化した磁気ストライプデータを入手する方法については触れませんでした。 今、「クレジットカードの磁気ストライプデータ」とはどのようなものなのでしょうか。 どうやって入手し、どうやって復号化するのか? 最初の質問(magstripe データはどのようなものか)に対する答えは、使用しているカード読み取り装置のメーカーとモデルだけでなく、問題の取引が磁気スワイプ、ディップ(接触型 EMV)、または非接触型/NFC の相互作用によって行われたかによって、大きく異なります。 一般に、生のトラックデータを読み取るだけでなく、多くのことを行っています。 また、復号化に必要なKSN(Key Serial Number)を取得し、取引に関連する様々な種類のメタデータを採取しています。 確かに、(例えば)生のトラック 2 データを取得することにしか興味がないかもしれませんが、それを取得する過程で、他の多くのデータも扱わなければなりません。
Mesopotamian Kumquat-Absinthe Latte を突然使い切った後の埋め合わせとして、罪悪感に苦しむバリスタからもらった Starbucks ギフト カードを使って実例を簡単に見てみましょう。 このスターバックスカードを、キーボードモードで動作するID TECHのオーガスタカードリーダーに通し、メモ帳を開いた状態(カーソルはテキストウィンドウにある)で、メモ帳に以下のデータを取得しました:
02ED01801F4C2800839B%*6010********8765^0254/SERVICERECOVERYUSD^*******************************?*;6010********8765=********************?*95025C86987E4F7DD07D58730EB79FDFB90AB7F23E6ECA6F4F04A67BF511EE13F950903BDE77624680C460E9C36C4F9136256BB93A38CB98F95626DCFAF9335CE0A213074CC1CD84CC911398E06756C464AB036B694228ADA7EC018F495A013AF8A04C976288FE2F80271E6E53D987DE19ACA2707BFF2C78000000000000000000000000000000000000000000000000000000000000000000000000000000003631335435333536313862994900750002A00308108E03
これは、”生のトラックデータ “よりはるかに多いものです。 マスクされたトラックデータ(B%で始まり、多くのアスタリスクを含み、最終的に?*で終わる)を認識することができますが、これは実際には暗号化されているプライマリアカウントナンバー(PAN)を隠しているのです。 ここに表示されているのは、リーダーから出力されるバイナリ データを 16 進数で表したものです。
この大きなブロックの解析は、ノウハウさえあれば簡単にできます。 これは、データのすべての部分をわかりやすく表示することができる HTML フォームです。
すべてのカード リーダーは、カード データを表現する独自の方法を持っています。 ID TECHは、拡張暗号化MSRフォーマットと呼ばれるフォーマットでmagstripeデータを表現します。 このフォーマットには26のデータフィールドがあります。26のフィールドすべてについて、ドキュメントP/N 80000502-001, ID TECH Encrypted Data Outputで詳しく説明されています。 Parsomatic によると、この 5 バイトには次の情報が含まれています。
STX | 02 |
LENGTH | ED 01 |
カード エンサイデーズ Type | 80 |
トラックステータス (1F) |
0------- 0 Reserved for future use-0------ 1: Field 10 optional bytes length exists (0: No Field 10)--0----- 1: Track 3 sampling data exists (0: Track 3 sampling data does not exist)---1---- 1: Track 2 sampling data exists (0: Track 2 sampling data does not exist)----1--- 1: Track 1 sampling data exists (0: Track 1 sampling data does not exist)-----1-- 1: Track 3 decode success (0: Track 3 decode fail)------1- 1: Track 2 decode success (0: Track 2 decode fail)-------1 1: Track 1 decode success (0: Track 1 decode fail) |
最初のバイト(02)は単にSTX.です。 スタート」バイトです。 次の 2 バイト(ED 01)は、データ全体のペイロードの長さを 16 進数で表す(リトルエンディアン: ED 01 は実際には 0x01ED または 493 バイトのデータを意味する)。 カードエンコードタイプは0x80であり、これは(英語で)読者がこれを金融カードであるとみなすことを意味する。 トラックステータス(値:0x1F)は8ビットのフラグを含むステータスバイトで、磁気ストライプにどのトラックが存在し(最大3つまで)、どのトラックが正常に読み取られたかを知らせます。 この場合、3つの物理トラックはすべて正常に読み取られましたが、データはトラック1と2にしか存在しません。
では、次の5バイトを見てみましょう。 Parsomaticによると、これらのバイトとその意味は次のとおりです。
Track 1 Length | 4C |
Track 2 Length | 28 |
Track 3 Length | 00 |
Clear/Mask Data Sent Status (83) |
1------- Bit 7: 1 Serial Number present; 0 not present-0------ Bit 6: 1 PIN Encryption Key; 0 Data Encryption Key--0----- Bit 5: 1 Chip present on card. (First byte of service code was '2' or '6'.) Use EMV transaction if possible.---0---- Bit 4: 0 TDES; 1 AES----0--- Bit 3: 1 if fixed key; 0 DUKPT Key Management-----0-- Bit 2: 1 if Track3 clear/mask data present------1- Bit 1: 1 if Track2 clear/mask data present-------1 Bit 0: 1 if Track1 clear/mask data present |
Encrypted/Hash Data Sent Status (9B) |
1------- Bit 7: if 1, KSN present-0------ Bit 6: if 1, session ID present --0----- Bit 5: if 1, track3 hash data (SHA digest) present---1---- Bit 4: if 1, track2 hash data (SHA digest) present----1--- Bit 3: if 1, track1 hash data (SHA digest) present-----0-- Bit 2: if 1, track3 encrypted data present------1- Bit 1: if 1, track2 encrypted data present-------1 Bit 0: if 1, track1 encrypted data present |
金融カードにおいて、以下のようになる可能性があります。 トラック1の長さは最大79バイトです。 トラック2は最大40バイト、トラック3は最大107バイトです。 この場合、トラック1のデータは76バイト(16進数0x4C)、トラック2のデータは40バイト(0x28)となっています。 (これらの長さは、マスクされたトラックデータを解析するためだけでなく、暗号化されたバージョンのトラックの長さを決定するためにも知っておくことが重要である。 暗号化された長さは、実際のネイティブのトラック長とは異なります。トラック データは、TDES 暗号化では 8 の倍数、AES では 16 の倍数の最終長さになるようにパディングされなければならないからです。 その情報は、Clear/Mask Data Sent Status バイトのビット 4 にあります(上図参照)。 暗号化されたトラックデータ(および検証用ハッシュ)が存在するかどうか、また KSN が存在するかどうかを知るための Encrypted/Hash Data Sent Status バイト(上図)もあります。
さて、トラック 1 とトラック 2 のマスクデータ、それらの暗号化バージョン、ハッシュデータ(この場合、すべてゼロ)、その他のデータ(以下で説明)にたどり着きました。 Parsomatic は、ASCII のトラック データを以下のように 16 進表現に変換しています。
Track1 Data | 25 2A 36 30 31 30 2A 2A 2A 2A 38 37 36 35 5E 30 32 35 34 2F 53 45 52 56 49 43 45 52 45 43 4F 56 45 52 59 55 53 44 5E 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A |
Track2 Data | 3B 36 30 31 30 2A 2A 2A 2A 38 37 36 35 3D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A |
Track1 暗号化データ | 95 02 5C 86 98 7E 4F 7D D0 7D 58 73 0E B7 9F DF B9 0A B7 F2 3E 6E CA 6F 4F 04 A6 7B F5 11 EE 13 F9 50 90 3B DE 77 62 46 80 C4 60 E9 C3 6C 4F 91 36 25 6B B9 3A 38 CB 98 F9 56 26 DC FA F9 33 5C E0 A2 13 07 4C C1 CD 84 CC 91 13 98 E0 67 56 C4 このデータの解読 |
Track2 暗号化データ | 64 AB 03 6B 69 42 28 AD A7 EC 01 8F 49 5A 01 3A F8 A0 4C 97 62 88 FE 2F 80 27 1E 6E 53 D9 87 DE 19 AC A2 70 7B FF 2C 78 このデータ |
トラック1 解読 ハッシュド | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
トラック2 ハッシュド | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
リーダーシリアル番号 | 36 31 33 54 35 33 35 36 31 38 |
KSN | 62 99 49 00 75 00 02 A0 03 08 |
LRC | 10 |
Checksum | 8E |
ETX | 03 |
Parsomatic が、暗号化データの横に “Decrypt this data” というリンクを挿入することに注意してください(上述)。 このリンクをクリックすると、ID TECH の暗号化/復号化ツールが表示され、問題のデータを復号化して表示することができます。
データの最後のフィールドには、リーダー シリアル番号、キー シリアル番号 (KSN)、LRC、チェックサム、および ETX (End of transmission) があります。 LRCはペイロードデータの全バイトのXOR(排他的論理和)を表すバイト値で、チェックサムはペイロードの全バイトの1バイト算術和(オーバーフローは当然無視)である。 LRC とチェックサムは、ペイロードのデータの完全性を確認するために使用される。 (これらは適切な CRC よりもいくらか簡単ですばやく計算できます。)
Conclusion
お分かりのように、magstripe データには「トラックデータ」以外にも多くのものがあります。 いくつかのデータフィールドの重要性についてはまだ触れていません(今後の記事で触れるかもしれません)。 また、EMVデータについても触れていません(これは間違いなく別の記事で取り上げることになるでしょう)。 しかし、ID TECH クレジットカード リーダーから出力されるデータをデコードしようとする場合は、これで始めることができます。
詳細については、先に述べたように、Enhanced Encrypted MSR データ形式に関する当社の技術資料を参照してください。 ID TECH暗号化データ出力。 または、以下のリンクをクリックして、決済の合理化に向けて第一歩を踏み出しましょう!
。