Hack: Rejsekort-feature tillader check ind trods flere NFC-kort i pungen

Illustration: REDPIXEL.PL/Bigstock
Checker du ind med et rejsekort og et kontaktløst adgangskort i pungen, risikerer du, at standeren melder fejl. En uudnyttet feature i teknologien bag rejsekortet, gør det muligt at checke ind alligevel. Der er tale om et bevidst fravalg, forklarer Rejsekort-direktør.

Måske du også har oplevet, at det er uladsiggørligt at checke ind ved at holde tegnebogen med rejsekortet op til standeren. Det behøver som sådan ikke være fordi, hverken kort eller stander fejler noget. Forklaringen kan være, at der også er eksempelvis et adgangskort i tegnebogen, der anvender den MiFare-teknologi, som også rejsekortet bygger på. Og er det tilfældet, melder standeren fejl.

Det var den private rejsekort-udvikler, Casper Bang, træt af, og han har derfor undersøgt en feature i Mifare-teknologien, som gør det muligt for systemet at håndtere flere kontaktløse kort i radiofeltet. Han har tidligere gjort sig bemærket i rejsekort-sammenhæng ved på eget initiativ at udvikle en app, der gør det muligt at kommunikere med netop Mifare-chippen i Rejsekortet via mobiltelefoner med NFC-chip fra NXP.

Læs også: Kort-hacker indgår officielt samarbejde med Rejsekort A/S

»Dette irriterede mig, fordi jeg (og mange andre) går rundt med andre Mifare-kort som f.eks. medarbejder-/adgangskort i deres pung,« skriver Casper Bang i en mail.

I MiFare er der en feature, som Casper Bang kalder 'anti-collision', og som er defineret ifølge Mifare-standarden (ISO 14443A). Den gør det muligt at håndtere flere kort i radiofeltet ved fx en stander. Casper Bang har lagt en lille video på Youtube, som kan ses under artiklen, hvor han demonstrerer anti-collision i MiFare.

Anti-collision fungerer ved, at alle kort udsender sit serienummer, når det kommer ind i feltet ved standeren, forklarer Casper Bang. Rejsekort-læseren kan herefter kommunikere med kortene et ad gangen via serienummeret.

I den forbindelse stiller Casper Bang sig uforstående overfor, at andre kort med Mifare-chip på den måde er en showstopper i forhold til check ind (og ud), som det i dag er tilfældet.

»... som kunde/bruger kunne det være rart ikke at skulle passe på med at blande diverse kort i sin pung/taske - det er jo bare en teknisk implementationsdetalje, at begge benytter Mifare,« skriver han.

Casper Bang tilføjer, at et argument for ikke at aktivere featuren med anti-collision i rejsekort-systemet kunne være, at der kan opstå et problem i forhold til, hvilket kort der skal checkes ind, hvis pungen indeholder flere rejsekort. Og at det kan være en del af forklaringen på, hvor slet ingen kort bliver checket ind, hvis der registreres flere kort med Mifare.

Læs også: Sådan opdagede pendler problemet med rejsekortets ‘NFC-parathed’

»Jeg ville måske nok personligt have foretrukket at alle kort i feltet bliver checket ind og så ladet standeren bippe en gang for antal kort og skrive antallet på displayet - det ville også gøre det hurtigere at checke flere ind samtidigt (én arbejdsgang),« skriver Casper Bang.

Adm. direktør i Rejsekort A/S Bjørn Wahlsten fortæller, at det er et bevidst fravalg, når Rejsekort-systemet ikke understøtter flere Mifare-kort i standerens radiofelt. Bjørn Wahlsten har undersøgt sagen nærmere og oplyser via mail til Version2:

»Det er rigtigt, at det er teknisk muligt at afgøre, om et givet kort i kortlæserens læsefelt er et rejsekort eller ej. Vi bruger den mulighed til at give en specifik fejlmeddelelse i det tilfælde der vises et kort, som ikke er et rejsekort.«

Bjørn Wahlsten oplyser endvidere, at det er teknisk nødvendigt at læse informationer på kortet udover kortets serienummer for at afgøre, hvorvidt kortet er et rejsekort eller ej. Og dermed kommer der til at gå for lang tid med at vurdere, hvilke kort der holdes op mod standeren.

»Hvis der er flere kort til stede i læsefeltet er det så nødvendigt at læse igennem dem alle for at afgøre, hvilket eller hvilke som er rejsekort. Dette ville medføre en længere transaktionstid – og dermed en større risiko for, at kunden når at fjerne sit kort inden operationen er færdig,« står der i mailen fra Wahlsten, som fortsætter:

Læs også: Privat person udvikler Android-app, der afkoder data direkte fra dit rejsekort

