Aller au contenu
← Tous les articles

Comprendre la boucle anti-collision ISO14443

Florent Perinel
Carte sans contactDESFireISO/IEC14443MifareNFC

La boucle anti-collision est décrite dans la couche 3 de la norme ISO/IEC 14443. Elle permet au PCD d’établir la communication avec le ou les récepteurs présents.

De cette boucle sont issues des informations cruciales comme l’ID, le SAK et l’ATS. Comprendre ce procédé permet d’avoir les idées plus claires par la suite.

Petit rappel

Dans l’article sur la norme ISO/IEC 14443, la séquence d’activation suivante est décrite.

Séquence d'activation

La boucle anti-collision a pour objectif de lister les récepteurs présents dans le champ magnétique et d’activer ces récepteurs l’un après l’autre.

En effet, si plusieurs récepteurs étaient actifs en même temps, le lecteur ne pourrait pas savoir à qui adresser les commandes ou de qui viennent les réponses.

Anti-collision ou pas ?

La première étape est d’identifier si le récepteur gère l’anti-collision. Pour cela on analyse la valeur ATQA ou ATQB. Cette valeur, sur 2 octets contient plusieurs informations dont la taille de l’ID et la gestion ou non de l’anti-collision.

A noter que tous les récepteurs conforment à la norme ISO/IEC 14443 doivent gérer l’anti-collision.

Les bits (en colonne des tableaux) sont affichés du poids fort (16) vers le poids faible (1).

Tableau de bit de ATQA

b16b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1
Taille IDType d’anti-collision

Si l’un des bits 1 à 5 est à “1”, alors l’anti-collision est gérée.

Valeur des bits 7 et 8 de ATQA

b8b7Taille de l’ID
004 octets (ID Simple)
017 octets (ID Double)
1110 octets (ID triple)
11Pas d’utilisation actuelle

Exemples de valeur “ATQA”

MIFARE Classic : “00h 04h“

b16b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1
0000000000000100

L’anti-collision est gérée et l’ID sera de 4 octets.

MIFARE DESFire : “03h 44h“

b16b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1
0000001101000100

L’anti-collision est gérée et l’ID sera de 7 octets.

Étapes de l’anti-collision Type A

Ce schéma illustre une boucle anti-collision sans collision (un seul récepteur dans le champ).

anticollision

L’obtention de l’ID complet peut prendre 1, 2 ou 3 “tours”.

Le “CT” (Cascade Tag) indique que l’ID n’est pas complet et qu’il faudra une boucle supplémentaire. Il vaut “88h“.

Et avec plusieurs PICC ?

Avec plusieurs récepteurs dans le champ, l’anti-collision est jouée jusqu’à ce que chaque récepteur soit connu. Les “ATQ” et “SAK” de chaque récepteur sont stockés dans une pile en mémoire du PCD.

A la suite de la boucle anti-collision, un seul récepteur sera activé avec une commande de sélection “SEL”.

Quand le PCD en aura terminé avec ce récepteur, il pourra envoyer une commande “HALT” qui le déconnectera. Il pourra sélectionner un autre récepteur avec une autre commande de sélection.

La règle est qu’il ne peut y avoir plus d’un récepteur actif pour le PCD.

Quelques exemples de séquence

MIFARE Classic 1k

Ce type de PICC à un ID sur 4 octets. Son ATQA vaut “00h 04h” et son SAK “08h”. Elle n’est pas conforme ISO/IEC 14443-4.

>> 26 (REQA)
<< 04 00 (ATQA)
>> 93 20 (Anti Collision CL1)
<< BA FD 92 9D 48 (ID + CRC)
>> 93 70 BA FD 92 9D 48 BC 6C (Select CL1)
<< 08 B6 DD (SAK + CRC)
ID : BA FD 92 9D
ATQA: 00 04
SAK: 08

MIFARE Classic 4k

Ce type de PICC à un ID sur 4 octets. Son ATQA vaut “00h 02h” et son SAK “18h”. Elle n’est pas conforme ISO/IEC 14443-4.

>> 26 (REQA)
<< 02 00 (ATQA)
>> 93 20 (Anti Collision CL1)
<< 76 13 D0 C1 74 (ID + CRC)
>> 93 70 76 13 D0 C1 74 45 78 (Select CL1)
<< 18 37 CD (SAK + CRC)
ID : 76 13 D0 C1
ATQA: 00 02
SAK: 18

MIFARE Ultralight

