Online Store

Détection et accès NDEF – Balises MIFARE Classic & MIFARE Plus

Détection et accès NDEF #

Ce chapitre décrit comment les données NDEF (par exemple le message NDEF) DOIVENT être stockées et consultées dans les balises MIFARE Classic et MIFARE Plus.

Le message NDEF que cette note d’application gère dans un MIFARE Classic et miFARE Plus, est stocké dans un message NDEF TLV appelé TLV de message NDEF obligatoire ou premier message NDEF TLV. Le message NDEF obligatoire TLV est également le message NDEF TLV trouvé par la procédure de détection NDEF (voir section 1. 4.1).

Gestion du NDEF #

Pour détecter et accéder aux données NDEF (par exemple, message NDEF) à l’intérieur des étiquettes MIFARE Classic et MIFARE Plus, le MAD DOIT être utilisé (voir section 2.4) avec le GPB des secteurs NFC.

Un identifiant d’application (AID) du MAD, appelé NFC AID, a été réservé pour identifier les secteurs avec des données NDEF. Un secteur avec des données NDEF est appelé secteur NFC. Les deux champs de l’AID NFC sont définis comme suit :

le code du cluster de fonction est égal à E1h pour identifier le cluster de secteurs avec des données NDEF, et

le code de l’application est égal à 03h pour identifier le secteur NFC auquel cette note d’application est liée.

Un ou plusieurs secteurs NFC PEUVENT être présents à l’intérieur d’une balise MIFARE Classic 1k/4k.

Si plus d’un secteur NFC est présent, les secteurs NFC DOIVENT être contigus. Dans le cas de MIFARE Classic 4k ou MIFARE Plus avec 4 Ko, il DOIT être considéré comme contiguë une séquence de secteurs NFC qui inclut le secteur MAD 16.

Voici des exemples de secteurs NFC contigus :

  • Secteurs NFC du secteur 2 au secteur 3, et
  • Secteurs NFC du secteur 1 au secteur 39. Dans ce cas, le secteur MAD 16 est contenu mais toujours tel que défini ci-dessus, les secteurs NFC sont considérés comme contigus.

Voici un exemple de secteurs NFC non contigus :

  • le secteur 3 et le secteur 5 sans le secteur 4 sont des secteurs NFC. Dans ce secteur de cas, 4 n’est pas un secteur NFC, de sorte que les deux secteurs NFC restants ne sont pas contigus.

Les données du NDEF DOIVENT être écrites à partir du secteur NFC avec le plus petit numéro de secteur jusqu’au plus grand.

L’octet à usage général (GPB, voir section 2.1 et section 2.3) de chaque secteur NFC fournit des informations sur le numéro de version du modèle de mappage utilisé pour stocker les données NDEF dans MIFARE Classic et MIFARE Plus (voir section 1. 1.1) et l’accès en écriture des secteurs NFC. Le GPB DOIT être codé comme décrit dans le tableau 1.

Tableau 1 — Structure des octets à usage général

msb Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1lsb Bit 0
Numéro de version de mappageConditions d’accès
Numéro de version majeureNuméro de version mineureCondition d’accès en lectureCondition d’accès en écriture

Les 4 bits les moins significatifs (lsb) du GPB indiquent les conditions d’accès du Secteur NFC :

  • Le bit 2-3 indique la condition d’accès en lecture :
    • La valeur 00b indique un accès en lecture accordé sans aucune sécurité.
    • La valeur 11b indique qu’aucun accès en lecture n’a été accordé.
    • Toute autre valeur indique que les opérations de sécurité du fournisseur sont nécessaires pour accorder un accès en lecture, c’est-à-dire propriétaire.
  • Le bit 0-1 indique la condition d’accès en écriture :
    • La valeur 00b indique un accès en écriture accordé sans aucune sécurité.
    • La valeur 11b indique qu’aucun accès en écriture n’a été accordé.
    • Toute autre valeur indique que les opérations de sécurité du fournisseur sont nécessaires pour accorder un accès en écriture, c’est-à-dire propriétaire.