»I den situation vil kortlæseren give en fejlmeddelelse til kunden, men ved enhver anden fejlsituation skaber det en usikkerhed hos kunden om udstyret fungerer korrekt. Det er baggrunden for at vi har valgt at afvise operationen helt, hvis der er flere kontaktløse kort i læsefeltet på en gang.«

Derudover vil det også skabe forvirring hos kunden i de situationer, hvor der er flere rejsekort i pungen ad gangen, lyder det i svaret fra Rejsekort A/S.

»For det specielle tilfælde, hvor der er flere rejsekort i læsefeltet på en gang, har vi desuden fundet, at det var bedst for kunden, at funktionen var 100 procent forudsigelig. Vi kan ikke være sikre på, at en kunde, som har f.eks. flere rejsekort i tegnebogen, virkelig ønsker at checke alle sine rejsekort ind. Den situation vil i mange tilfælde også optræde, hvor kunden har flere rejsekort til forskellig anvendelse. F.eks. ét til rejse i forbindelse med arbejde og ét til privat brug.«

Casper Bang har lavet følgende korte demonstrationsvideo, hvor to Mifare-kort bliver registreret af en læser. Han har også skrevet et blogindlæg om udviklingen af en C#-driver til læseren, ER301.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (26)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Povl H. Pedersen

Da man har serienummeret på alle rejsekort, så kunne man gøre det forudsigeligt ved altid at vælge laveste serienummer.

Jeg ved ikke hvorfor man skal spørge kortet for at afgøre om det er et rejsekort. Jeg går ud fra, at de er udsted i nummerserier, forhåbentlig ikke flere serier end der kan ligge lokalt i en tabel i standeren (a'la dankortterminaler).

Og hvor lang tid taler vi om at det ville tage at løbe 10 kort igennem og se om de er rejsekort ?
Man kører vel omkring 100 kBd (kilo-Baud) ? eller 12.5 kbyte/sec. så burde man på 1/10 sekund vel sagtens kunne læse 100 bytes fra 5-6 kort, og udlede om det er et rejsekort. Nu kender jeg ikke protokollen, kan bare se at det er hastigheden på den gamle ISO standard, og nyere MiFare kører væsentligt hurtigere.

  • 2
  • 4
Christian Panton

En simpel ting ville være at lave et bloom-filter på Mifare UID for alle rejsekort. Så kunne man relativt nemt afgøre om et givent Mifarekort også var et Rejsekort, det skulle ikke tage lang tid at lave antikollison og matche indsamlede UID'er imod filteret. Det som tager lang tid er fejlslagen authentication imod et Mifare kort, hvilket ville være tilfældet over for adgangskort mm.

Det typiske er vel at folk kun har eet Rejsekort. Såfremt man havde to Rejsekort i sin pung, ville maskinen brokke sig som i dag.

  • 7
  • 0
Morten Krøyer

For det specielle tilfælde, hvor der er flere rejsekort i læsefeltet på en gang, har vi desuden fundet, at det var bedst for kunden, at funktionen var 100 procent forudsigelig

Man kunne vel lave det sådan, at hvis der er flere kort, men kun et rejsekort, så checker den ind, hvis der er flere rejsekort, så giver den en fejl - det lyder som en relativ simpel operation

Hvis der kun er et kort burde det kunne gøres på omtrent samme tid som den nuværende løsning

  • 12
  • 0
Thomas Nielsen

Lidt kuriøst og sagen lidt uvedkommende, har jeg faktisk det omvendte problem. Rejsekortstanderen kan fint læse mit rejsekort sammen med firmanøglekortet, mens firmaets kortlæser fejler når rejsekortet er i nærheden.

  • 2
  • 0
Jens loggo

end det tager at skanneren skan læse mere end et kort.

Folk fjerner i øvrigt ikke kortet før den siger bing, så det med at man risikerer at folk fjerner kortet for hurtigt er ikke nogen god begrundelse. Vi er allerede vant til at skulle afvente succes lyden, da det langt fra er altid den kommer, selv når den burde.

2 rejsekort, er det ene tilfælde hvor den bør afvise.

  • 7
  • 0
Jarle Knudsen

Folk fjerner i øvrigt ikke kortet før den siger bing,


Jo det gør de. Du vil ikke tro hvor svært kan det være for rigtig mange at vente til den siger "bing".

Jeg synes du skal lige sætte dig i nærheden af en stander og holde øje med hvordan folk faktisk bruger kortet... :O)


PS. Jeg mener at huske at der var et krav at en tjek-in/tjek-ud ikke måtte tage mere end 300ms. Bulk tjek-in/tjek-ud ville sandsynlig overskride kravspecs, hermed forståelig droppet.

  • 2
  • 1
Michael Thomsen

