So, I have this public transportation card, as well as a card that grants access to my school and lastly one that grants access to my work's office building.

My android device doesn't allow me to create a "Wallet" containing all the information stored on each of those cards and broadcast it.

Is there a valid security concern, or what is the reason it doesn't allow us to do so?

  • 1
    How do you intend on getting the secrets stored inside these smart cards (assuming crypto based cards with some challenge and response)? They're supposed to be closed for a reason. If you could clone them with your Android phone (i.e. you could exfiltrate the secret like a private key or a HMAC key), that would be really bad for security (everyone can impersonate you). Mar 6 '17 at 15:17
  • I'm not really interested in whatever is going on inside of the cards... Maybe I'm wrong about that, but basically, when I use an NFC reader, I get an identifier, and I was wondering why I can't just broadcast that identifier using my android's NFC chip Mar 6 '17 at 15:18
  • 2
    You can clone the outer identifiers, ofcourse. See kickstarter.com/projects/1980078555/… for that. But as soon as it does a challenge-and-response protocol after that, where the smartcard has to prove the knowledge of a secret (may it be symmetric or asymmetric), you need that secret. Broadcasting the same Cart-ID doesn't help you there, you fail in the authentication step, if there is one. Mar 6 '17 at 15:22
  • @MaximilianGerhardt Thanks for the comment, would you be able to elaborate on the workings of such a challenge-response system? Mar 6 '17 at 15:30

There are two different kinds of RFID tags.

  1. Cheap ones which just broadcast their serial number in clear text as soon as they get into a magnetic field
  2. Expensive ones which use a cryptographically secure protocol to authenticate

Cloning the first variant is trivial: You just record their number and broadcast the same one.

The second variant, however, is not that easy to clone. They have a secret key which never leaves the chip. You would need that secret key to clone them. So it's not like your Android device doesn't want to clone these tags, it can't.

Public transportation passes and access control cards are use-cases where cloning the card of someone else would break the system. Cloning the cheap variant is quite easy to do without the owner of the card noticing it. You just need to get a reading device close enough to their card. It is very likely that the makers opted for the more expensive variant to prevent people from cloning them.

  • How would one of these challenge-response systems work? Kind of like a two-factor authentication machine some banks still use? Sorry for the lack of knowledge, I really just wanted to unclutter my wallet and couldn't do it through my phone... Would there be any need for the challenge if you already have the broadcast information? Mar 6 '17 at 15:30
  • 1
    @FMashiro Any card can say "Hey! I'm a public transport card for customer Mr Anderson, and I have 2,000,000€ on my account!" through broadcasting RFID information. But to actually proof that you are Mr. Anderson's smart card, which was handed to you by some authority, you have to prove the knowledge of a secret that only the legitimate smart card can know, because a certain secret key is saved in it, which should be impossible (or atleast hard for normal people) to get out the device. An example for that is generating an RSA/ECC signature or signing something with an HMAC. Mar 6 '17 at 15:34
  • @MaximilianGerhardt Peculiar, I mean I get why it would work like this, but I've had a weird experience once when rubbing my school-id card with my public transport card together and I was able to check-in to the bus using my student-id card, which makes me think it's just sending out an identifier saying something like "I'm customer 1234" and then leaving the bus' machine checking on their network wether the balance of customer 1234 is enough to make use of their service Mar 6 '17 at 15:36
  • 1
    @FMashiro there is no standard for that AFAIK, but it's quite common to use public-private key cryptosystems. Very simplified explanation: 1. The reader sends a random number, 2. the tag encrypts that number with its private key and sends the result back, 3. the reader verifies it with the tag's public key which it has in its database. A replay attack doesn't work unless you replay the response to the same random number.
    – Philipp
    Mar 6 '17 at 15:36
  • 1
    @FMashiro just guessing, the school will probably not give you approval of that, because it would reveal how shitty the "identification" /security system is (ZERO authentication => impersonate anyone at will), which leaves them in a bad light. Welcome to the world of information security people. You should also be careful in the case you want to do it yourself, because it might be illegal breaking their "security" system. Mar 6 '17 at 15:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.