Les 4 bits les plus significatifs (msb) indiquent le numéro de version du mappage (voir section 1. 1.1) :

  • Le bit 7-6 (les 2 msb du champ numéro de version de mappage) indique le numéro de version principale.
  • Le bit 5-4 (le champ 2 lsb du numéro de version de mappage) indique le numéro de version mineure.

À l’intérieur d’une étiquette MIFARE Classic et MIFARE Plus, le ou les secteurs NFC contenant le message NDEF obligatoire TLV DOIVENT être réglés avec une condition d’accès en lecture égale à 00h et des conditions d’accès en écriture égales à 00b ou 11b (voir section 1). 3).

Le dispositif Reader mettant en œuvre cette note d’application DOIT gérer les balises MIFARE Classic et MIFARE Plus avec un numéro de version majeure égal à 01b et le numéro de version mineure égal à 00b, c’est-à-dire une version de mappage 1.0.

Traitement des versions #

Le GPB des secteurs NFC contient le numéro de version de mappage du modèle de mappage appliqué de la balise MIFARE Classic 1k/4k ou MIFARE Plus. Le numéro de version du mappage est indiqué par deux numéros : numéro de version majeure et numéro de version mineure.

La gestion des différents numéros de version majeure et mineure de la balise MIFARE Classic ou MIFARE Plus (appelée MSVNo) et de celle implémentée dans le périphérique Reader (appelée NFCDevVNo) est expliquée dans les 4 cas du tableau 12.

Tableau 12 — Gestion des numéros de version du document de mappage

Cas de numéro de versionManipulation
1Le NFCDevVNo majeur est égal au MSVNo majeur, et

NFCDevVNo mineur est supérieur ou égal à MSVNo mineur

Le lecteur DOIT accéder à la balise MIFARE Classic ou MIFARE Plus et UTILISER TOUTES LES FONCTIONNALITÉS DU DOCUMENT DE MAPPAGE APPLIQUÉ À CETTE BALISE MIFARE Classic ou MIFARE Plus.
2Si NFCDevVNo majeur est égal à MSVNo majeur, et

NFCDevVNo mineur est inférieur à MSVNo mineur

Il est possible que toutes les fonctionnalités de la balise MIFARE Classic ou MIFARE Plus ne soient pas accessibles. Le lecteur UTILISERA toutes ses fonctionnalités et ACCÉDERA à cette balise MIFARE Classic ou MIFARE Plus.
 

Cas de numéro de versionManipulation
3Si nfcDevVNo majeur est plus petit que MSVNo majeurFormat de données incompatible. Le périphérique Reader ne peut pas comprendre les données de la balise MIFARE Classic ou MIFARE Plus. Le lecteur DOIT rejeter cette balise MIFARE Classic ou MIFARE Plus.
4Si nfcDevVNo majeur est plus grand que le MSVNo majeurLe périphérique Reader peut implémenter la prise en charge des versions précédentes de cette spécification en plus de sa version principale. Dans le cas où l’appareil Reader a le support de la version précédente, il DOIT accéder à la balise MIFARE Classic ou MIFARE Plus. Au contraire, dans le cas où l’appareil Reader n’a pas de support de la version précédente, il DOIT rejeter la balise MIFARE Classic ou MIFARE Plus.

Stockage NDEF #

Le format de données du message NDEF est défini dans [NDEF]. Le message NDEF DOIT être stocké dans le champ de valeur du message NDEF TLV (voir section 2.6.1) en utilisant un ou plusieurs secteurs NFC. Les secteurs NFC sont identifiés par le NFC AID dans le(s) secteur(s) MAD.

Cycle de vie #

Les secteurs NFC d’une balise MIFARE Classic ou MIFARE Plus PEUVENT être dans les états suivants INITIALISÉ, LECTURE/ÉCRITURE ou LECTURE SEULE. Les secteurs NFC DOIVENT être dans un seul état à un moment précis. L’état DOIT être reflété par le contenu des secteurs NFC. L’État n’est pas lié à un seul secteur NFC, mais à tous les secteurs NFC réunis. Les états sont décrits dans les sections suivantes.

