We use NXP NTAG 424 DNA chips in our tags. Each scan advances a monotonic counter and generates an AES-CMAC authentication code using the chip's secret key. Our validation service checks the code and counter. It rejects a code that has already been validated. A copied link cannot generate a fresh valid code without the key. A valid scan authenticates the tag. It does not prove the attached item is genuine.
How the Monotonic Counter Prevents Cloning
Data only NFC tags (like an NTAG 216) provide only information, not security. They store static information that any reader can duplicate. Each time an NFC tag is scanned, an internal counter increments by one. This counter value is combined with the tag's unique data and a secret key to generate a cryptographic signature using AES-CMAC (Cipher-based Message Authentication Code). Because the counter changes with every scan, the signature is different each time, even for the same tag.
The authentication equation is:
CMAC = AES-CMAC(K, UID || Counter || Data)
Where K is the secret key, UID is the tag's unique identifier, Counter increments with each scan, and Data is the tag's payload. A counterfeit tag cannot predict future counter values or generate valid signatures without knowing the secret key, making cloning mathematically infeasible.
A hardware security module holds the master key and derives each tag's unique key from it and the tag's UID. We write that key once into its NTAG 424 DNA chip. It cannot be read back from the chip. A key extracted from one tag cannot generate valid codes for another tag.
Static NFC Tags vs. Our NTAG 424 DNA Tags
| Feature | Static NFC Tags | Our NTAG 424 DNA Tags |
|---|---|---|
| Static Serial Number | Easily Copied | Not Used Alone |
| Rolling Counter | Unsigned When Available | Incremented Every Scan |
| AES-CMAC Validation | No Protection | AES-CMAC Verified |
| Clone Detection | Not Available | Counter Divergence |
| Chip Verification | None | ECC secp224r1 |
| Physical Tamper Detection | Not Available | TagTamper Wire |