Reputation: 10715
I have a Mifare Ultralight C card and want to authenticate its genuineness using an untrusted reader. Essentially, I want to ensure that the untrusted device scans the card to verify it has not been cloned or forged.
The only trusted entity is a server, which can securely hold a shared secret, such as a 3DES key or a public key. Therefore, I believe some form of challenge-response process is necessary.
It appears that the AUTHENTICATE command of the Ultralight C performs mutual authentication. While this could work, it has a significant drawback: it unlocks the card and is vulnerable to MITM (Man-In-The-Middle) attacks. This behavior exposes the card to the untrusted reader, which I want to avoid.
I couldn’t find a way to simply perform an encryption like 3DES(challenge)
for a one-sided challenge-response process. The AUTHENTICATE command also seems to prioritize reader validation, so I cannot "abort" authentication after verifying the card's authenticity.
I don't think putting some signed data on the tag woulöd work, as this opens the ability for cloning and/or replay attacks.
Is there a way to achieve this using the Mifare Ultralight C? What are the cheapest and still safe alternatives, if this is not possible achieve with an Ultralight C?
Upvotes: 0
Views: 23