Académique Documents
Professionnel Documents
Culture Documents
Mode d'emploi : NTAG 424 DNA
Boîte à outils d'initialisation et de validation
Version : 20230515 r1
Aperçu 2
Architecture du système 2
Installation du composant serveur 3
Initialisation des tags à l'aide du PC et du lecteur USB NFC 4
Lecteurs USB NFC compatibles 4
Instructions d'utilisation 4
Initialisation des balises à l'aide d'un smartphone Android ou iOS 6
Vérification des balises NFC 8
Introduction 8
Mise en œuvre recommandée 9
Appel de l'API de validation depuis le backend de votre application Web dix
Fonctionnalités optionnelles dans Tag Setup PC 11
Identifiant de lot 11
Fichier de données personnalisé 11
Fonctionnalités optionnelles dans l'application NFC Developer (en mode version complète) 12
Identifiant de lot 12
Données personnalisées à stocker sur la balise 12
Paramètres de configuration du serveur (fichier .env) 12
Remarques de sécurité 14
R&D ITSEC | https://itsecrnd.com/
1
Machine Translated by Google
Aperçu
Ce progiciel est conçu pour permettre une initialisation et une validation rapides et simples des produits NTAG 424
DNA et NTAG 424 DNA TagTamper.
Architecture du système
Ce progiciel contient deux composants :
• Composant serveur : binaires dont le nom commence par « nfcdev » ; Expose l'API HTTP
pour la validation des balises et coordonne également le processus d'initialisation des balises. La plupart des
paramètres sont configurés à ce niveau, y compris les clés d'autorisation ;
• Composant client : Binaire nommé commençant par « tagsetuppc » ; Interconnecte votre
Lecteur NFC USB avec le composant Serveur, permettant ainsi d'initialiser de nouvelles balises NFC ;
Schéma simplifié de l'architecture du système.
Alternativement, le programme Tag Setup PC et le lecteur USB NFC pourraient être remplacés par un smartphone.
Architecture système alternative.
Les deux configurations représentées sont décrites plus en détail dans les sections suivantes de ce document.
R&D ITSEC | https://itsecrnd.com/
2
Machine Translated by Google
Installation du composant serveur
1. Veuillez télécharger le binaire "nfcdev" approprié pour votre système d'exploitation cible.
Actuellement, ce binaire est fourni en trois variantes : nfcdevwin.exe (Windows x86_64),
nfcdevmacos (Mac OS x86_64) et nfcdevlinux (Linux x86_64).
2. Installez le serveur Redis. Cette base de données simple est nécessaire pour maintenir certains éléments de base
des informations sur vos balises.
Linux (Ubuntu ou Debian) : aptget update && aptget install redisserver
Autres systèmes d'exploitation : veuillez suivre le guide officiel : https://
redis.io/docs/gettingstarted/installation/
3. Lancez le binaire nfcdev. Il devrait afficher les informations d'utilisation contenant une liste de
commandes possibles.
./nfcdev
4. Lancez l'assistant de configuration nfcdev. Il vous posera quelques questions puis générera un
nouveau fichier de configuration pour vous.
./nfcdev init
5. Après avoir terminé l'assistant d'initialisation, votre configuration sera stockée dans le fichier .env.
Veuillez sauvegarder ce fichier, car il contient votre clé d'authentification de balise.
Si vous perdez cette clé, vous ne pourrez plus valider vos tags !
6. Veuillez ouvrir le fichier .env et notez les valeurs suivantes :
SETUP_AUTH_TOKEN, SDM_AUTH_TOKEN. Nous aurons besoin de ces valeurs dans les
sections suivantes de ce guide.
7. Veuillez lancer le serveur d'initialisation et de validation des balises :
./serveur nfcdev
Par défaut, cette commande démarrera deux serveurs HTTP :
Tag Initialization Server : port 8082
API de validation des balises : port 8085
Veuillez garder cette commande en cours d'exécution.
R&D ITSEC | https://itsecrnd.com/
3
Machine Translated by Google
Initialisation des tags à l'aide du PC et du lecteur USB NFC
Lecteurs USB NFC compatibles
Les modèles d'appareils suivants ont été testés avec le logiciel client et fonctionnent correctement :
• ACS ACR122U •
ACS ACR1252
• ACS ACR1281UC1 •
Identiv uTrust 3700 F •
Identiv uTrust 3720 F
Instructions d'utilisation
1. Veuillez télécharger le binaire tagsetuppc*.jar.
2. Assurezvous que Java JRE est installé. La version minimale prise en charge est Java 8. Si
vous n'avez pas Java JRE, veuillez suivre les instructions officielles de votre système
d'exploitation : https://www.java.com/pl/download/manual.jsp
3. Veuillez connecter le lecteur USB NFC à votre ordinateur. Assurezvous également que les pilotes
appropriés sont installés sur votre système d'exploitation. Veuillez vous référer au manuel
d'utilisation de votre lecteur si vous rencontrez des problèmes avec l'appareil luimême.
4. Veuillez lancer le binaire tagsetuppc*.jar. Si cela ne fonctionne pas, veuillez essayer de le faire
depuis la ligne de commande :
java jar <nom de fichier exact>.jar
R&D ITSEC | https://itsecrnd.com/
4
Machine Translated by Google
5. Le programme doit afficher la fenêtre de configuration initiale :
Dans le champ « Adresse du serveur principal », veuillez saisir l'adresse HTTP à laquelle votre serveur
nfcdev (Tag Initialization Server, port par défaut : 8082) peut être joint. L'URL doit se terminer par /
setup .
Dans le champ "Auth code", veuillez entrer la valeur de SETUP_AUTH_TOKEN (provenant du fichier
de configuration de votre serveur).
Les options restantes sont décrites dans les sections suivantes de ce document, elles sont facultatives
et peuvent initialement être laissées vides.
6. Veuillez cliquer sur [OK] pour démarrer le processus d'initialisation. Après un démarrage réussi, la fenêtre
principale du programme apparaît :
R&D ITSEC | https://itsecrnd.com/
5
Machine Translated by Google
7. Veuillez placer le tag NFC sur votre lecteur afin de l'initialiser. Une fois le programme
l'arrièreplan deviendra vert, le processus de programmation est terminé avec succès et vous
pouvez retirer l'étiquette.
8. Veuillez noter qu'il est possible de programmer plusieurs balises NFC au cours de la même session.
Il vous suffirait de taper des balises NFC consécutives sur le lecteur, une par une.
Initialisation des balises à l'aide d'un smartphone Android ou iOS
Alternativement, vous pouvez utiliser l'application mobile afin d'initialiser vos tags NFC.
Dans un tel cas, vous n'auriez pas besoin d'avoir accès à l'ordinateur personnel. Vous n'aurez également
besoin d'aucun dispositif de lecture NFC, car ce rôle sera joué par le smartphone luimême.
1. Veuillez installer l'application NFC Developer depuis Google Play ou App Store.
2. Basculez vers votre serveur et générez un code QR spécial qui vous permettrait de coupler
l'application NFC Developer avec votre serveur. Veuillez exécuter la commande suivante :
nfcdev deeplink output terminal serveraddress http://< IP de votre serveur
>:8082/setup
Après une exécution réussie, la commande affichera le code QR sur votre terminal.
Alternativement, vous pouvez lancer la commande avec le commutateur output html pour générer
un fichier HTML avec le code QR.
R&D ITSEC | https://itsecrnd.com/
6
Machine Translated by Google
3. Basculez sur votre smartphone, ouvrez l'application appareil photo et scannez le code QR.
Une fois que vous accédez au contenu numérisé, le smartphone doit automatiquement
ouvrir l'application NFC Developer. L'application passera du "mode démo" au "mode version
complète" et sera automatiquement couplée avec votre serveur.
L'interface de l'application NFC Developer après son couplage avec votre serveur privé.
4. Veuillez appuyer sur le bouton "WRITE NFC TAG" et appuyez sur votre tag NFC afin de
programmezle. Les champs restants sont facultatifs et seront décrits dans d'autres sections
de ce document.
R&D ITSEC | https://itsecrnd.com/
7
Machine Translated by Google
Vérification des balises NFC
Introduction
Vos balises NFC programmées renverront l'URL que vous avez configurée dans l'assistant de
configuration initiale avec le paramètre dynamique ajouté à la toute fin.
L'URL configurée est stockée dans le paramètre NDEF_URL du fichier .env de votre serveur.
Exemples d'URL dynamiques
Par exemple, si votre URL configurée était https://example.com/scanned, vos balises renverront des URL
dynamiques uniques au format suivant :
http://example.com/scanned?e=« paramètre dynamique »
Par exemple, la première analyse renverrait :
http://example.com/scanned?e=6179CF2DB5E2C406159967A16CD0C7DD58741
2462BB89FEB6378F0EB8B88F7124CEDDEA63C6885C9
Alors que la deuxième analyse et chaque analyse consécutive renverront une valeur encore
différente,
par exemple : http://example.com/scanned?e=3540037FC823E191157A1E4E40E264DD9C78E
4274BFDABF35935D6D8454B2B33710E7F7B97A7BCC1
L'ensemble du "paramètre dynamique" est crypté et un tiers n'est pas en mesure de déduire une
quelconque information en l'analysant.
R&D ITSEC | https://itsecrnd.com/
8
Machine Translated by Google
Mise en œuvre recommandée
Votre NDEF_URL (l'URL physiquement programmée sur les balises) doit pointer vers votre
application Web principale. Votre application Web principale doit appeler en interne l'API nfcdev
Validator afin de déchiffrer et de valider le paramètre dynamique. L'API Validator renverra
une simple réponse JSON
Workflow de validation recommandé.
R&D ITSEC | https://itsecrnd.com/
9
Machine Translated by Google
Appel de l'API de validation depuis le backend de votre application Web
Par défaut, le binaire nfcdev exposera l'API de validation sur le port 8085. Cette API offre un point de
terminaison HTTP unique qui accepterait le paramètre dynamique chiffré et renverrait un JSON avec le
résultat de la validation et la liste des paramètres extraits.
L'API de validation est protégée à l'aide de SDM_AUTH_TOKEN, qui est stocké dans la configuration
de votre serveur.
Exemple de script Python pour interagir avec l'API de validation nfcdev
importer des
demandes d'importation json
SDM_AUTH_TOKEN = 'D14E144C1D7AC070E44D9A7EB4B28CC9'
def validate_dynamic_param(dynamic_param): res =
requests.get('http://localhost:8085/api/validate?e=' + dynamic_param, headers={'Authorization': 'Bearer '
+ SDM_AUTH_TOKEN})
res.raise_for_status()
retourner res.json()
dynamic_param = 'E40C665D5FC0E58FF55E3781FEC3DDD19C78E4274BFDABF35935D6D8454B2B33710E7F7B97A7BCC1'
print(json.dumps(validate_dynamic_param(dynamic_param), indent=4))
Exemple de sortie du script Python {
"valid": vrai, "tag":
{ "uid":
"042B4FDA926980", "utilisé": faux,
"custom_data":
{ "as_str": "", "as_hex": ""
},
"tt_status": "NT",
"read_ctr_num": 3
},
"message": "Tout va bien ! L'URL dynamique est valide et n'a pas encore été utilisée."
R&D ITSEC | https://itsecrnd.com/
dix
Machine Translated by Google
Fonctionnalités optionnelles dans Tag Setup PC
L'assistant initial du programme PC Tag Setup contient les champs facultatifs suivants :
Identifiant de lot
En option, vous pouvez écrire un texte décrivant le lot de balises que vous venez de programmer. En utilisant
une commande spéciale dans le serveur nfcdev, vous pourrez répertorier tous les UID de balises par
identifiant de lot donné.
Exemple, répertoriant toutes les balises appartenant à "demobatch" via le serveur nfcdev : $ ./
nfcdevwin batchlist batchid demobatch [
{
"uid": "042B4FDA926980", "batch_id":
"demobatch", "has_tt": faux
},
{
"uid": "04244FDA926980", "batch_id":
"demobatch", "has_tt": faux
},
{
"uid": "04724FDA926980", "batch_id":
"demobatch", "has_tt": faux
}
]
Chaque objet renvoyé contiendra les clés suivantes : • uid
identifiant unique de la balise ; •
batch_id identifiant de lot ; • has_tt
si la balise a ou non la fonction TagTamper ;
Fichier de données personnalisé
Il est possible d'encoder une infime partie des informations personnalisées directement sur les balises NFC. Vos
informations personnalisées seront stockées dans le paramètre dynamique et seront entièrement cryptées.
L'utilisateur final ne pourra pas déduire cette information en regardant le paramètre dynamique et il ne sera
pas possible de falsifier cette information.
Afin d'ajouter des données personnalisées à vos balises NFC via le programme Tag Setup PC, vous devez créer un
fichier texte contenant la liste délimitée par une nouvelle ligne des données personnalisées que vous souhaitez
R&D ITSEC | https://itsecrnd.com/
11
Machine Translated by Google
programme sur vos tags NFC. La première balise se verra attribuer les données personnalisées de la première ligne du
fichier texte, la deuxième balise recevra la deuxième ligne, et ainsi de suite.
Exemple de fichier texte de données personnalisé
SKU:0123456789012;Noir;ID:1
SKU:0123456789012;Orange;ID:2
SKU:0123456789012;Blanc;ID:3
Le contenu des données personnalisées peut être du texte arbitraire et le format des données peut être arbitrairement
conçu par vous.
Les données personnalisées de la balise peuvent être récupérées via l'API de validation nfcdev. Le texte de données
personnalisé sera automatiquement renvoyé lors de la validation réussie du paramètre dynamique.
Fonctionnalités optionnelles dans l'application NFC Developer (en
mode version complète)
Lorsque l'application NFC Developer est associée à votre serveur nfcdev privé, les options suivantes seront disponibles :
Identifiant de lot
En option, vous pouvez écrire un texte décrivant le lot de balises que vous venez de programmer. Pour plus de détails,
veuillez consulter « Identifiant de lot » dans la section précédente.
Données personnalisées à stocker sur le tag
En option, vous pouvez fournir une courte chaîne de texte qui sera physiquement programmée sur la balise NFC. La
chaîne de données personnalisée fournie sera transportée à l'intérieur du paramètre dynamique sous la forme chiffrée.
L'utilisateur final ne serait pas en mesure de déduire la chaîne de données personnalisées en examinant le paramètre
dynamique, ni de falsifier les données personnalisées.
Les données personnalisées seront automatiquement renvoyées par l'API de validation nfcdev lors de la validation
réussie du paramètre dynamique.
Paramètres de configuration du serveur (fichier .env)
Les paramètres particuliers pris en charge par le fichier .env du serveur nfcdev sont répertoriés dans le tableau cidessous.
Veuillez noter qu'au lieu de fournir le fichier .env, tous ces paramètres peuvent également être transmis
R&D ITSEC | https://itsecrnd.com/
12
Machine Translated by Google
via des variables d'environnement, notamment lorsque le serveur nfcdev est lancé via Docker.
SYSTEM_MODE Mode de fonctionnement du système. Doit être défini sur "sdm".
Les autres valeurs ne sont pas encore prises en charge.
REDIS_URL L'URL pointant vers la base de données Redis. Exemple : redis://
192.168.0.123
ENABLE_HELLO_PAGES Soit "0" ou "1". Lorsqu'il est défini sur "1", le serveur fournira des pages
d'index conviviales lorsqu'il sera atteint via HTTP. Veuillez le régler sur "1"
pour le développement et sur "0" pour la production.
NDEF_URL L'URL qui sera physiquement programmée sur les tags NFC. Le paramètre
dynamique sera ajouté automatiquement à la fin de l'URL
fournie.
ENABLE_RANDOM_UID Soit "0" ou "1". Lorsqu'il est réglé sur "1", la fonction UID aléatoire sera
activée sur les balises NFC nouvellement programmées. L'utilisateur final
ne serait pas en mesure de connaître l'identifiant réel de l'étiquette. Vous
aurez toujours accès à ces informations. Pour plus de détails sur cette
fonctionnalité, veuillez consulter la fiche technique NTAG 424 DNA ("UID
aléatoire").
TAG_LOCK_MODE • « protéger » Protégez les balises contre toute modification non
autorisée, sans les verrouiller définitivement (recommandé).
Vous pourrez toujours reprogrammer les balises si nécessaire, mais
le tiers ne pourra pas remplacer ou effacer la balise. • « verrouiller
» Programmez les balises et verrouillez
les définitivement contre toute modification (déconseillé).
Ni vous ni personne d'autre ne pourrez remplacer
ou effacer l'étiquette après sa première programmation.
SYSTEM_MASTER_KEY Chaîne hexadécimale de 32 octets (64 caractères) contenant la clé principale
du système. La clé principale du système sera utilisée pour dériver
cryptographiquement les clés individuelles pour chaque étiquette.
Cette valeur doit rester secrète. Les balises doivent être
programmées et validées avec la même
SYSTEM_MASTER_KEY. Si le SYSTEM_MASTER_KEY est modifié entre
temps, vos anciens tags ne passeront plus la validation.
SETUP_AUTH_TOKEN Jeton d'autorisation pour le programme Tag Setup PC et NFC Developer
App (application mobile pour l'initialisation de la balise).
SDM_AUTH_TOKEN Jeton d'autorisation pour l'API du validateur.
R&D ITSEC | https://itsecrnd.com/
13
Machine Translated by Google
Remarques de sécurité
1. Sauvegardez votre SYSTEM_MASTER_KEY (stocké dans le fichier .env du serveur nfcdev)
et gardezle secret.
2. Si possible, n'exposez pas les serveurs nfcdev à l'Internet public.
2.1. Veuillez noter que l'API de validation nfcdev n'a pas besoin d'être exposée aux utilisateurs finaux,
dans la configuration correcte, elle doit seulement être accessible en interne par le backend
de votre application Web.
2.2. Il est recommandé de restreindre les adresses IP qui seront autorisées à se connecter au
serveur d'initialisation de balises nfcdev à l'aide du parefeu de votre système d'exploitation, ou
de masquer ce serveur à l'intérieur du réseau interne/VPN, afin qu'il ne soit disponible
que pour les employés autorisés de l'entreprise.
3. Les serveurs nfcdev peuvent fonctionner derrière un proxy inverse HTTP(S). Veuillez envisager d'utiliser un
proxy inverse et d'appliquer SSL au niveau du proxy inverse si d'autres précautions de sécurité sont
impossibles ou difficiles à mettre en œuvre.
R&D ITSEC | https://itsecrnd.com/
14