PS. Jeg mener at huske at der var et krav at en tjek-in/tjek-ud ikke måtte tage mere end 300ms. Bulk tjek-in/tjek-ud ville sandsynlig overskride kravspecs, hermed forståelig droppet.


Det er fuldstændig irrelevant hvad transaktionstiden er når man har eet rejsekort. Det er klart, at det vil tage længere tid når der skal læses flere kort og det vil i så fald have en højere tidsgrænse, da der er tale om et andet problem (medmindre dem, som har skrevet kravspecifikationen er inkompetente; hvilket synes at være en mulighed).

Anyway, fortæl hvad du tror er hurtigst:

  1. Rejsekortstanderen finder ud af, at der er flere kort og melder fejl. Kunden tager rejsekortet ud af pungen. Kunden scanner rejsekortet. Ok

eller

  1. Rejsekortstanderen finder ud af, at der er flere kort, scanner dem og finder ud af, at kun eet af dem er et rejsekort. Rejsekortet checkes ind hhv ud. Ok.

?

  • 8
  • 0
Thomas Nielsen

Jeg står dagligt i nærheden af en stander, og oplever det som jeg har beskrevet.

Jeg tror det i ret høj grad afhænger af, hvor man befinder sig. Nogle steder tager folk sig rigtig god tid (og nogen gange rigtig, rigtig god tid) til at scanne deres kort og afvente klarsignal. Andre steder bliver der svunget meget hurtigt med kortene. Om ikke andet, så viser dette hvor farlige anekdotisk data er, når to personer kan have modsatrettede observationer af samme [tilsyneladende] hændelse.

  • 3
  • 0
Casper Bang

Som Povl H. Pedersen og Christian Panton også er inde på, kom videoen og emnet til verden i sin tid, fordi jeg ikke forstod hvorfor man ikke bare afviser de kort (lægger dem til at sove) så snart man ser et kortID der ikke er inden for de de kendte nummer-serier Rejsekort har fået leveret fra leverandøren.

Der er 900.000 rejsekort så vidt jeg er ved og med 2^32 mulige numre, vil 4.29 mia. uinteresante numre kunne filtreres fra øjeblikkeligt - uden der er foregået nogen form for 2-vejs kommunikation overhovedet!

Principielt mener jeg stadig, at det er kunden irrelevant hvorvidt rejsekortet er baseret på Mifare teknologien eller ej - det er bare en implementationsdetalje. Den fejler jo heller ikke hvis man holder et klippekort eller pendlerkort op.

  • 4
  • 0
Jarle Knudsen
  • 0
  • 0
Casper Bang

...og siden systemet i bussene arbejder off-line (opdateres en gang om dagen i garagen) vil dit lige købt kort ikke fungere den første døgn.

Du mener ikke, Rejsekort A/S kender til det kort du har fået udleveret af dem, før du sidder med det første dag i bussen? Skal vi ikke regne med, og håbe på, at Rejsekort A/S køber lidt større ind af gangen, f.eks. serier på 50.000+? :)

  • 3
  • 0
Andrew Rump

Jeg har mit rejsekort liggende i den "ene side" af min pung (i en lomme "bagtil") og resten af kortene i "kortholderne" (lige til at tage ud).
Jeg holder så bagsiden af pungen op imod rejsekortscanneren og den scanner den uden problemer. Det fungere upåklageligt - indtil jeg får flere kort der skal scannes! :-|

  • 0
  • 0
Casper Bang

Vi andre med mobiler, der kan læse netop Mifare-chippen i Rejsekortet via mobiltelefonens NFC-chip fra NXP, har ikke den mulighed. :-)


Tilgængæld kan du, i teorien, overføre selve rejsekortet til din telefon i en emuleret form via Host Card Emulation og smide kortet ud. Det står dog hen i det uvisse, hvad Rejsekort A/S og diverse togførere vil sige til dette - men jeg har en fornemmelse.

  • 5
  • 0
Benny Tordrup

Tilgængæld kan du, i teorien, overføre selve rejsekortet til din telefon i en emuleret form via Host Card Emulation og smide kortet ud. Det står dog hen i det uvisse, hvad Rejsekort A/S og diverse togførere vil sige til dette - men jeg har en fornemmelse.

Det er 1000% sikkert, at Rejsekort vil brokke sig - du anvender ugyldigt rejsehjemmel. Det kan godt være at teknisk er der tale om nøjagtig det samme kort, men jeg er ret sikker på, at de vil have det fysiske kort.

Togførerne er så en helt anden sag. De vil overhovedet ikke være i stand til at håndtere Rejsekort på den facon. De har svært nok ved at håndtere, at deres terminal i InterCity togene ikke kan genkende et checkin på S-togsstander som gyldigt checkind ved skifte.

  • 1
  • 0
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize