söndag 14 februari 2010

Hacket mot chipkort

Som ni säkert såg på Rapport och har läst på nätet så har forskare vid University of Cambridge, däribland Ross Anderson, hittat ett sätt att betala med chipförsedda bankkort utan den rätta PIN-koden. Deras artikel kommer presenteras vid världens finaste konferens inom säkerhetsforskning -- IEEE Security & Privacy -- i maj. Den finns i draft-version här (pdf).

Hacket i ett nötskal
Forskarna noterade att behörighetssvaret till banken inte innehåller information om hur behörighetskontrollen ägt rum. Dvs banken får inte reda på om du matat in din PIN, skrivit under kvittot eller känner butiksägaren. Banken får bara beskedet "Behörigheten OK".

Så hur lurar man kortläsaren? Jo, genom att sätta i ett preparerat kort som godkänner vilken PIN-kod som helst och säger till det stulna kortet att köpet ska ske med underskrift istället för PIN. Alla andra steg i betalningen genomförs med det stulna kortet direkt.

Figur 1: Forskarnas testmiljö

Hacket i lite mer tekniska termer
Betalning med chipkort sker i tre steg:
  1. Kortkontroll -- talar om vilken bank som har gett ut kortet och att det är i omanipulerat skick. Sker mha elektronisk signatur.
  2. Behörighetskontroll -- ser till att personen har rätt att använda kortet, typiskt med PIN-kod. Sker utan elektronisk signatur.
  3. Betalningskontroll -- ger besked om banken godkänner transaktionen eller inte. Sker mha eletronisk signatur på transaktionsdatat.
Bedragaren låter steg 1 och 3 gå till det stulna kortet men steg 2 till hans/hennes preparerade kort. Behörighetskontrollen (steg 2) inleds typiskt med att kortet anger vilka sätt personen som ska betala kan kontrolleras:
  1. Kontroll mha PIN-kod
  2. Kontroll med underskrift
  3. Ingen kontroll
Kortläsaren (eller butiksbiträdet) väljer ett av dessa. Alternativen är nödvändiga. Betalautomater kan exempelvis inte kontrollera underskrifter och vissa automater saknar knappsats att mata in sin PIN-kod på.

Om kortläsaren väljer PIN-kod så får personen mata in en kod som skickas till kortet för kontroll. Kortet svarar med Terminal Verification Results (TVR), 0x9000 om koden var rätt och 0x63Cn om den var fel, där n är antalet återstående försök. Notera att TVR vid godkänd PIN-kod varken anger vilket kontrollsätt som användes eller autentiserar svaret med en elektronisk signatur. Summa: Kortläsaren vet varken vad kortet svarar på eller att det är rätt kort som svarar!

Bankerna har ytterligare ett sätt att kommunicera betalningsinformation -- Issuer Application Data (IAD). Där kan man ange att PIN-kod användes men tyvärr är IAD-formatet olika för olika banker och inte del av specifikationen för kortbetalningar, EMV (Europay MasterCard Visa). Det är alltså inte en lösning på problemet.

Fungerar hacket i praktiken?
För att bedragarna ska lyckas handla i vanliga butiker behöver nån bygga ihop de tre enheterna till vänster i bilden ovan. En sån allt-i-ett-enhet kan säkerligen göras liten nog för innerfickan. Då är vi i situationen att folk kan stjäla våra bankkort och handla med dem direkt. Mycket allvarligt!

Kan bankerna fixa problemet snabbt?
Är det här något som bankerna kan fixa snabbt? Nej, antagligen inte. Det är specifikationen för kommunikationen mellan kundens kort, kortläsaren och banken som är felaktig. En ny specifikation måste tas fram och alla kortläsare måste justeras. Om kortläsarna tillåter att man uppdaterar hur kommunikationen med kort och bank ska ske så kan justeringen göras utan att byta ut dem. Annars står vi inför ett mycket dyrt och omständligt byte av alla läsare i våra butiker.

Hur kunde det gå så här?
Kanske den viktigaste frågan -- hur kunde bankerna och kortbolagen göra den här missen?

Fel nummer ett var den slutna processen. Tyvärr är det är samma historia som i fallet med det undermåliga dörrlåset Assa 2000 Evo. Man håller sin konstruktion hemlig för att man tror att det ska öka säkerheten. EMV-standarden togs fram i slutna rum utan extern granskning. Därför missade man chansen att låta världens säkerhetsforskare skärskåda lösningen innan den togs i drift.

Fel nummer två var komplexiteten. Den tekniska grundspecifikationen för EMV är på över 700 sidor, omkringliggande specifikationer på över 2000 sidor och sen tillkommer respektive banks dokumentation på styva 1000 sidor. Att ens tro att implementationen av något sådant ska bli säker motsäger en av grundprinciperna: Keep It Simple!

2 kommentarer:

Per sa...

Kan man inte tänka sig en tillfällig lösning (tills man har ordentliga signaturer hela vägen) med att kassören får dra kortet. I detta fallet så måste ju man ha dels trådlös kommunikation dels kort som ser väldigt realistiska ut. Ett annat alternativ vore att gå tillbaka till magnetremsan.
En fråga dock: Var finns pin koden sparad? Enligt detta borde den ju finnas i chipet men för att magnetremsan ska kunna funka och man kan byta kort utan att byta kod så borde den finnas i bankens dator system.
För övrigt tycker jag inte att man ska fråga efter lösen ord till google på en blogg även om blogger är en del av google.

John Wilander sa...

Hej Per!

Jag tänkte också på att kassören kan försöka kontrollera om det är ett kort med en sladd. Men idén med säkra betalningar är ju bland annat att kunden inte ska behöva lämna ifrån sig kortet.

Det manipulerade kortet som forskarna använt ser helt normalt ut förutom sladden så vitt jag förstår.

PIN-koden finns skyddad i chipet men inte på magnetremsan, precis som du säger.

Gällande lösenord så har jag inte ens funderat på det. Det är nog en grundinställning på Blogspot bara. Jag ska kolla om jag kan ta bort det eftersom jag håller med om att man bör kunna kommentera anonymt.