Question

I have an Android project that requires me to use an NFC tag for encryption/signing data using an elliptical curve algorithm.

I need the tag to be able to perform the crypto itself using a keypair that I generate externally. It's important that the private key is stored on the tag and not transferred to Android to perform the signing.

I also need to write protect all tags so data can only be written to them if it's signed by me.

I'd like the form factor of the tag to be circular and as small as possible.

From my research so far, it's looking like I have to use Java Cards, but I'm not sure of this.

Can anyone confirm appropriate devices I could use?

Was it helpful?

Solution

You need some micro-controller card. I have never seen those in any other form than the standard credit card form (ID-1).

A Java Card card is certainly an option, such as a NXP JCOP or Gemalto TOP card. They can be bought on-line in various places. To write an applet for such a card, requires that you have access to the SDK for that card (often available only under NDA). Java Card programming is quite unlike Java programming, furthermore it requires knowledge of such things as ISO 7816-4 and (in your case) crypto.

Another possibility could be ZeitControl BasicCard. The cards are available from various online smart card shops and from ZeitControl themselves (not all cards can do ECC). The SDK is free and available from the ZeitControl website. The programming language for the card takes some getting used to, though, but a lot of communication details are handled automatically. If you need help interfacing a BasicCard applet with an Android app, you can request additional information from ZeitControl (they were very helpful when I contacted them). It is not overly complicated, though.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top