Si la balise MIFARE Classic ou MIFARE Plus contient uniquement des secteurs NFC, l’état des secteurs NFC est appelé état de la balise MIFARE Classic ou MIFARE Plus. Dans la description ci-dessous, l’état de la balise MIFARE Classic ou MIFARE Plus est confondu avec (c’est-à-dire égal à) l’état des secteurs NFC.

Chaque état a ses opérations valides appelées transitions ou changements d’état. Les transitions d’état ne sont pertinentes que pour les lecteurs capables d’écrire des balises MIFARE Classic ou MIFARE Plus.

Les différents états sont identifiés en comparant le GPB du secteur NFC où commence le TLV obligatoire du message NDEF et les champs du message NDEF obligatoire TLV. Notez que les bits d’accès de la remorque de secteur décrits à la section 2.5 ne sont pas utilisés dans cette note d’application pour identifier l’état spécifique.

Si la balise MIFARE Classic ou MIFARE Plus n’est pas dans un état valide selon cette note d’application, les données NDEF de la balise MIFARE Classic ou MIFARE Plus dans tous les secteurs NFC DOIVENT être ignorées. Les raisons PEUVENT être :

  • Secteurs NFC non contigus.
  • Aucun secteur NFC n’est présent à l’intérieur de l’étiquette, c’est-à-dire qu’aucun secteur n’est indiqué par le MAD à l’aide du NFC AID.
  • Incompatibilité entre la longueur totale des blocs TLV et la longueur réelle de la zone de données.
  • Bloc TLV non valide.

État INITIALISÉ #

Une étiquette MIFARE Classic ou MIFARE Plus DOIT être détectée à l’état INITIALISÉ lorsque :

        • le GPB est défini comme décrit à la section 1. 1, en particulier avec le bit 0-1 égal à 00b et le bit 2-3 égal à 00b (accès en lecture et en écriture accordé),
        • le(s) secteur(s) NFC contient un message NDEF TLV (obligatoire), et
        • la longueur du champ du message NDEF obligatoire TLV est égale à 00h.

Dans l’état INITIALISÉ, l’appareil NFC PEUT modifier le contenu du message NDEF obligatoire TLV en y écrivant un message NDEF. L’annexe D du chapitre 10, l’annexe E du chapitre 0 et l’annexe F du chapitre 12 présentent deux exemples de MIFARE Classic 1k, MIFARE Plus avec 2 Ko et MIFARE Classic 4k ou MIFARE Plus avec 4 Ko, tous à l’état INITIALISÉ.

État READ/WRITE #

Une balise MIFARE Classic ou MIFARE Plus DOIT être détectée à l’état READ/WRITE lorsque :

        • le GPB est défini comme décrit à la section 1. 1, en particulier avec le bit 0-1 égal à 00b et le bit 2-3 égal à 00b (accès en lecture et en écriture accordé),
        • le message obligatoire du NDEF TLV est présent dans le(s) secteur(s) NFC, et
        • le champ de longueur du message NDEF obligatoire TLV est différent de zéro.

L’état READ/WRITE DOIT être atteint via l’état INITIALISÉ. Dans cet état, le périphérique NFC PEUT modifier le contenu du message NDEF obligatoire TLV en y écrivant un message NDEF.

État EN LECTURE SEULE #

Une balise MIFARE Classic ou MIFARE Plus DOIT être détectée à l’état LECTURE SEULE lorsque :

        • le GPB est défini comme décrit à la section 1. 1, en particulier avec le bit 0-1 égal à 11b et le bit 2-3 égal à 00b (aucun accès en écriture n’est accordé, seul l’accès en lecture est accordé),
        • le message obligatoire du NDEF TLV est présent dans le(s) secteur(s) NFC, et
        • le champ de longueur du message obligatoire du NDEF TLV EST différent de zéro.

En lecture seule, tous les secteurs NFC disposent d’un accès en lecture seule. La balise MIFARE Classic ou MIFARE Plus reste en lecture seule pour le cycle de vie restant.

Description de la séquence de commandes #