Ce type de PICC à un ID sur 7 octets. Son ATQA vaut “00h 44h” et son SAK “00h”. Elle n’est pas conforme ISO/IEC 14443-4.

>> 26 (REQA)
<< 44 00 (ATQA)
>> 93 20 (Anti Collision CL1)
<< 88 04 85 13 1A (CT + ID0 + ID1 + ID2 + CRC)
>> 93 70 88 04 85 13 1A 76 4E (Select CL1)
<< 04 DA 17 (SAK + CRC)
>> 95 20 (Anti Collision CL2)
<< 7A 83 34 84 49 (ID3, ID4, ID5, ID6 + CRC)
>> 95 70 7A 83 34 84 49 0F 01 (Select CL2)
<< 00 FE 51 (SAK + CRC)
ID : 04 85 13 7A 83 34 84
ATQA: 00 44
SAK: 00

NTAG 2013

Ce type de PICC à un ID sur 7 octets. Son ATQA vaut “00h 44h” et son SAK “00h”. Elle n’est pas conforme ISO/IEC 14443-4.

>> 26 (REQA)
<< 44 00 (ATQA)
>> 93 20 (Anti Collision CL1)
<< 88 04 AF 65 46 (CT + ID0 + ID1 + ID2 + CRC)
>> 93 70 88 04 AF 65 46 CA 02 (Select CL1)
<< 04 DA 17 (SAK + CRC)
>> 95 20 (Anti Collision CL2)
<< 62 A4 48 80 0E (ID3, ID4, ID5, ID6 + CRC)
>> 95 70 62 A4 48 80 0E BD 43 (Select CL2)
<< 00 FE 51 (SAK + CRC)
ID : 04 AF 65 62 A4 48 80
ATQA: 00 44
SAK: 00

MIFARE DESFire

Ce type de PICC à un ID sur 7 octets. Son ATQA vaut “03h 44h” et son SAK “20h”. Elle est conforme ISO/IEC 14443-4 et partiellement ISO7816-4.

>> 26 (REQA)
<< 44 03 (ATQA)
>> 93 20 (Anti Collision CL1)
<< 88 04 44 87 4F (CT + ID0 + ID1 + ID2 + CRC)
>> 93 70 88 04 44 87 4F 25 65 (Select CL1)
<< 24 D8 36 (SAK + CRC)
>> 95 20 (Anti Collision CL2)
<< DA 3C 2A 80 4C (ID3, ID4, ID5, ID6 + CRC)
>> 95 70 DA 3C 2A 80 4C ED 9D (Select CL2)
<< 20 FC 70 (SAK + CRC)
>> E0 50 BC A5 (RATS)
<< 06 75 77 81 02 80 02 F0 (ATS)
ID : 04 44 87 DA 3C 2A 80
ATQA: 00 44
SAK: 00
ATS: 06 75 77 81 02 80 02 F0

Smartphone Android

Ce type de récepteur à un ID aléatoire sur 4 octets. Son ATQA vaut “00h 04h” et son SAK “60h”. Il est conforme ISO/IEC 14443-4 et ISO7816-4.

>> 26 (REQA)
<< 04 00 (ATQA)
>> 93 20 (Anti Collision CL1)
<< 08 C1 3E 43 B4 (ID0 + ID1 + ID2 + ID3 + CRC)
>> 93 70 08 C1 3E 43 B4 CA AD (Select CL1)
<< 60 F8 32 (SAK + CRC)
>> E0 50 BC A5 (RATS)
<< 05 75 80 70 02 2A CD (ATS)
ID : 08 C1 3E 43
ATQA: 00 04
SAK: 60
ATS: 05 75 80 70 02 2A CD

Étapes de l’anti-collision Type B

La grande différence avec les récepteurs de type B est que ces récepteurs doivent aussi répondre au type d’application attendu par le PCD.

En effet, lorsque la commande REQB est envoyée, le PCD ajoute un code “AFI” qui permet de filtrer les récepteurs en fonction d’un domaine fonctionnel (transport, identification, médical etc.).

Bien que la valeur “ATQB” et quelques autres commandes diffèrent, c’est là la seule grosse différence.

Conclusion

Sous le terme de “boucle anti-collision” se cache l’un des processus les plus importants de la norme NFC ISO/IEC 14443. C’est cette étape qui permet de traiter la nouvelle problématique que pose le sans contact, par rapport au contact, avoir plusieurs récepteurs dans le même lecteur.

Un projet en tête ?

Discutons de vos enjeux techniques — la première conversation est toujours gratuite.

Faisons connaissance