De perfecte misdaad

Vandaag is er veel te doen over de hack die beschreven staat op www.ov-chipkaart.org. Wat nog even ontbreekt, is de methode om echt ondetecteerbaar gratis te reizen: de perfecte misdaad.

Wat me in de discussie over de OV-chipkaart telkens opvalt is, dat iedereen maar meent dat je kaarten moet “klonen”, dat je een “hoog bedrag op de kaart moet zetten” en meer van dat soort zaken. Zoals NRC Handelsblad  al ruim een jaar geleden liet zien, hoeft dat helemaal niet. Je kunt ook zónder apparatuur plezierig gebruik maken van de voordelen van de OV-chipkaart. Net zoals je vroeger overigens met een strippenkaart binnen het uur heen en terug kon reizen — iets waar de OV-bedrijven nu opeens van beweren dat het “oneigenlijk gebruik” van de strippenkaart was en dat dat tarief dus niet meetelt bij de tariefbepaling van de OV-chipkaart.

De aanhangers van de kopieer-je-chipkaart-theorie menen, dat je een kaart met een hoog bedrag erop zou moeten leegreizen, waarna je datzelfde hoge bedrag er weer op zet. Dat is leuke theorie, maar iedereen kan begrijpen, dat die truc door Trans Link Systems eenvoudig te detecteren valt. Een kaart waar eenmaal twintig euro op staat, kan niet drie keer opnieuw aangeboden worden voor een treinreis van vijftien euro. Als dat wel gebeurt, is er iets mis. Of TLS die detectie ook daadwerkelijk toepast, weet ik niet, maar dat doet in deze niet echt ter zake. Het punt is: het kopiëren van kaarten is strafbaar; de kopie is detecteerbaar; je loopt, al met al, een behoorlijk risico.

Hoe moet het dan wel? Ik leg het u uit. Ondetecteerbaar gratis reizen in de trein gaat als volgt.

Benodigdheden:

  1. Een OV-chipkaart met voldoende saldo en een reizen op saldo NS-product.
  2. Een computer met een OV-chip-lezer/schrijver.
  3. Elke treinreis opnieuw: vier minuten van je kostbare tijd.

Je handelt als volgt:

  1. Check in op je vertrekstation.
  2. Lees de data van de kaart en kopieer deze naar de computer. Dit is de kaart in ingecheckte toestand.
  3. Koop een krant en een kopje koffie, drentel wat rond — als het maar niet opvalt dat u zinloos 4 minuten staat te wachten! 😉
  4. Check uit op je vertrekstation. Omdat de NS heeft bedacht dat je oma mag uitzwaaien op het perron, is dat (mits binnen 30 minuten gedaan) gratis.
  5. Lees ook deze data van de kaart en kopieer deze naar de computer. Dit is de kaart in uitgecheckte toestand.
  6. Wanneer je de data van punt 2 terugkopieert naar de kaart, maak je je schuldig aan een misdrijf. De kaart lijkt, na dit misdrijf, in ingecheckte toestand – terwijl jij, ik en TLS weten, dat de kaart zojuist nog uitgecheckt werd.
  7. Een conducteur die onderweg de kaart controleert, zal op zijn kaartcontrolehandcomputer (3 x woordwaarde) zien, dat je bent ingecheckt. Omdat die kaartcontrolehandcomputers onderweg niet communiceren met TLS (en dat is ook nauwelijks realiseerbaar), weet de conducteur niet, dat de kaart later werd uitgecheckt. En TLS weet op zijn beurt niet, dat je met een fake ingecheckte kaart reist.
  8. Aan het eind van de reis plaats je de data van punt 5 terug op je chipkaart: uitgecheckt op vertrekstation.

De chipkaart is nu weer uitgecheckt, precies zoals ook de database van TLS aan het eind van de dag laat zien. Feitelijk kan nu niemand meer zien, dat je een aantal uren met valse data op je OV-chipkaart hebt gereisd.

Update n.a.v. commentaar Pedigree: reizen naar een station met toegangspoortjes (waarvan er overigens veel minder komen) werkt op deze manier niet. Je kunt wel naar buiten, maar de TLS-database heeft aan het eind van de dag een kaart waarmee op twee plekken werd uitgecheckt en je wordt dus toch door een arrestatieteam van je bed gelicht.