Dans cette section, plusieurs procédures sont décrites pour gérer les données NDEF, par exemple le message NDEF obligatoire TLV dans le(s) secteur(s) NFC. Les différents changements d’état ou transitions entre les états de la balise MIFARE Classic ou MIFARE Plus sont également affichés en détail.

Chaque secteur impliqué dans les procédures DOIT être authentifié à l’aide de l’opération d’authentification avant de la lire ou de l’écrire. La clé publique A DOIT être sélectionnée en fonction du type de secteur, c’est-à-dire le secteur MAD ou le secteur NFC.

Procédure de détection NDEF #

La procédure de détection NDEF DOIT être utilisée pour détecter le message NDEF obligatoire (voir [NDEF]) à l’intérieur d’une balise MIFARE Classic ou MIFARE Plus.

La procédure de détection NDEF est basée sur la vérification de:

        • le(s) secteur(s) MAD,
        • le(s) secteur(s) NFC, et
        • le message NDEF obligatoire TLV qui contient le message NDEF.

Comme nous l’avons déjà mentionné, le message NDEF TLV trouvé par la procédure de détection NDEF est appelé message NDEF obligatoire TLV ou premier message NDEF TLV. Lorsque mifare Classic ou MIFARE Plus est à l’état LECTURE/ÉCRITURE ou LECTURE SEULE, ce message NDEF TLV contient un message NDEF. Dans l’état INITIALISÉ, le message NDEF TLV est vide.

NDEF graph(1) Après l’échec d’une opération d’authentification ou de lecture, le MIFARE Classic ou le MIFARE Plus ne répond plus aux commandes et doit être réactivé et sélectionné pour poursuivre la procédure de détection NDEF.

Pour exécuter la procédure de détection NDEF, le dispositif de lecture (ou dispositif NFC) DOIT effectuer les opérations suivantes (voir également la figure 6) sur le MIFARE Classic ou le MIFARE Plus :

  1. Vérifiez l’existence du ou des secteurs MAD.
  2. Authentifier et lire le(s) secteur(s) MAD : secteur 0 pour MAD1 ou secteur 0 et 16 pour MAD2 à l’aide de l’opération Read.
  1. Si, à l’intérieur du MAD, une ou plusieurs AID égales à l’AID NFC liées à un ou plusieurs secteurs contigus sont trouvés, passez au point 4. Sinon, aucun NFC AID n’a été détecté dans la balise MIFARE Classic ou MIFARE Plus, et la balise MIFARE Classic ou MIFARE Plus n’est pas dans un état valide.
  2. Pour chaque secteur NFC, effectuez les opérations suivantes en commençant par le plus petit numéro de secteur jusqu’au plus élevé :
    1. Authentifiez et lisez la bande-annonce sectorielle du secteur NFC à l’aide de la clé publique A pour les secteurs NFC (voir tableau 6).
    2. Si l’authentification et les opérations de lecture réussissent, vérifiez la bande-annonce sectorielle du secteur NFC. Sinon, si l’authentification ou l’opération de lecture échoue, un secteur NFC propriétaire (voir la description du secteur NFC ci-dessous) est trouvé, puis passez à l’élément f.
    3. Si les bits 4 à 7 du GPB décrivent le bon numéro de version selon les règles définies ci-dessus, passez à l’élément d. Sinon, arrêtez la procédure car la balise MIFARE Classic ou MIFARE Plus n’est pas dans un état valide.
    4. Si la valeur du champ de condition d’accès en lecture (bit 2-3) du GPB est égale à 00b et que la valeur de la condition d’accès en écriture déposée (bit 0-1) du GPB est égale à 00b ou 11b, lisez les blocs de données du secteur NFC relatif à l’aide de l’opération de lecture spécifiée à la section 5.1.3, recherchez les TLV de message NDEF, et allez à l’élément e. Sinon, si la valeur du champ d’accès en lecture du GPB est différente de 00h ou si la valeur de la condition d’accès en écriture déposée (bit 0-1) du GPB est différente de 00b et 11b, un secteur NFC propriétaire (voir la description du secteur NFC ci-dessous) est trouvé, puis passez à l’élément f.
    5. Si un message NDEF TLV est trouvé, il s’agit du message NDEF obligatoire (c’est-à-dire le premier) TLV, puis passez au point 5. Sinon, si aucun message NDEF TLV n’est trouvé, allez à l’élément f.
    6. Si disponible, vérifiez le prochain secteur NFC et accédez à l’élément a. Sinon, si aucun autre secteur NFC n’est disponible, arrêtez la procédure car aucun message NDEF TLV n’est trouvé. La balise MIFARE Classic ou MIFARE Plus n’est pas dans un état valide.
  3. Si le champ de longueur du message NDEF obligatoire TLV est différent de zéro, le message NDEF (voir [NDEF]) est détecté dans la balise MIFARE Classic ou MIFARE Plus et le périphérique Reader PEUT utiliser la procédure de lecture NDEF ou la procédure d’écriture NDEF. Si le champ de longueur est égal à zéro, aucun message NDEF n’est détecté dans la balise MIFARE Classic ou MIFARE Plus et le périphérique Reader PEUT utiliser la procédure d’écriture NDEF (la balise peut être à l’état INITIALISÉ).

