Viime aikoihin asti luottokorttitietojen lukeminen oli yhtä helppoa kuin kortin pyyhkäiseminen lukijan läpi (kuten yksi ID TECHin monista lukijoista) ja virtuaalisen päätelaitteen sovelluksen (tai muiden sovellusten) käyttäminen ratatiedon keräämiseen, kun se tulee suoraan lukijasta ulos. Kyseiset tiedot näkyisivät yksinkertaisesti näppäinpainalluksina näytöllä, salaamattomina.
Sellaista se oli aikoinaan!
Tulee sanoa, että asiat ovat muuttuneet. Nykyään magneettijuovalukijat antavat yleensä salattua dataa USB:n kautta (usein HID-tilassa, ei näppäimistötilassa), ja useimmat kortinlukijat joutuvat nykyään käsittelemään sirukortteja magneettijuovakorttien lisäksi. Sirukorttien tiedot ovat TLV-muodossa (tags, length, values), ja ne voivat näyttää aivan erilaisilta kuin menneiden vuosien ”tavalliset magneettijuovakorttien tiedot”. Lisäksi ne ovat poikkeuksetta salattuja.
Viime viesteissä näytin, miten luottokorttitiedot puretaan käyttämällä alan standardien mukaisia TDES- ja AES-purkualgoritmeja yhdessä alan standardien (ANSI X9.24) mukaisten DUKPT-avainten derivointitekniikoiden kanssa, mutta emme puhuneet siitä, miten magneettijuovakorttidatan purkaminen onnistuu alun perin. Miltä ”luottokortin magneettinauhatiedot” näyttävät nyt? Miten ne voidaan hankkia ja purkaa? Mistä tiedät, mitkä osat ovat salattuja?
Vastaus ensimmäiseen kysymykseen (miltä magneettijuovakorttitiedot näyttävät?) vaihtelee paljon riippuen paitsi käyttämäsi kortinlukulaitteen merkistä ja mallista myös siitä, onko kyseinen maksutapahtuma tehty magneettijuovakorttipyyhkäisyllä (magneettijuovakorttipyyhkäisy), dippikorttipyyhkäisyllä (kosketinkortti-EMV-järjestelmä) vai kosketinkorttipyyhkäisy-/NFC-interaktiolla. Yleisesti ottaen teet paljon muutakin kuin luet pelkkiä raakatietoja. Hankit myös KSN:n (Key Serial Number), jota tarvitaan salauksen purkamiseen, ja keräät erilaisia tapahtumaan liittyviä metatietoja. On totta, että saatat olla kiinnostunut vain (vaikkapa) raa’an Track 2 -datan hankkimisesta, mutta sitä hankkiessasi joudut käsittelemään paljon muutakin dataa.
Katsotaanpa nopeasti reaalimaailman esimerkki, jossa käytetään Starbucksin lahjakorttia, jonka syyllisyydentunnoltaan kärsinyt baarimestari antoi minulle hyvitykseksi sen jälkeen, kun Mesopotamian Kumquat-Absinthe Latte oli yllättäen loppunut. Jos pyyhkäisemme Starbucksin kortin ID TECHin Augusta-kortinlukijan läpi, joka toimii näppäimistötilassa, kun Notepad-ikkuna on auki (ja kursori on teksti-ikkunassa), saamme Notepadissa seuraavat tiedot:
02ED01801F4C2800839B%*6010********8765^0254/SERVICERECOVERYUSD^*******************************?*;6010********8765=********************?*95025C86987E4F7DD07D58730EB79FDFB90AB7F23E6ECA6F4F04A67BF511EE13F950903BDE77624680C460E9C36C4F9136256BB93A38CB98F95626DCFAF9335CE0A213074CC1CD84CC911398E06756C464AB036B694228ADA7EC018F495A013AF8A04C976288FE2F80271E6E53D987DE19ACA2707BFF2C78000000000000000000000000000000000000000000000000000000000000000000000000000000003631335435333536313862994900750002A00308108E03
Tämä on paljon muutakin kuin ”raakaa ratatietoa”. Voit tunnistaa naamioidut ratatiedot (jotka alkavat B%:lla ja sisältävät monia tähtiä, jotka päättyvät lopulta ?*:aan), mutta ne peittävät ensisijaisen tilinumeron (Primary Account Number, PAN), joka on itse asiassa salattu. Suurin osa siitä, mitä näet tässä, on lukijasta tulevan binääridatan heksadesimaalinen esitys.
Tämän ison kokonaisuuden tulkitseminen on helppoa, jos osaat. Nopein tapa purkaa se on ajaa tiedot ID TECHin ilmaisen Parsomatic-työkalun läpi, joka on HTML-lomake, joka voi esittää kaikki datan palaset ymmärrettävästi.
Jokainen kortinlukija käyttää omaa omaa tapaansa esittää korttitiedot. ID TECH esittää magstripe-tiedot muodossa, joka tunnetaan nimellä Enhanced Encrypted MSR format. Formaatti sisältää 26 tietokenttää; kaikki 26 kenttää on kuvattu yksityiskohtaisesti asiakirjassa P/N 80000502-001, ID TECH Encrypted Data Output.
Jotta saisit käsityksen siitä, mitä kortilla on, tarkastellaan viiden ensimmäisen tavun dataa (02 ED 01 80 1F). Parsomaticin mukaan nämä 5 tavua sisältävät seuraavat tiedot:
STX | 02 |
LENGTH | ED 01 |
Kortin koodaus. Type | 80 |
Track Status (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) |
Ensimmäinen tavu (02) on yksinkertaisesti STX, ”aloitus”-tavu. Seuraavat kaksi tavua (ED 01) edustavat koko datan hyötykuorman pituutta heksadesimaalina (little-endian: ED 01 tarkoittaa itse asiassa 0x01ED eli 493 tavua dataa). Kortin koodityyppi on 0x80, mikä tarkoittaa (suomeksi), että lukijamme pitää korttia rahoituskorttina. Track Status (arvo: 0x1F) on tilatavu, joka sisältää kahdeksanbittisiä lipputunnuksia, joiden avulla saat tietää, mitä raitoja magneettijuovassa oli (niitä voi olla enintään kolme) ja mitkä niistä luettiin onnistuneesti. Tässä tapauksessa kaikki kolme fyysistä raitaa luettiin onnistuneesti, mutta tietoja on vain raidoilla 1 ja 2.
Katsotaanpa nopeasti seuraavat viisi tavua. Parsomaticin mukaan nämä tavut ja niiden merkitykset ovat seuraavat:
Rata 1 Pituus | 4C |
Rata 2 Pituus | 28 |
Rata 3 Pituus | 00 |
Tyhjennä/Maskeeraa lähetetyn tiedon tila (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 |
Salattu/Hakki lähetetyn tiedon tila (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 |
Rahoituskortilla, Rata 1 voi olla enintään 79 tavua pitkä; Rata 2 voi olla enintään 40 tavua pitkä; Rata 3 voi olla enintään 107 tavua pitkä. Tässä tapauksessa meillä on 76 tavua (hex 0x4C) tietoa raidalla 1 ja 40 tavua (0x28) tietoa raidalla 2. (Raidalla 3 oli nolla tavua.) Nämä pituudet on tärkeää tietää, ei vain naamioidun raidatiedon analysoimiseksi vaan myös raitojen salattujen versioiden pituuksien määrittämiseksi. Salattu pituus on erilainen kuin varsinainen natiiviraidan pituus, koska raidat on täytettävä lopulliseen pituuteen, joka on 8:n monikerta TDES-salauksessa tai 16:n monikerta AES-salauksessa.
Miten tiedämme, onko data TDES-salattua vai AES-salattua? Tieto on Clear/Mask Data Sent Status -tavun bitissä 4 (kuten yllä näkyy). On myös Encrypted/Hash Data Sent -tilabyytti (kuvattu yllä), joka kertoo, onko mukana salattua raidedataa (ja validointihasheja) ja onko KSN olemassa.
Sitten pääsemme Track 1:n ja Track 2:n maskeerattuun dataan, sen jälkeen näiden salattuihin versioihin, sen jälkeen joihinkin hashedatatietoihin (tässä tapauksessa kaikki nollat) ja joihinkin muihin tietoihin (kuvattu alla). Huomaa, että Parsomatic on muuntanut ASCII-raidat alla olevaan heksadesiminaatioon:
Track1 Data | 25 2A 36 30 31 30 30 2A 2A 2A 2A 2A 2A 2A 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 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 30 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 38 37 36 35 3D 2A 2A 2A 2A 2A 2A 2A 2A 3A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A | ||
Rata1 Salatut tiedot | 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 Tietojen purku | ||
Track2 Salattu data | 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 Tämän datan salauksen purku | ||
Track 1 Hashed | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | Lukijan sarjanumero | 36 31 33 54 35 33 35 36 31 38 |
KSN | 62 99 49 49 00 75 00 02 A0 03 08 | ||
LRC | 10 | 8E | |
ETX | 03 |
Huomaa, että Parsomatic lisää salatun datan viereen linkin ”Decrypt this data” (dekoodaa tämä data) (ks. edellä). Jos napsautat linkkiä, pääset ID TECHin Encrypt/Decrypt Tool -työkaluun, jossa kyseisiä tietoja voidaan tarkastella puretussa muodossa.
Tietojen viimeiset kentät sisältävät lukijan sarjanumeron, avaimen sarjanumeron (KSN), LRC:n, tarkistussumman ja ETX:n (lähetyksen loppu). LRC on yksinkertaisesti tavuarvo, joka edustaa kaikkien hyötykuorman datatavujen XOR-arvoa (eksklusiivinen OR), kun taas tarkistussumma on kaikkien hyötykuorman tavujen yhden tavun aritmeettinen summa (luonnollisesti unohtamatta ylivuotoa). LRC:tä ja tarkistussummaa voidaan käyttää hyötykuorman eheyden tarkistamiseen. (Ne ovat jonkin verran helpompia ja nopeampia laskea kuin varsinainen CRC.)
Johtopäätös
Kuten huomaat, magstripe-tiedoissa on paljon muutakin kuin ”ratatiedot”. Emme ole edes käsitelleet joidenkin tietokenttien merkitystä (ehkä voimme käsitellä sitä tulevassa postauksessa). Emme ole myöskään puhuneet mitään EMV-tiedoista (siihen tarvitaan ehdottomasti toinen viesti). Tämän pitäisi kuitenkin auttaa sinua alkuun, jos yrität purkaa ID TECH -luottokortinlukijasta tulevia tietoja.
Lisätietoja saat (kuten aiemmin sanoin) teknisestä dokumentaatiostamme Enhanced Encrypted MSR -tietomuodosta: ID TECH Encrypted Data Output. TAI klikkaa alla olevaa linkkiä ja ota ensimmäinen askel kohti virtaviivaistettuja maksuja!