11 Replies to “De perfecte misdaad”

  1. Euh… als ze nou ook van die poortjes bij de uitgang hebben staan, hoe kom je dan nog uit het station?

  2. @pedigree
    Achter iemand aanlopen die wel uitcheckt. Gaan die poortjes wel piepen, maar er staat toch geen commando op de uitkijk.

  3. Het is geen probleem als er in de database van TLS blijkt dat er tweemaal is uitgecheckt (zonder tussenliggende checkin).

    Het is ‘normaal gedrag’ dat de database van TLS enkele uren, dagen en soms zelfs weken achterloopt op de werkelijkheid. Gecreeerde transacties gaan vanuit het stationsapparaat via 2 lagen naar TLS backoffice en her-en-der treedt kan altijd vertraging optreden (en dat gebeurt ook). En sommige transacties komen nooit aan (zo’n 1%).

    Overigens worden die gaten deels gerepareerd omdat elke transactie een aantal gegevens van de vorige transactie en de laatste oplaadtransactie bevat. Zo kan TLS, nadat de toegestane aanlevertijd van transacties is verstreken en het gat dus blijvend is, alsnog enigzins opvullen.

    Maar goed, je betaalt wel flink geld als je uitcheckt bij een toegangspoortje terwijl je op de kaart een checkout (ipv checkin) hebt staan.

  4. Het wordt, in dit geval, natuurlijk wel degelijk een probleem: je checkt in, je checkt weer uit, daarna overschrijf je de kaart met oude gegevens en je checkt opnieuw uit: dat is iets waar de TLS-software hoe dan ook alarm over slaat (of in elk geval: zou moeten slaan). Het is immers niet een “zoekgeraakte” transactie, in dit geval is het een aantoonbaar opnieuw uitgevoerde transactie. Het schoolvoorbeeld van een “replay-attack”. Als het goed is, weet TLS daar wel raad mee.

  5. Ook wanneer je de trein weer verlaat op een station zonder uitcheckpoortjes kan er alsnog een probleem optreden: weliswaar kan de conducteur op het moment van controle niet zien dat er iets mis is (je kaart is immers in ingecheckte toestand), maar jouw kaart is wel gelezen in ingecheckte toestand _nadat_ daar al van was uitgecheckt. Als/wanneer de gegevens uit de kaartcontrolecomputer van de conducteur dus ook naar TLS worden gesynchroniseerd dan hang je.

  6. Als de kaartgegevens van de conducteur met TLS worden gesynchroniseerd, heb je gelijk. Maar die handcomputers zijn overal en nergens, hebben soms verbinding en soms niet, en hebben het al druk genoeg met de werkzaamheden van de conducteur zelf. Ik kan me dus niet voorstellen dat de data van de conducteurs ook nog eens ge-upload wordt – teveel vervuiling, teveel trammelant. En er is nog iets: de conducteur ziet geen transactie; er is dus ten hoogste een probleem met het tijdstip waarop een en ander plaatsvindt. Verder is de kaart niet in een onbestaanbare toestand. Dat is ‘ie wel wanneer je 50 euro oplaadt, dan reist, en dan de kaart weer “reset” met 50 euro.
    En nog iets de low-tech methode die NRC Handelsblad beschrijft, werkt ook niet als de conducteur zijn controle zou doorgeven aan TLS: dan reis je immers van, pakweg, Zaandam naar Amsterdam Sloterdijk, terwijl je ter hoogte van Leiden gecontroleerd bent: dat kan ook niet.
    Kortom: theoretisch is het controleerbaar; in de praktijk zal dat niet gebeuren.
    Overigens en terzijde: gefeliciteerd, je bent de eerste met een reactie vanuit een IPv6-adresreeks 🙂

  7. Het beschreven trucje gaat niet werken, de kaartlezers van de conducteur synchroniseren ook met het backoffice van TLS. Iedere kaartlezer gaat in een docking station op het NS HQ. De handkaartlezers hebben ook een blacklist.

    Dit trucje is ook erg omslachtig, je moet van ieder station waar je incheckt de data hebben met de juiste incheck tijden…

    Om in te checken moet:
    – De kaart leesbaar zijn
    – De kaart niet geblokkeerd zijn
    – Er voldoende saldo of een geldig reisproduct aanwezig zijn

    Je kaart is een geldig vervoersbewijs als het aan de volgende eisen voldoet:
    – De kaart mag niet geblokkeerd zijn
    – De kaart moet ingecheckt zijn
    – De incheck tijd moet kloppen, om 20:00 inchecken voor de trein van 9:00 kan niet
    – Je moet van het incheck station AF reizen, dus als je van Eindhoven naar Best reist moet je in Eindhoven ingecheckt zijn, niet in Best.
    – De gegevens op de kaart moeten overeenkomen met de gegevens van de kaarthouder (in geval van een persoonlijke kaart)
    – Kortingsrecht, daluren etc. moet kloppen

  8. Ik ga het binnenkort eens na. De eenvoudigste manier lijkt me namelijk om in te checken met mijn op naam gestelde voordeelurenkaart; vier minuten later weer uit te checken; daarna een papieren kaartje te kopen; en in de trein het papieren kaartje en de voordeelurenkaart te overhandigen. De conducteur meldt me dan: “Hee, u bent ingecheckt, waarom hebt u een kaartje gekocht?” Als antwoord mompel ik iets over een rare melding bij de incheckpaal. De kans dat de chipkaartpolitie me komt arresteren lijkt me nihil, en ik merk vanzelf of mijn chipkaart ongeldig wordt.
    En dat het onhandig en omslachtig is: ja zeker, dat is het.

  9. Punt 6, het misdrijf, geloof ik niet helemaal. Stel ik heb een geldige NS jaartrajectkaart (waarmee je bij de NS nog niet eens op saldo kunt reizen en in/uitchecken bij NS niet kan).
    Als ik dan met een anonieme kaart ga prutsen en in/uitchecken is dat geen misdrijf.

    Vergelijk strippenkaart: als ik een geldig vervoerbewijs heb mag ik toch vliegtuigjes vouwen van eventuele andere vervoersbewijzen? Misschien is het tegen de gebruiksvoorwaarden maar dat maakt het nog geen misdrijf.

  10. Tweede Boek. Misdrijven; Artikel 232
    Hij die opzettelijk een […]waardekaart […] bestemd voor het verrichten of verkrijgen van betalingen of andere prestaties langs geautomatiseerde weg, valselijk opmaakt of vervalst, met het oogmerk zichzelf of een ander te bevoordelen, [wordt gestraft met enz enz]. Als je, zoals ze in Nijmegen doen, een onderzoek doet naar de veiligheid van de Mifare Classic, dan kom je, mits in bezit van een geldig vervoerbewijs, vermoedelijk weg met de mededeling dat je de vervalsing niet hebt gemaakt “om jezelf te bevoordelen”. Maar zonder de expliciete doelstelling van wetenschappelijk onderzoek, vermoed ik dat je gewoon een misdrijf begaat, of je nou over een geldig vervoerbewijs beschikt of niet.
    Terecht trouwens: het kopiëren van bankbiljetten is ook verboden, zelfs al geef je ze niet uit.

Leave a Reply

Your email address will not be published. Required fields are marked *