La procédure de détection NDEF ne concerne pas un message NDEF valide. Il lit la longueur du message NDEF à partir du champ de longueur du message NDEF TLV mais n’analyse pas le message NDEF.

Le lecteur DOIT ignorer et sauter par-dessus les secteurs NFC propriétaires. Le secteur NFC propriétaire est défini comme un secteur NFC qui est : soit non authentifiable avec la clé publique A pour les secteurs NFC, soit la valeur du champ d’accès en lecture du GPB est différente de 00b ou la valeur de la condition d’accès en écriture déposée (bit 0-1) du GPB est différente de 00b et 11b.

Chaque fois qu’une opération d’authentification, une opération de lecture ou une opération d’écriture échoue, le MIFARE Classic ou MIFARE Plus reste silencieux et ne répond plus à aucun

Commandes. Dans ce cas, pour poursuivre la procédure de détection NDEF, le MIFARE Classic ou le MIFARE Plus doit être réactivé et sélectionné.

Procédure de lecture NDEF #

La procédure de lecture NDEF est utilisée par le lecteur pour lire le message NDEF à partir du message NDEF obligatoire TLV. Avant de lire le message NDEF, la procédure de détection NDEF DOIT être exécutée et la balise MIFARE Classic ou MIFARE Plus DOIT être dans un état valide.

En utilisant la procédure de lecture NDEF, le dispositif de lecture DOIT lire l’intégralité du message NDEF à partir du message NDEF obligatoire TLV en utilisant une ou plusieurs opérations de lecture. La longueur du message NDEF à lire est indiquée à partir du champ de longueur du message NDEF obligatoire TLV.

Si le TLV obligatoire du message NDEF est stocké dans un ou plusieurs secteurs NFC, le lecteur DOIT être en mesure d’authentifier tous ces secteurs avec la clé publique A pour les secteurs NFC (voir tableau 6). En cas d’échec de la procédure d’authentification, la balise MIFARE Classic ou MIFARE Plus n’est pas dans un état valide.

Procédure d’écriture NDEF #

La procédure d’écriture NDEF DOIT être utilisée par le lecteur pour écrire le message NDEF obligatoire TLV contenant un message NDEF à l’intérieur d’une balise MIFARE Classic ou MIFARE Plus.

La procédure d’écriture NDEF utilise les opérations de lecture et d’écriture (voir section 5.1.3 et section 5.1.4).

Pour écrire le message NDEF, la balise MIFARE Classic ou MIFARE Plus DOIT être à l’état INITIALISÉ ou LECTURE/ÉCRITURE, c’est-à-dire que le message NDEF obligatoire TLV DOIT être déjà présent à l’intérieur de la balise MIFARE Classic ou MIFARE Plus.

NDEF write procedure

