NFC / RFID cryptographic tag?

This is killing me ... I'm trying to find an NFC / RFID tag that:

  • Implements encryption and / or cryptographic signing of data sent to the tag, so that the tag can be authenticated by the reader. I don't care if the tag is trying to authenticate the reader, and

  • Widely supported by Android phones and standard NFC libraries, and

  • It stores the cryptographic key in a safe manner (reading should not be possible after burning out the configuration plugin).

I don't care what kind of payload can be stored in the tag, and I don't need NDEF messages. I don't care if the encryption used is symmetric or asymmetric. All I want to do is send some data to a tag and use it using a shared secret, encrypt or sign this data and send it back to the phone, after which my code will perform the same function and compare the results with tag to verify the tag .

I have Atmel CryptoRF * tag samples, and although they will probably do most of what I need, they are not detected properly on the only Android phone I have. Phone calls and I filter for "android.nfc.action.TECH_DISCOVERED" with the corresponding entries in the technical list, but I get nothing. Atmel technical support is worse than useless (because I spent time asking questions that they never bothered to answer). Logcat looks like this:

  • 09-04 21: 03: 53.474 1012-1012 /? D / NativeNfcTag: Connect Failed - status = 146
  • 09-04 21: 03: 53.474 1012-1012 /? E / NFCJNI: doDisconnect () - Target is already disabled

I do not see any previous entries suggesting that the tag was ever recognized by Android.

It looks like such a simple, obvious, and necessary type of tag that it must exist somewhere.

NFCGuy or others - any ideas?

Thanks!

* The Atmel CryptoRF data sheet says the following, which may or may not be useful in determining whether these things can be read on an Android phone:

  • ISO / IEC 14443-2: 2001 Compliance with type B requirements
  • ISO / IEC 14443-3: 2001 Typical protocol compatible with Anticollision.
+6
source share
1 answer

Mifare Desfire will do what you ask for, with one exception:

Crypto support is not available at the API level.

You need to write code that does all authentication and cryptography and talk directly to the Desfire tag. The Android API provides tools for this through the low-level access function IsoDep.transceive . The cryptography functions themselves can be found in javax.crypto.spec

Unlike other tags with cryptographic documentation, the required steps for authentication and encryption are available on the Internet.

+3
source

Source: https://habr.com/ru/post/953207/


All Articles