PARTIE IV. La solution
3. Implémentation
Cette partie présente l’implémentation de la solution précédente au niveau du lecteur et de la carte. Les deux éléments possèdent chacun un composant en logique programmable ; il est ainsi possible de tester notre solution de façon totalement autonome. En effet, tous les tests précédemment réalisés nécessitaient des actions de notre part (enregistrement de signaux, traitement sous Matlab,…) ou du matériel en plus du système sans contact (oscilloscope, bobines de calibrations, …). L’implémentation d’un tel système directement sur carte permet de se rapprocher d’une solution finale pour la détection d’attaques relais.
Dans un système sans contact classique, le lecteur émet une requête et la carte envoie sa réponse après avoir interprété cette requête, voir la figure III-31. Entre la fin de l’émission du lecteur et le début de l’émission de la carte, les normes définissent un certain temps, appelé parfois temps de retournement, permettant à la carte d’interpréter la commande lecteur, de préparer sa réponse,…
Notre contre-mesure a pour objectif final de s’intégrer dans ce temps de retournement de façon à ne pas avoir à modifier les normes actuelles du sans-contact. Le circuit identifiant le top de synchronisation, générant la séquence et le temps aléatoire ainsi que le traitement de ces données devrait être dans un circuit indépendant du circuit interprétant les commandes du lecteur de façon à ne pas perturber le temps de retournement avant la réponse de la carte.
A l’heure actuelle, la contre-mesure remplace la réponse de la carte, la carte envoie la séquence aléatoire comme si cette séquence était la réponse de la carte à la requête du lecteur.
Tr + σ The reader sends a triggering pulse
The card receives the triggering pulse
Reader
Card
Recorded signal T
T T+2(Tr+σ)
2(Tr + σ)
The reader generates the sequence
The card sends the sequence The reader receives
the sequence
Légende:
Tr : propagation time σ: induced delay T shared secret time
1
2
3 4 5
Figure III-31 – Placement de la contre-mesure dans le système sans contact
L’organigramme, voir la figure III-32, montre les différentes étapes et actions du lecteur et de la carte lors d’une séquence de recherche de présence de relais.
Figure III-32 – Organigramme des étapes de l'algorithme implémenté
Lors de cette implémentation, plusieurs données n’ont pas été prises en compte. Dans un premier temps, la séquence à corréler n’est pas envoyée pendant le temps de retournement de la carte. Cela nous laisse plus de temps pour envoyer la séquence voulue et faire les traitements nécessaires avant. Dans un deuxième temps, tout le protocole de cryptographie n’est pas appliqué ici, le lecteur et la carte génèrent chacun une séquence fixe donnée par l’utilisateur.
La figure III-33 permet de voir le rendu de ces différentes étapes sur le signal lui-même afin de mieux comprendre le fonctionnement du système.
Requête lecteur Réponse carte
Requête lecteur Contre-mesure Réponse carte
Requête lecteur Contre-mesure
Système sans contact
Système sans contact avec contre-mesure voulu
Système sans contact avec contre-mesure réalisé
Début
Génération séquence à corréler
Emission d’une trame
Envoi du bit de synchronisation
Début
Bit de synchronisation
reçu?
Génération séquence à envoyer t > T1
t > T2
t > T2 Moyennes bornes
supérieures
Moyennes bornes
inférieures Envoi une
séquence nulle 1
2
3
4
10
11
12
t > T3
t > T5 Calcul des seuils
Récupération des échantillons
Corrélation 5
6
Envoi une séquence nulle
Envoi trame t > T4
Fin Fin
13
14 7
8
Non
Oui Non Oui
Non
Oui Non
Oui Non
Oui Non
Oui
Non Oui
Carte Lecteur
Figure III-33 – Chronogramme de la solution proposée
Chaque numéro sur les figures III-32 et III-33 représente une action à réaliser par le lecteur ou la carte. Chacune de ces actions est indispensable pour que la contremesure fonctionne :
Etape 1 : Cette étape consiste à générer côté lecteur la séquence qui sera corrélée avec celle reçue de la carte. Plusieurs données sont à prendre en compte : la fréquence d’échantillonnage du lecteur, le débit binaire de la carte, le nombre d’octets envoyés par la carte. Dans cette version de la solution, la carte envoie 4 octets soit 32 bits. Le débit binaire de la carte est de 424kbits/s et la fréquence d’échantillonnage du lecteur est de 27,12 MS/s. La séquence envoyée par la carte et reçue par le lecteur compte donc 2048 échantillons. La figure III-34 montre la conversion des octets à la conversion en échantillons par le lecteur.
Figure III-34 – Génération de la séquence à corréler
De plus, il faut que le lecteur génère en plus de la séquence deux séries de ‘0’ permettant le glissement d’un des signaux par rapport à l’autre lors de la corrélation. La séquence générée est la suivante, voir la figure III-35.
Figure III-35 – Séquence générée
Etape 2 : Cette étape concerne l’émission d’une trame par le lecteur. Dans cette version de la solution, le lecteur envoie un REQB selon la norme ISO14443-B en utilisant donc la modulation d’amplitude.
Etape 3 : Cette étape consiste à envoyer le top de synchronisation entre la carte et le lecteur à la fin de la transmission de la requête du lecteur. C’est donc le lecteur qui envoie ce top un temps aléatoire après l’EOF sous la forme d’une modulation de son champ RF.
Etape 4, 5 et 6 : Ces étapes sont abordées dans la section traitant de la démodulation par
Champ RF
Modulation Lecteur
Modulation de charge carte Actions Lecteur
Actions carte
10 12 13 14
2 3 4 5 6 7
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x00 0x00 0x00 0x00
0 0 0 0 0 0 0 0
Hexadécimal
Binaire
Echantillons
donc des valeurs dont la valeur absolue est inférieure à celle trouvée lors de l’étape 4. L’étape 6 consiste à calculer les seuils de la manière décrite précédemment.
Etape 7 : L’étape 7 consiste à échantillonner le signal à la fréquence de 27,12MS/s. Chaque échantillon est comparé, selon s’il est positif ou négatif à la valeur d’un des seuils pour déterminer s’il correspond à un niveau logique ‘1’ ou ’0’.
Etape 8 : l’étape 8 est réalisée par un processeur NIOS intégré au composant FPGA, elle consiste à corréler le signal reçu avec celui généré par le lecteur et à déterminer le délai entre ces deux signaux. Selon la valeur du délai, le système peut alors conclure sur la présence ou on d’un relais.
Etape 10 : Cette première étape est une étape d’attente, la carte est en attente du top de synchronisation provenant du lecteur. La carte n’a aucune action à réaliser en attendant ce bit de démarrage.
Etape 11 : La carte génère de son côté la séquence à envoyer, cette séquence est pour le moment fixée par le développeur.
Etape 12 : Après un temps T2, ce temps correspondant à un temps nécessaire au lecteur pour réaliser l’étape 4, la carte envoie ensuite une séquence nulle. L’envoi d’une séquence nulle par la carte consiste en une modulation de sa charge; l’amplitude du signal est plus faible et le lecteur peut donc faire l’étape 5.
Etape 13 : La carte envoie ensuite la séquence à corréler.
Etape 14 : Cette étape consiste à renvoyer une nouvelle séquence de bits ‘0’ de façon à permettre le glissement lors de la corrélation.