Nos tags contiennent des puces NXP NTAG 424 DNA. Chaque lecture fait avancer un compteur monotone et génère un code d’authentification AES-CMAC à l’aide de la clé secrète de la puce. Notre service de validation vérifie le code et le compteur. Il rejette tout code déjà validé. Sans la clé, un lien copié ne peut pas générer de nouveau code valide. Une lecture valide authentifie le tag. Elle ne prouve pas l’authenticité de l’objet auquel il est fixé.
Comment le compteur monotone empêche le clonage
Les étiquettes NFC destinées uniquement aux données, comme NTAG 216, fournissent des informations, mais aucune sécurité. Elles stockent des données statiques que n’importe quel lecteur peut copier. À chaque lecture d’une étiquette NFC, un compteur interne augmente d’une unité. Cette valeur est combinée aux données uniques de l’étiquette et à une clé secrète pour générer une signature cryptographique avec AES-CMAC, un code d’authentification de message fondé sur un chiffrement par blocs. Comme le compteur change à chaque lecture, la signature est différente à chaque fois, même pour la même étiquette.
L’équation d’authentification est la suivante.
CMAC = AES-CMAC(K, UID || Counter || Data)
Où K est la clé secrète, UID l’identifiant unique de l’étiquette, Counter augmente à chaque lecture et Data désigne les données utiles de l’étiquette. Une étiquette contrefaite ne peut ni prédire les valeurs futures du compteur ni générer de signatures valides sans connaître la clé secrète, ce qui rend le clonage mathématiquement irréalisable.
Un module matériel de sécurité conserve la clé maîtresse et en dérive la clé unique de chaque tag à l’aide de son UID. Nous inscrivons cette clé une seule fois dans sa puce NTAG 424 DNA. Elle ne peut pas être relue depuis la puce. Une clé extraite d’un tag ne peut pas générer de codes valides pour un autre tag.
Tags NFC statiques et nos tags NTAG 424 DNA
| Fonction | Tags NFC statiques | Nos tags NTAG 424 DNA |
|---|---|---|
| Numéro de série statique | Facile à copier | Jamais utilisé seul |
| Compteur croissant | Non signé lorsqu’il est présent | Augmente à chaque lecture |
| Validation AES-CMAC | Aucune protection | Vérification AES-CMAC |
| Détection des clones | Non disponible | Divergence des compteurs |
| Vérification de la puce | Aucune | ECC secp224r1 |
| Détection physique d’ouverture | Non disponible | Fil de détection TagTamper |