Pour exécuter la procédure d’écriture NDEF, le lecteur DOIT effectuer les opérations suivantes sur la balise MIFARE Classic ou MIFARE Plus :

  1. Utilisez la procédure de détection NDEF (voir section 1.4.1) pour trouver le message NDEF obligatoire TLV. Si le message obligatoire du NDEF TLV est trouvé, passez au point 2. Sinon, si aucun message NDEF TLV n’est trouvé, mettez fin à la procédure.
  2. Si la taille de mémoire disponible pour le TLV du message NDEF est égale ou supérieure à la taille du message NDEF, les opérations ci-dessous DOIVENT être effectuées dans l’ordre suivant à l’aide d’une ou plusieurs opérations d’écriture :
    1. le champ de longueur du message NDEF obligatoire TLV DOIT être d’un octet et sa valeur DOIT être fixée à 00h,
    2. le nouveau message NDEF DOIT être écrit dans le champ de valeur du message obligatoire NDEF TLV, et
    1. le champ de longueur du message obligatoire du NDEF TLV DOIT être mis à jour avec la longueur du message NDEF.

Sinon, si l’espace mémoire disponible est insuffisant dans la balise MIFARE Classic ou MIFARE Plus, le message NDEF NE DOIT PAS être écrit dans la balise MIFARE Classic ou MIFARE Plus.

  1. Si l’élément 2 est effectué avec succès, le périphérique Reader DOIT écrire le Terminator TLV dans l’octet suivant le message NDEF TLV à l’aide de l’opération Write.Le TLV Terminator NE DOIT PAS être écrit lorsque le TLV obligatoire du message NDEF se termine au dernier octet du dernier secteur NFC disponible, c’est-à-dire le secteur NFC avec le plus grand nombre de secteurs.

En ce qui concerne le point 2 de l’opération. b, l’écriture du champ de valeur du message NDEF trouvé TLV DOIT laisser 1 ou 3 octets pour le champ de longueur qui sont nécessaires pour l’opération suivante point 2. c pour stocker la longueur du message NDEF.

La procédure d’écriture NDEF ne modifie pas la position de départ du message NDEF obligatoire TLV.

La procédure d’écriture NDEF PEUT écrire le message NDEF TLV sur les secteurs NFC contigus, à l’exception du secteur MAD 16 dans le cas où MIFARE Classic 4k et MIFARE Plus avec 4 Ko sont utilisés.

La taille de mémoire disponible pour le TLV de message NDEF obligatoire est calculée à partir de la position du message NDEF obligatoire TLV comme la somme de:

  • l’espace mémoire libre du secteur NFC contenant le message NDEF obligatoire TLV. L’espace mémoire libre commence au début du message NFC obligatoire TLV et se termine à la fin du secteur NFC, et
  • tout l’espace mémoire des secteurs NFC suivant le secteur contenant le message NDEF obligatoire TLV. Les secteurs NFC suivants PEUVENT avoir une taille de 48 octets (3 blocs) ou 240 octets (15 blocs). Les informations sur les secteurs NFC disponibles suivants DOIVENT être extraites des secteurs MAD.

Pour l’opération Write, la lecture de blocs non complètement mis à jour est nécessaire en premier lorsque, par exemple, le message NDEF TLV démarre au milieu d’un bloc.

Changements d’état #

Cette section décrit les changements d’état possibles de la balise MIFARE Classic ou MIFARE Plus. La figure 8 montre les états et le changement d’état (également appelé transition) entre eux. Dans cette note d’application, la seule transition spécifiée est de INITIALISÉ à READ/WRITE.

Le périphérique Reader PEUT émettre une balise MIFARE Classic ou MIFARE Plus à l’état INITIALISÉ, EN LECTURE/ÉCRITURE ou même en lecture seule.life cycle transaction

Le passage de INITIALISÉ à READ/WRITE #

Pour effectuer la transition de INITIALISÉ à LECTURE/ÉCRITURE, le dispositif Lecteur DOIT effectuer l’opération suivante: un message NDEF TLV non vide (champ de longueur différent de zéro) REMPLACE le message NDEF TLV vide précédent à l’aide de la procédure d’écriture NDEF. Le message NDEF TLV est le message obligatoire détecté à l’aide de la procédure de détection NDEF.

Le message NDEF vide PEUT être utilisé pour remplacer un message NDEF non vide.