U vraagt waarom het kaartnummer en de veiligheidscode op de kaart zijn gedrukt. Laten we in beide gevallen een stukje geschiedenis doornemen:
Het kaartnummer
Het kaartnummer (in de branche PAN genoemd) is slechts een identificatiecode, het heeft geen reden om geheim te zijn. Het is nodig voor elke transactie, zodat een bedrag kan worden… teruggestort op de betreffende rekening, of:
- bij een fysiek verkooppunt (POS), met de oude “imprinter”-methode (ik weet niet of die nog ergens in gebruik is). Daarom wordt het nummer in reliëf gedrukt en niet alleen afgedrukt (samen met de andere gegevens die nodig zijn voor de transactie: vervaldatum, naam van de kaarthouder).
op een verkooppunt, met een POS-terminal (“kredietkaartmachine”), die ofwel de magneetstrip ofwel de chip van de kaart leest, die beide het PAN en de rest van de gegevens verstrekken zonder enige authentificatie of encryptie.
per telefoon of papier (wat in de branche “MOTO” wordt genoemd: postorder / telefonische bestelling), waarbij de gegevens gewoon over de telefoon worden gelezen of op de bestelbon worden geschreven.
op het internet, waar je het nummer van je kaart moet aflezen en in een formulier moet invullen. Hoe kun je iets bestellen als je het kaartnummer niet kunt lezen?
Het PAN is nooit als een geheim beschouwd. Het is gewoon een rekeningnummer, precies zoals je rekeningnummer op papieren cheques staat, om te weten van welke rekening het geld moet worden afgeschreven.
Sommige mensen denken dat de sleutel (het laatste cijfer) een (slechte) beveiliging is, terwijl het eigenlijk alleen wordt gebruikt om te beschermen tegen invoerfouten (cijfer veranderd, cijfers verwisseld…).
Tegenwoordig beginnen mensen te denken dat een PAN geheim moet zijn, en dat heeft geleid tot de introductie van “tokenisatie”: in plaats van het eigenlijke kaartnummer wordt een ander kaartnummer verzonden, dat ofwel beperkt is tot een specifiek kanaal (en mogelijk apparaat), of zelfs tot een enkele transactie.
Dit is bijvoorbeeld het geval voor Apple Pay: wanneer je je kaart registreert met de echte PAN, stuurt de bank een token (“valse” PAN) terug dat in plaats daarvan wordt gebruikt, en alleen kan worden gebruikt voor betalingen met Apple Pay op dat apparaat. Als iemand dat PAN onderschept, kan hij er niets mee doen: het wordt niet aanvaard om een kaart aan Apple Pay toe te voegen, wordt niet aanvaard in de winkel, online, via de telefoon, of waar dan ook.
Is dat echt nuttig? In een perfecte wereld waar alle transacties op een andere manier worden geauthenticeerd, zou het eigenlijk niet uit moeten maken, een PAN op zichzelf zou nutteloos moeten zijn. In de praktijk zijn er kanalen die het gebruik van behoorlijk onveilige authenticatiemethodes toestaan, dus dat is een extra verdedigingslinie.
Merk op dat de noodzaak van tokenisatie waarschijnlijk iets belangrijker is geworden met de invoering van contactloos: je kunt het PAN van elke contactloze kaart lezen zonder hem zelfs maar aan te raken, het is gewoon een kwestie van dichtbij genoeg komen.
De veiligheidscode
De veiligheidscode die op de achterkant van de kaart (of op de voorkant, voor American Express-kaarten) is gedrukt, was oorspronkelijk niet aanwezig. Hij werd toegevoegd om de volgende fraudescenario’s te vermijden:
een creditcardbon met het volledige kaartnummer (en naam en vervaldatum) werd weggegooid en door iemand anders opgehaald (dit was vooral het geval toen er imprinters in gebruik waren, maar was ook het geval voordat de kaartnetwerken uiteindelijk besloten dat het verboden was om het volledige PAN op de klantenbon af te drukken).
een kaart wordt “geswiped” om de inhoud van de magneetstrip vast te leggen, die het PAN, de vervaldatum, de naam van de kaarthouder, en meer bevat…). Zo konden mensen die fysiek toegang hadden tot kaarten (obers, caissières…) vrij snel grote aantallen kaarten registreren zonder dat ze werden opgemerkt.
Om dit tegen te gaan, werd deze nieuwe code toegevoegd, die niet op de kassabon staat (omdat hij niet in reliëf is), en ook niet op de magneetbaan.
Deze code is alleen nodig voor MOTO- en online-aankopen, waarbij je niet kunt zien of de gebruiker de kaart daadwerkelijk heeft (een zogenaamde “card not present”-transactie), en je wat zekerder wilt zijn dat de gebruiker de kaart heeft.
Dit is inderdaad vrij eenvoudig te omzeilen: je hoeft alleen maar een volledige kopie van de kaart te maken (beide zijden) of een aantekening te maken van alle gegevens. Maar in veel van de bovenstaande scenario’s maakte dat het voor een oneerlijke gebruiker net iets moeilijker om het ongemerkt te doen.
(De invoering van handterminals helpt ook een stuk, aangezien een gebruiker zijn ogen – en handen – te allen tijde op de kaart kan houden, maar vooral in restaurants in de VS is dat nog niet standaard gebruikelijk).
De veiligheidscode helpt ook als een site je creditcardgegevens opslaat en iemand erin slaagt er toegang toe te krijgen: in theorie mag niemand de veiligheidscode opslaan, zodat een hacker alleen het PAN en de vervaldatum zou krijgen en de kaart niet opnieuw zou kunnen gebruiken, maar in de praktijk slaan nog veel te veel mensen de veiligheidscode op. De industrie is daar achteraan (het is een van de aspecten van het PCI DSS-initiatief), maar er is nog een lange weg te gaan.
De echte bescherming komt van nieuwe authenticatiemaatregelen (3D Secure) die een andere wijze van verificatie mogelijk maken dan alleen die gegevens. Afhankelijk van de bank (of zelfs de kaart), kan het gaan om:
- een wachtwoord
- een eenmalig wachtwoord (OTP) dat via SMS of op een andere manier wordt verstuurd
- biometrische verificatie (vingerafdruk, gezichtsherkenning, irisscan…)
- daadwerkelijk praten met de chip op de kaart door gebruik te maken van de kaartlezer die op je computer is aangesloten (ik weet niet zeker of dit al ergens is toegepast) …
Merk op dat de beveiligingscode alleen wordt gebruikt voor online/MOTO-transacties (“card not present” transacties). Card present transacties zullen ofwel gebruiken:
- een andere veiligheidscode die op de magneetstrip staat (maar die gemakkelijk te kopiëren is)
- communicatie met de chip (op kaarten die er een hebben), zodat de kaart zichzelf authentiseert.