Datentransfer über NFC

Welche Daten können aus NFC-fähigen Karten abgelesen werden?

 

+ LIVE DEMO

DI Johannes Zweng

14. Oktober 2014  •  IIR Jahresforum Cashless Payments  •  Wien

Hintergrund (1)

  • seit 11 Jahren
    Softwareentwickler

     
  • technikbegeistert, interessiert an NFC
     
  • neue Karte von meiner Bank bekommen
     
  • NFC Lesegeräte schon im Haus (Handys)
     
  • ohne Vorwissen über EMV und Bankkarten

+

Hintergrund (2)

  • ein paar freie Tage über Weihnachten
     
  • Recherche in öffentlich verfügbaren Dokumenten und Standards
     
  • ..ein bißchen Trial and error
     
  • Ergebnis: App "Bankomatkarten Infos"

=

Medienecho

Warum geht das so einfach?

  • Bankomatzahlung ist "EMV" Transaktion
     
  • EMV ist ein öffentlicher Standard
     
  • Kommunikation bei EMV ist unverschlüsselt
     
  • Keine Authentifizierung gegenüber der Karte notwendig, um mit ihr zu kommunizieren
    (anders als z.B. beim Reisepass)

Wie funktioniert NFC-Zahlung?

  • EMV-Transaktion zur Autorisierung der Abbuchung vom Konto des Kunden
     
  • vom Prinzip her fast genauso wie die "klassische" Kartenzahlung
     
  • Größter Unterschied der Ãœbertragungsweg
    (Funk statt elektrischer Kontakte)

     
  • also ebenfalls: unverschlüsselt, ohne Authentifizierung

statt

(so wie WLAN statt Netzwerkkabel)

Bankomatkarte (1)

  • Konto-/Kundendaten liegen bei der Bank, nicht auf der Karte
     
  • Karte ist nur der Schlüssel
     
  • Karte selbst macht keine "Ãœberweisung"
     
  • Das macht die Bank, nachdem sie einen Auftrag dazu erhalten hat, der mit dem geheimen Schlüssel der Karte autorisiert wurde

=

Bankomatkarte (2)

  • Karte ist ein vollwertiger kleiner Computer
     
  • beinhaltet einen "private key" (einfach eine lange, große, zufällige Zahl)
     
  • weiters allgemeine Transaktionsparameter
     
  • "private key" wird von der Karte NIEMALS nach außen kommuniziert (auch nicht während des Bezahlens)

=

Ablauf in der App

Was kann man auslesen? (1)

  • NICHT den private key!
  • PAN (Personal Account Number)
  • Transaktionszähler
  • Höhe des QUICK Guthabens
  • Anzahl verbleibender PIN Versuche
  • NICHT den PIN Code!
  • Liste der letzten 11 Transaktionen
    • nur Betrag, Zeitstempel, ATC, Cryptogram Information Data 
    • Nicht WO gekauft wurde
  • bei ganz neuen Karten keine Transaktions-Liste mehr!

Rückblick: Alte Bankomatkarte

  • die letzten 30 Transaktionen
  • Inklusive:
    • Betrag / Zeitpunkt
    • Merchant Identifier
    • Terminal Identification

Auf der "alten" Karte (ohne NFC):

"Früher war's schlimmer!"

→  eindeutig zuordbar WANN und
      WO gekauft wurde!

Frei auf der Karte auslesbar,

theoretisch auch für jedes Kassenterminal!

Was kann man auslesen? (2)

  • Metadaten (Währung, Land, Gültigkeits-und Ablaufdatum, ..)
  • Öffentlicher Schlüssel der Karte selbst
  • Öffentlicher Schlüssel des Herausgebers
  • Cardholder Verifcation Method(s)
    (PIN, Unterschrift, etc..)
  • Application Usage Control (Nur Inland, Ausland, etc..)
  • Issuer Action Codes (Details zum Transaktionsverhalten, wann online, etc..)
  • Versionsnummer
  • Anzahl der Nachkommastellen

Denial of Service

  • bewusst 3x falschen PIN an Karte senden → Karte gesperrt
     
  • Transaktionszähler hochzählen

Karte "im Vorbeigehen" unbrauchbar machen:

Denkbare Szenarien 
(aus naheliegenden Gründen nicht getestet):

LIVE  DEMO

Danke!

DI Johannes Zweng

johannes ( at ) zweng.at

14. Oktober 2014  •  IIR Jahresforum Cashless Payments  •  Wien

http://johannes.zweng.at/presentations/IIR2014/