Hack NFC - Proxmark3 : Différence entre versions

De Wiki de Projets IMA
(Partie 1 : Hack des données)
(21/02/2014 : Attente du matériel, poursuite de l'étude des possibilités de sécurisation)
 
(89 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 3 : Ligne 3 :
 
Contexte:
 
Contexte:
  
Les cartes RFID sont de plus en plus utilisées notamment pour les cartes bancaires.
+
La technologie RFID est de plus en plus utilisées, notamment pour les cartes bancaires ou les cartes Monéo.
  
Plus directement, les cartes RFID sont présentes sur le campus de Lille 1, comme
+
Plus directement, les cartes RFID sont présentes sur le campus de Lille 1, pour le paiement des repas au Restaurant Universitaire, ou pour l'ouverture de portes sécurisées.
lors du rechargement des repas de la cantine, ou de l'ouverture des portes
 
par les badges des professeurs.
 
  
Leurs sécurités est donc un enjeu crucial
+
Leurs fiabilité est donc un enjeu crucial. Il existe cependant des techniques de hackage de ces cartes : http://www.youtube.com/watch?v=7BQDgPMF_fo
  
http://www.youtube.com/watch?v=7BQDgPMF_fo
 
  
 
== Objectif : ==
 
== Objectif : ==
  
L'objectif de ce PFE est d'étudier la vulnérabilité de ces cartes sans contacts et de trouver un moyen de les sécuriser.
+
L'objectif de ce PFE est d'étudier la vulnérabilité de ces cartes sans contacts, et de trouver un moyen de renforcer leur sécurité.
  
  
== Description : ==
+
== Ennoncé : ==
  
En utilisant des systèmes Proxmark 3 (http://proxmark3.com/index.html) vous commencerez par une simple copie de carte MiFare. Cela vous permettra de prendre en main l'environnement. Vous travaillerez ensuite sur les différents aspects suivants : - Amélioration des antennes pour permettre la capture de cartes à "longues distance" (entre 2 et 10 m) - Packaging de l'appareil et des nouvelles antennes dans un sac à dos - Description de procédures de mise en oeuvre automatique - Mise en place de contre-mesure Quelques liens : http://bigbrotherawards.eu.org/Le-GIE-cartes-bancaires https://code.google.com/p/readnfccc/source/browse/#svn%2Ftrunk%2FNFCCreditCardTool  
+
En utilisant des systèmes Proxmark 3 (http://proxmark3.com/index.html) vous commencerez par une simple copie de carte MiFare. Cela vous permettra de prendre en main l'environnement. Vous travaillerez ensuite sur les différents aspects suivants : - Amélioration des antennes pour permettre la capture de cartes à "longues distance" (entre 2 et 10 m) - Packaging de l'appareil et des nouvelles antennes dans un sac à dos - Description de procédures de mise en oeuvre automatique - Mise en place de contre-mesure Quelques liens : http://bigbrotherawards.eu.org/Le-GIE-cartes-bancaires https://code.google.com/p/readnfccc/source/browse/#svn%2Ftrunk%2FNFCCreditCardTool
  
= Journal de bord =
+
= Avancement du projet =
  
17/09/2013
+
== 17/09/2013 : Compréhension et recherches sur le sujet ==
  
Discussions avec nos encadrants pour développer les grands enjeux de ce projet.
+
Discussions avec nos encadrants pour comprendre les enjeux du projet.
 +
Prise en main du système Proxmark3, et essais de différents logiciels.
 +
L'utilitaire proxmark3 (Client Software) peut être téléchargé à cette addresse: "proxmark3.com/downloads.html". Il contient les pilotes pour permettre à un système Windows de reconaitre le matériel, ainsi que le logiciel client Proxmark3 qui permet de communiquer avec le périphérique grâce à une invite de commandes.
 
LF = Low Frequency (125 kHz, 132.5 kHz)
 
LF = Low Frequency (125 kHz, 132.5 kHz)
 
HF = High Frequency (13.56 MHz)
 
HF = High Frequency (13.56 MHz)
 
UHF = Ultra High Frequency (860 MHZ, 960 MHz)
 
UHF = Ultra High Frequency (860 MHZ, 960 MHz)
 +
Essais de lecture d'une carte RFID.
  
  
18/09/2013
+
[[Fichier:30.17 euros.png|200px|thumb|right|Figure 1 : Relevé d'une carte Monéo]]
 +
== 04/10/2013 : Lecture d'une carte NFC ==
  
 +
Première lecture d'une carte monéo, grâce à l'antenne HF.
  
 +
Commande "hf mf chk *1 ? t" pour tenter l'acces aux blocs de la carte en utilisant des clefs de base.
 +
Si le secteur X utilise la clef Y, la commande : "hf mf nested X 1 A Y d" permet de cracker l'ensemble des clés de la carte, et de les enregistrer dans un fichier "dumpkeys.bin".
 +
La commande "hf mf dump" permet ensuite de lire l'ensemble des blocs de la carte, et les enregistre dans le fichier "dumpdata.bin".
  
24/09/2013
+
Les données lues peuvent être observées facilement avec le logiciel HxD. Si on veut comparer deux relevés, le logiciel HexCmp sera plus pratique.
  
 +
Vous pouvez voir sur la Figure 1 les données présentes sur la carte Monéo utilisée :
  
  
25/09/2013
+
Les données sont écrites sous forme hexadécimale sur la carte, et sont traduites par le logiciel. Certaines données sont compréhensible, comme le nom ou le numéro d'étudiant, mais la plupart des données sont cryptées.
  
Note : les cartes de cantines sont a utilisé avec l'antenne HF
 
  
Procédure : brancher la proxmark3 sans antenne,
+
== 17/10/2013 : Avancée des recherches et relevés de données d'une carte ==
hw tune
 
puis brancher l'antenne
 
hw tune
 
  
puis hf 14b read (pour une carte du CROUS)
+
Découverte de la commande "hf mf wrbl" permettant d'écrire un bloc de données sur une carte, et de la commande "hf mf restore" permettant de restaurer les données sur une carte à l'aide d'un ancien relevé.
  
Commande pour regarder si des secteurs utilisent la clef du fabriquant : "hf mf chk *1 ? t"
 
  
Si le secteur 0 utilise la clef X, lancer la commande : "hf mf nested 0 1 A X d"
+
[[Fichier:Comparaison_gauche_30,17e_droite_33,32e.png|200px|thumb|left|Figure 2 : Comparaison (30,17€ à gauche, 33,32€ à droite)]]
Cette commande lance une attaque de type "Nested Attack"; Puisqu'on connait une clef (celle du bloc 0 par exemple), cette commande
 
va nous permettre de connaitre les clefs des autres secteurs et donc de découvrir les données de la carte.
 
  
Ensuite pour créer un fichier bin contenant  les data, il faut lancer la commande : "hf mf dump", qui va en associant les clefs aux blocs concernés,
 
créer un fichier contenant les données.
 
  
Pour lire ces datas, il faut utiliser le logiciel HxD
+
Pendant le mois d'octobre, nous avons effectué de nombreux relevés d'une carte Monéo étant utilisée régulièrement pour le paiement de repas.
 +
Nous avons pu effectuer de nombreuses comparaisons comme la suivante, en effectuant un relevé avant et un relevé après le paiement d'un repas de 3.15€.
 +
[[Fichier:Elements modifiés après échange (48 euros 67).png |200px|thumb|right|Figure 3 : Relevé de la carte Monéo, en rouge les octets qui changent systématiquement et en vert ceux susceptibles de changer]]
  
= Partie 1 : Hack des données =
 
  
== Contenu de la carte ==
+
Les symboles surlignés sont ceux qui sont modifiés, on remarque que peu de symboles sont modifiés lors de ce prélèvement.
Voici les données cryptées et non cryptée présentent sur la carte étudiant :
 
  
[[Fichier:30.17 euros.png|200px|thumb|left|texte descriptif]]
+
Comme représenté sur la Figure 3, une dizaine de relevés différents nous a permis de repérer les symboles qui ne sont jamais modifiés, ceux qui le sont parfois (encadrés en vert) et ceux qui le sont toujours (encadrés en rouge).
  
  
  
  
 +
== 6/11/2013  : Réécriture d'une carte NFC ==
  
 +
Recherches sur l'organisation des données sur une carte. Le fichier [[Fichier:MF1ICS50FunctSpec.pdf]] nous a aidé dans cette recherche.
 +
Nous avons compris que chacune de nos cartes est constituée de 16 secteurs de données. Chaque secteur est constitué de 4 blocs, chaque bloc étant lui constitué de 16 paires d'octets.
 +
Sur nos relevés, chaque ligne constitue un bloc.
 +
Le dernier bloc de chaque secteur gère les autorisations d'accès à ce secteur. Il peut être représenté sous la forme suivante:
 +
AA AA AA AA AA AA KK KK KK XX BB BB BB BB BB BB ou les 12 premiers octets constituent la clé A, les 6 suivants les conditions d'accès et les 12 derniers la clé B.
 +
L'accès à chaque secteur est donc contrôlé par deux clefs, et les conditions d'accès qui définissent si un bloc peut être lu, s'il peut être écrit, et avec quelle clé. L'interprétation des 6 octets de conditions d'accès peut être faite grâce au logiciel MiFaRe Acces Conditions téléchargeable ici: http://www.sendspace.com/file/o3frc9
 +
Sur une carte, tous les blocs dont l'adresse se termine par 3,7,B ou F sont donc réservés aux droits d'accès. Il est donc nécessaire de porter une attention particulière à la modification de ces blocs, car en fonction des autorisations attribuées un secteur peut être interdit en lecture, et dans ce cas il ne sera plus du tout utilisable, et ni modifiable.
  
 +
D'autre part il est important de noter que les 12 premiers octets de chaque carte représentent l'identifiant de la carte, (4E 46 7E 16 60 88 sur la carte utilisée ici) et qu'ils ne sont pas modifiables (mis à part pour certaines cartes NFC chinoise destinées à ce genre d'opération).
  
 +
Après avoir compris tout cela nous avons pu copier les données de la carte Monéo sur une autre carte NFC, exactement à l'identique, mis à part pour l'identifiant de la carte. Cependant, lors d'un essai de paiement avec cette autre carte, il y a eu une erreur, la carte n'étant pas reconnue du fait de son identifiant.
  
 +
== 26/11/2013 : Espionnage d'échanges RFID ==
  
 +
Après avoir cherché pendant plusieurs heures à utiliser la commande "hf mf sniff", qui ne s'est pas révélée utile finalement, nous avons trouvé comment "écouter" les données échangées entre une carte et un lecteur, à l'aide de la commande "hf 14a snoop".
  
 +
Pour ce faire on a utilisé les commandes :
  
 +
-"hf 14a snoop" pour sniffer et enregistrer l'échange'
  
 +
-"hf 14a list" pour avoir accès à l'enregistrement
  
 +
proxmark3> hf 14a snoop
 +
#db# cancelled by button
 +
#db# maxDataLen=3, Uart.state=0, Uart.byteCnt=1
 +
#db# Uart.byteCntMax=20, traceLen=12d, Uart.output[0]
 +
proxmark3> hf 14a list
 +
recorded activity:
 +
ETU    :rssi: who bytes
 +
+      0:  0: TAG 02
 +
+ 152797:  0: TAG 00!
 +
+ 289126:  0: TAG 02
 +
+ 147123:  0: TAG 01
 +
+ 147462:  0: TAG 05!
 +
+ 147290:  0: TAG 02
 +
+ 441954:  0: TAG 02
 +
+ 441954:  0: TAG 02
 +
+ 531882:  0: TAG 04  00
 +
+    746:  0: TAG 4e  46  7e  16  60
 +
+  2048:  0: TAG 08  b6  dd
 +
+ 120402:  0: TAG 02
 +
+  21846:  0: TAG 04  00
 +
+    744:  0: TAG 4e  46  7e  16  60
 +
+  2052:  0: TAG 08  b6  dd
 +
+ 142234:  0: TAG 04  00
 +
+    746:  0: TAG 4e  46  7e  16  60
 +
+  2048:  0: TAG 08  b6  dd
 +
+ 142220:    :    26
 +
+  4752:    :    26
 +
+ 142579:    :    26
 +
+  4751:    :    26
 +
+ 142578:    :    26
 +
+  4750:    :    26
 +
+ 142576:    :    26
 +
+  4752:    :    26
 +
+ 142579:    :    26
 +
+  4751:    :    26
  
 +
ATQA+UID+SAK = 0004 4e467e16 08 : Nous retrouvons donc l'UID de la carte NFC qui vaut 4e467e16.
  
 +
L'elementary time unit (ETU) est la durée nominale des bits utilisés dans la trame.
  
 +
Le "rssi" est l'intensité du signal. Il reste ici à 0. Nous avons contacté des développeurs de Proxmark qui nous ont confirmé que c'était le cas pour eux aussi, et qu'il ne fallait pas en tenir compte.
  
 +
Les échanges au début de l'enregistrement ne signifient rien de particulier, ils ne sont pas à prendre en compte.
  
 +
Dans ce cas, l'antenne de la Proxmark était placée à moins de 5 cm de l'échange. Notre but est de pouvoir faire ce genre de relevés à au moins 1 m.
  
 +
== 6/12/2013 : Etude du circuit de la Proxmark ==
  
 +
Dans le but d'augmenter la portée du lecteur de cartes, nous nous sommes intéressés à son fonctionnement.
  
 +
Nous avons pu en déduire le schéma suivant :
  
 +
[[Fichier:SimplSchemaProxmark.png|400px|thumb|left| Figure 4 :  Représentation simplifiée du fonctionnement de la Proxmark]]
  
 +
Le FPGA de la Proxmark exécute entre autres tous les algorithmes de crack.
  
 +
Le FPGA transmet le signal à émettre, aux circuits amplificateurs d'émission, par les PIN PWR_OE1, PWR_OE2, PWR_OE3 et PWR_OE4. La carte comporte deux circuits amplificateurs, notés HF et BF, suivant le type de fréquence pour lequel chacun est utilisé
  
  
  
 +
Vous pourrez voir ci-contre le schéma des circuits amplificateurs :
  
 +
[[Fichier:AmpliProxmark.png|400px|thumb|right| Figure 5 :  Circuits amplificateurs internes à la Proxmark]]
  
  
  
 +
Le circuit amplificateur BF se trouve dans la partie haute du schéma, encadré en rouge, tandis que le circuit amplificateur HF est encadré en bleu.
  
== Comparaison après rechargement ==
+
Les 8 tampons d'émission présents sur le schéma sont chacun assimilables à une capacité C0. Des recherches dans la datasheet du composant nous ont permis de connaître la valeur de cette capacité, qui est de 8pF.
  
Ici la comparaison des données de la carte avant et après rechargement.
 
  
On observe que seules 3 lignes sont modifiées
+
L'impédance de sortie de la Proxmark peut donc être simplifie de la façon suivante :
 +
 
 +
Cadre rouge : on a 4 capacités induites par les tampons d'émission, donc 4 * C0 = 4*8 pF = 32 pF et une résistance de 33 Ohms
 +
 
 +
Cadre bleu : on a 4 capacités induites par les tampons d'émission, donc 3 * C0 = 3*8 pF = 24 pF et une résistance de 33 Ohms
 +
 
 +
Cadre vert : on a 4 capacités induites par les tampons d'émission, donc 1 * C0 = 1*8 pF = 8 pF et une résistance de 10 KOhms
 +
 
 +
En mettant en parallèle les impédances de ces trois parties du circuit, on peut déduire la valeur de l'impédance totale de sortie de la Proxmark, qui est de 21–208j.
 +
 
 +
 
 +
== 16/12/2013 : Bilan de liaison et définition des expériences à réaliser pour la caractérisation du système ==
 +
 
 +
Nous avons réalisé un premier bilan de liaison du système, peu précis, en attente des expériences à venir.
 +
 
 +
[[Fichier:BilanLiaison.png|400px|thumb|right| Figure 6 : Premier bilan de liaison]]
 +
 
 +
Sur ce bilan, on retrouve en rouge le chemin d'émission et en vert le chemin de réception.
 +
 
 +
Nous avons pris contact avec M. Royes, représentant de la société Rysc Corp créatrice de notre antenne HF. D'après lui la société a conçu une antenne compatible avec la Proxmark3, mais sans en effectuer de relevés de caractéristiques.
 +
 
 +
Nous avons aussi pris rendez-vous avec M. Ducourneau, Responsable de la Plate-Forme Electronique, Electrotechnique, Instrumentation (EEI) de Polytech, afin de définir les expériences à effectuer pour la caractérisation de l'antenne fournie et le dimensionnement de l'amplificateur.
 +
 
 +
Nous avons alors défini les expériences à réaliser :
 +
 
 +
Expérience prévue avec une antenne :
 +
 
 +
=> Mesure de l'intensité traversant l'antenne.
 +
 
 +
=> Mesure du coefficient de réflexion S(1,1), à l'analyseur de réseau vectoriel avant amplification puis après amplification.
 +
Cette étape est nécessaire car à 13,56 Mhz aucune antenne de petite taille n'est vraiment adaptée. Le but du projetétant de dissimuler le système, l'antenne ne devra pas dépasser 50 cm. Il faut donc partir du principe que quelque soit l'antenne, elle ne pourra pas être adaptée. L'idée est de mesurer son coefficient de réflexion à 13,56 Mhz, pour s'assurer que l'antenne conçue ne rejette pas la plus grande partie du signal.
 +
Si ce n'est pas le cas, il faudra s'intéresser à une antenne patch, plus directive et de plus grande portée.
 +
 
 +
Expérience prévue avec deux antennes (identiques) :
 +
 
 +
=> Mesure du gain : elle nous permettra de calculer la puissance P1 à la sortie de l'antenne afin de compléter notre bilan de liaison.
 +
 
 +
=> Mesure des pertes de 0 à 1,5 m, avec un pas de 0,10 m. Cela nous permettra de quantifier les pertes dans l'air.
 +
 
 +
Nous avons à partir de là pu définir le matériel à commander pour réaliser ces expériences.
 +
 
 +
== 06/01/2014 : Bilan de liaison global du système ==
 +
 
 +
[[Fichier:BL.png|500px|thumb|left|Figure 7 : Bilan de liaison de la solution proposée]]
 +
 
 +
Ce bilan devait être confirmé (ou non) après la réalisation des expériences prévues.
 +
 
 +
Le raisonnement suivant concerne les puissances en Watt.
 +
 
 +
En rouge on retrouve le chemin d'émission. On a une puissance P0 en sortie de la Proxmark3.
 +
 
 +
D'après les utilisateurs elle est de 200 mW, nous n'avons pas pu la déterminer car on a pas encore reçu les embouts MQ172, donc nous avons fixé P0 = 0,2 W,
 +
Ensuite nous avons déterminé que le gain de l'amplificateur devait valoir 16 dB (soit un gain de 40). Donc après le système d'émission on retrouve une puissance P1 tel que :
 +
P1 = P0 * Gain Ampli = 0,2 W * 40 = 8 W.
 +
Ensuite le signal d'émission traverse l'antenne, on a fixé le rendement de l'antenne à 0,30, en sachant qu'on utilise notre antenne qui est accordée à 13,56 Mhz. Sinon on aurait fixé le rendement à 20 / 25% ce qui est la norme pour la plupart des antennes patch s, non accordées, à cette fréquence.
 +
P2 vaut donc 2,4 W.
 +
 
 +
Ensuite pour calculer P3, la puissance qui atteint la carte NFC, on utilise la formule suivante :
 +
 
 +
P3=P2-P2*((4*π*distance*Fréquence)/célérité)^2=1,3 W
 +
 
 +
en prenant une distance de 1 mètre.
 +
 
 +
En fixant le rendement de la carte NFC à 0.8, on trouve une puissance émise de la carte P4 de 1 W.
 +
En utilisant la même formule de perte dans l'air, que dans le cas de l'émission, on retrouve une puissance de réception P5 = 0,77 W, qui arrive au niveau de l'antenne.
 +
A l'entrée de l'amplificateur faible bruit on retrouve alors une puissance P6 = 0,023 W.
 +
Pour retrouver une puissance de réception permettant une détection par la Proxmark3 on suppose qu'il faut la même puissance d'émission, soit 0,2 W, même si en pratique on se doute que si la puissance de réception est bien plus faible il n'y aura pas de problèmes.
 +
On conclut donc que notre amplificateur faible bruit doit avoir un gain de 10 afin d'obtenir une puissance de réception de 0,230 W à l'entrée de la Proxmark3.
 +
Il devra aussi contenir un filtre passe-bande à 13,56 MHz afin de ne laisser passer que le signal utile et de ne pas garder le bruit
 +
 
 +
== 20/01/2014 : Etude de la chaîne d'émission ==
 +
 
 +
Le signal de sortie de la Proxmark étant d'environ 0,2 W, nous aimerions l'amplifier de façon à obtenir un signal plus proche de 7,5 W.
 +
Pour cela, nous avons pensé à modifier si possible la valeur d'un registre du FPGA qui permettrait de gérer la puissance du signal de sortie. Cependant, en parcourant les différents fichiers du programme FPGA, nous n'avons pas trouvé de tel registre.
 +
 
 +
Pour l'adaptation d'impédance, nous avons pensé à mettre en amont, deux amplificateurs opérationnels de type LF 357 :
 +
Cependant en simulant sur Multisim, on observe que l'amplitude du signal de sortie est très faible : 2 mV, par rapport au 5V d'entrée, on a une division par 2500 de l'entrée.
 +
Ici la simulation montre ses limites, en réalité le problème est le Slew Rate.
 +
Même si cet amplificateur opérationnel est censé fonctionné jusqu'à 20 Mhz, dans le meilleur des cas, son Slew Rate est de 50V/us, d'après sa datasheet.
 +
Or nous travaillons à 13,56 Mhz, dans le cas où durant la demi-période, notre signal va de 0 à 5V, on va de 0 à 1 V en t = 1/(2*13,56Mhz*5)=7,4 ns.
 +
Cette performance est beaucoup trop élevée pour le LF357. En effet, à cette fréquence il est difficile d'obtenir un très bon signal en sortie d'AOP.
 +
De plus, plus le circuit comporte d'éléments, plus le signal est dégradé à haute fréquence.
 +
Comme la Proxmark3 est composée de portes logiques, l'impédance n'est pas élevée et donc on peut justifier le fait de ne pas utiliser de circuit d'adaptation.
 +
C'est pourquoi nous n'allons pas utiliser de circuit d'adaptation d'impédance dans notre chaîne d'émission, mais simplement un amplificateur d'un gain de 40, déterminé suite au bilan de liaison.
 +
 
 +
Après avoir essayé et étudié différents circuits d'amplifications, nous avons conclu que puisque la sortie en tension de la Proxmark était de l'ordre du Volt, il n'était pas nécessaire d'amplifier en tension, et donc nous nous sommes concentré sur un amplificateur en courant.
 +
Inventé par Bell en 1953, le transistor Darlington est la combinaison de deux transistors bipolaires de même type (tous deux NPN ou tous deux PNP), résultant en un composant hybride qui a encore des caractéristiques de transistor. Ces deux transistors peuvent être intégrés dans un même boîtier. Le gain en courant du Darlington est égal au produit des gains de chaque transistor. Le montage est le suivant : les collecteurs sont communs et correspondent au collecteur du Darlington ; l'émetteur du transistor de commande est relié à la base du transistor de sortie ; la base du transistor de commande et l'émetteur du transistor de sortie correspondent respectivement à la base et à l'émetteur du Darlington1
 +
L'avantage dans notre application est que le gain du premier transistor multiplié par le gain du deuxième nous permet d'obtenir un grand gain.
 +
Une façon d'obtenir un grand gain en courant à partir d'un amplificateur classe B type push-pull est d'utiliser des paires de Darlington à la place de transistors seuls et c'est ce que nous allons dimensionner.
 +
 
 +
Voici notre montage Darlington Push-Pull :
 +
[[Fichier:Darlington pushpull.png|400px|thumb|right|Figure 8 : Circuit chaîne d'émission]]
 +
 
 +
Nous prendrons le cas des transistors NPN 2N2222A pour l'analyse :
 +
 
 +
Puissance d'alimentation VCC = 15 V.
 +
Résistance de charge : RL = 15 Ohms, tolérance 10 %
 +
Puissance minimum : PL = 7 - 8 W (déterminé par bilan de liaison).
 +
 
 +
Calcul du cas le plus défavorable d'intensité à fournir pour délivrer la puissance spécifiée :
 +
 
 +
IL = rac (2 * PL / RL ) = 1,67 A
 +
VL= √(2*RL*PL)=10 V 
 +
 
 +
Supposons que le courant du collecteur à travers  le transistor Q1 est ILpeak.
 +
A partir de sa datasheet on cherche le gain hFE1min, VBE1on et VCE1sat.
 +
 
 +
Note : Hfe n'était pas spécifié à cette valeur, nous supposerons qu'il a une valeur inférieure à celle spécifiée à 500 mA.
 +
hFE1min = 20,  VCe1sat = 1,3 V, VBE1on = 2.0 V
 +
 
 +
hFE1min = 20, VBE1on = 1,
 +
 
 +
IB1peak=Ilpeak/(hFE1 min⁡〖+ 1〗 )  =  79mA
 +
 
 +
Supposons que IB1peak est environ égal au courant collecteur de Q3,
 +
IC2peak = IB1peak
 +
 
 +
Pour le 2N2222A à IC2peak = 40 mA,
 +
 
 +
VB2sat = 1V, hFE2min = 100, VCE2sat = 0,25 V
 +
 
 +
Note : Hfe n'était pas spécifié à 50 mA, nous l'avons fixé en fonction de la valeur spécifiée à 150  mA.
 +
 
 +
Calcul du courant de base de Q2
 +
IB2peak=IB1peak/(hFE2 min⁡〖+ 1〗 )= 782 uA ) Ce courant doit être fournie à travers Rb
 +
Calcul de la tension de base de Q3 :
 +
Specification à 5% d'une valeur pour la résistance à l'émetteur : RE = 1 Ohm
 +
REmax = RE.1,05 ; REmin = RE. 0,95
 +
VBpeak = ILpeak * ( REmax + RLmax ) + VBE1on + VBE2sat =  13.821  V
 +
 
 +
On trouve donc la valeur de Rb, qui est R1 dans notre schematic :
 +
 
 +
RB=((VCC-VBpeak)/IB2peak)/1.05 =  718 Ohms
 +
 
 +
 
 +
Optimisation :
 +
Pour 13,56 Mhz, nous choisissons de placer une capacité de 100 nF à l'entrée du circuit, c'est la norme pour les circuits en Haute Fréquence.
 +
 
 +
Voici les résultats de notre circuit de type Darlington Push-Pull :
 +
 
 +
[[Fichier:Simudar.png|500px|thumb|left|Figure 9 : Tensions d'entrée et de sortie du montage Darlington Push-Pull]]
 +
 
 +
En bleu on a le signal d'entrée, en rouge celui de sorti.
 +
On observe que le gain en tension est environ égal à 1, et c'est ce que nous voulions, puisqu'on veut concevoir un amplificateur en courant avec un gain de 40.
 +
 
 +
 
 +
[[Fichier:gainint.png|605px|thumb|right| Figure 10 : Mesures des courants d’entrée et sortie du montage Darlington Push-Pull]]
 +
 
 +
On injecte environ 40 mA en entrée (à l'aide d'une transformateur Thévenin/Norton), et on observe 1,6 A en sortie.
 +
D'où le gain en intensité : (Is )/Ie= 1,6/(40*〖10〗^(-3)  )=40
 +
On observe bien un gain de 40 pour cette amplificateur en courant.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
== 27/01/2014 : Etude de la chaîne de réception ==
 +
 
 +
Pour la chaîne de retour de notre système, nous avons prévu la conception d'un amplificateur faible bruit. Un amplificateur faible bruit (ou LNA en anglais pour Low Noise Amplifier) est un dispositif électronique chargé de mettre en forme des faibles signaux provenant d'une antenne. On le place généralement à proximité de la chaîne de traitement des informations reçues de manière à minimiser les pertes en ligne. On le nomme parfois préamplificateur. Les amplificateurs sont souvent utilisés pour les systèmes qui, comme le notre, travaillent à des fréquences élevées.
 +
 
 +
Suivant les fréquences, l'élément actif d'un amplificateur d'entrée à faible bruit varie : le FET est le moins bruyant jusqu'à quelques dizaines de mégahertz, suivi par le transistor bipolaire (particulièrement SiGe), puis de nouveau le FET en GaAs au-delà de quelques gigahertz.
 +
 
 +
Notre amplificateur faible bruit sera composé d'un transistor permettant d'amplifier la tension de retour et combiné avec un filtre passe bande.
 +
 
 +
 
 +
 
 +
[[Fichier:Amplidoc.png|300px|thumb|left|Figure 11 : Amplificateur chaîne de réception]]
 +
 
 +
[[Fichier:FiltrePB.png|600px|thumb|right|Figure 12 : Filtre passe-bande à 13,56 Mhz]]
 +
 
 +
[[Fichier:simulineaire.png|500px|thumb|right|Figure 13 : Performances du filtre passe bande dans la zone de 1 à 30Mhz]]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
On remarque qu’à la fréquence de 13,56 Mhz notre filtre à un gain très proche de 1. Ce gain est très nettement inférieur de part et d'autre, ce qui nous permet de ne renvoyer vers la Proxmark que la fréquence voulue (13,56 Mhz environ).
 +
 
 +
 
 +
[[Fichier:Simu.png|500px|thumb|left|Figure 14 : Simulation Multisim de notre Amplificateur de réception]]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
On observe que pour une entrée d'amplitude 0,4V, on a environ un gain de 10, soit 4V en sortie. Ce gain de 10 est nécessaire pour permettre la détection du signal de retour à travers la Proxmark3. Sa valeur a été déduite du bilan de liaison effectué précédemment.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
== 03/02/2014 : Etude des possibilités de sécurisation ==
 +
 
 +
A partir de cette date nous commençons à rechercher les nouveautés concernant la sécurité NFC.
 +
L'enjeu étant de savoir quels sont les possibilités à l'heure d'aujourd'hui, pour empêcher les hackers de lire le contenu de nos cartes à distance.
 +
Une solution bien connu est celle de la cage de Faraday
 +
 
 +
== 04/02/2014 : Simulation de la solution et optimisation ==
 +
 
 +
Comme la commande des embouts pour connecter les cartes (embouts MQ172, câble blindé,..) , ne sont pas encore arrivés,
 +
Nous nous contenterons cette semaine de simuler notre système sur Multisim, et ceci afin d'obtenir les gains nécessaires à partir du bilan de liaison.
 +
 
 +
Puis nous allons tout de même commencer la création des circuits,
 +
même si la grande contrainte de la fin de notre PFE est de recevoir les connecteurs pour brancher notre solution complète.
 +
 
 +
== 17/02/2014 : Réalisation des PCBs, de l'antenne et des circuits ==
 +
 
 +
Cette semaine nous avons réalisé les PCBs sous altium, de notre solution de chaîne d'émission et de réception.
 +
Cependant la machine qui réalise les circuits réels est cassée, c'est pourquoi on ne peut pas effectuer les tests.
 +
En effet, à la fréquence de 13,56 Mhz, on ne peut pas travailler sur des boards habituels car le signal serait dégradé.
 +
 
 +
Nous avons fait quelques expériences à l'aide de plaques à essais, cependant ces plaques ne sont pas appropriées pour notre travail en hautes fréquences. Nous avons donc travaillé à la conception de circuits imprimés, avec le logiciel Altium Designer.
 +
 
 +
Conception des Schematics :
 +
Etant donné que nous n’avions pas pu faire les mesures exactes des courants et puissances d’entrée et de sortie de la carte Proxmark, nous avons réalisé deux schémas d’amplificateurs. En plus du Darlington en push-pull, nous avons aussi dimensionné un ampli de plus faible puissance ne comportant qu'un seul transistor 2N2222A.
 +
 
 +
Pour pouvoir créer les cartes électroniques, il était nécessaire de créer des PCB sous Altium Designer. Nous avons donc commencé par réaliser des schémas électroniques, comme suit :
 +
 
 +
[[Fichier:1TrCircuit.JPG|550px|thumb|left| Figure 15 : Amplificateur de courant à faible puissance]]
 +
 
 +
[[Fichier:DarlingtonCircuit.JPG|540px|thumb|right| Figure 16 : Montage de Darlington PushPull]]
 +
 
 +
[[Fichier:LNACircuit.JPG|560px|thumb|left| Figure 17 : Amplificateur faible bruit]]
 +
 
 +
Pour connecter les entrées et sorties de ces circuits, nous avions prévu d’utiliser des connecteurs du fabriquant AMP, disponibles au magasin électronique de l’école. Ces connecteurs étant différents de ceux présents dans les librairies du logiciel, nous avons dû les ajouter. Nous avons pour cela cherché sur internet des librairies contenant ces composants, mais sans succès. Finalement nous avons créé une librairie contenant trois connecteurs AMP : 1 à 2x2, 1 à 2x4 et 1 à 2x5 broches. Nous avons pour cela dû créer la librairie Schematic. Vous pourrez voir le schéma d’un composant ci-après.
 +
 
 +
[[Fichier:Schlib.PNG|350px|thumb|left| Figure 18 : Création du Schématic d’un connecteur AMP 2x5]]
 +
 
 +
Nous avons ensuite créé la librairie PCB, en utilisant les dimensions disponibles dans les spécifications techniques des connecteurs AMP.
 +
 
 +
[[Fichier:PcbLib.PNG|350px|thumb|right| Figure 19 : Création de l'emprunte PCB d’un connecteur AMP 2x5]]
 +
 
 +
Ceci étant fait, nous avons pu créer les PCB des cartes électroniques. Nous avons dû pour cela router les cartes au mieux, en raccourcissant les pistes au maximum, et en évitant les détails trop minutieux, comme les angles droits et les pistes ou pastilles trop fines, qui risqueraient de ne pas être propres après la fabrication de la carte. De plus nous avons ajouté sur chaque PCB un plan de masse, afin d’avoir une meilleure isolation des différents signaux parcourant la carte. Nous avons aussi dû respecter plusieurs contraintes pour la création de ces PCB, comme la largeur des pistes, qui devait être au minimum de 80mil, et la taille des trous et des pastilles de 24mil et 80mil. Vous pouvez voir ci-dessous les trois PCB créés.
 +
 
 +
Nous avons eu plusieurs difficultés par rapport aux contraintes de dimensions des pistes, pastilles et trous des PCB, et étant donné les gabarits de certains composants.
 +
Nous avons pu imprimer ces PCB en noir et blanc et à l’échelle réelle, en ne prenant en compte que les pistes, les pastilles et les plans de masses, (donc en ne prenant pas en compte les composants). De plus, lors de cette étape, il est important d’imprimer les PCB en miroir, c'est-à-dire retournés par rapport à un axe vertical.
 +
 
 +
Nous avons ainsi pu commencer la réalisation des circuits imprimés. Nous avons donc passé la plaque de circuit imprimé aux rayons UV puis au révélateur. Nous avons obtenu le résultat suivant :
 +
[[Fichier:PlaqueCircuit.jpg|400px|thumb|left| Figure 20 : Circuit imprimé révélé]]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Après la révélation le circuit aurait dû être gravé au perchlorure de fer. Cependant, la graveuse à perchlorure étant endommagée, nous n’avons pas pu procéder à la gravure de nos cartes.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
== 21/02/2014 : Attente du matériel, poursuite de l'étude des possibilités de sécurisation ==
 +
 
 +
En dépit de notre attente nous n'avons pas vu arriver le matériel commandé. Désormais nous savons que lorsqu'un projet mêle software et hardware, il faut s'y prendre à l'avance pour préparer la partie Hardware, car elle réclame en général beaucoup plus de matériel que la partie Software.
 +
 
 +
D'autre part nos recherches concernant les possibilités de sécurisation ont progressé.
 +
 
 +
Nous avons notamment pu découvrir plusieurs solutions comme : les cages de Faraday et le blindage électromagnétique (à l'aide d'une feuille de cuivre ou d'aluminium), l'ajout d'un interrupteur connecté à l'étiquette, solution plus coûteuse, l'utilisation d'une cryptographie plus évoluée, mais plus consommatrice en énergie, ou l'utilisation de smartphones NFC, qui permet une consommation d'énergie assez importante, bien que cette solution puisse être encore plus fragile étant donné les multiples possibilités de hackage d'un smartphone.
 +
 
 +
= Documentation =
 +
 
 +
Analyse des données :
 +
 
 +
[http://www.irisa.fr/vertecs/Equipe/Rusu/FME02/cepstechspecv2.2.pdf [CEPS Technical Specification]]
 +
 
 +
Circuit Proxmark3
 +
 
 +
[http://www.proxmark.org/files/]

Version actuelle datée du 4 mars 2014 à 18:14

Présentation

Contexte:

La technologie RFID est de plus en plus utilisées, notamment pour les cartes bancaires ou les cartes Monéo.

Plus directement, les cartes RFID sont présentes sur le campus de Lille 1, pour le paiement des repas au Restaurant Universitaire, ou pour l'ouverture de portes sécurisées.

Leurs fiabilité est donc un enjeu crucial. Il existe cependant des techniques de hackage de ces cartes : http://www.youtube.com/watch?v=7BQDgPMF_fo


Objectif :

L'objectif de ce PFE est d'étudier la vulnérabilité de ces cartes sans contacts, et de trouver un moyen de renforcer leur sécurité.


Ennoncé :

En utilisant des systèmes Proxmark 3 (http://proxmark3.com/index.html) vous commencerez par une simple copie de carte MiFare. Cela vous permettra de prendre en main l'environnement. Vous travaillerez ensuite sur les différents aspects suivants : - Amélioration des antennes pour permettre la capture de cartes à "longues distance" (entre 2 et 10 m) - Packaging de l'appareil et des nouvelles antennes dans un sac à dos - Description de procédures de mise en oeuvre automatique - Mise en place de contre-mesure Quelques liens : http://bigbrotherawards.eu.org/Le-GIE-cartes-bancaires https://code.google.com/p/readnfccc/source/browse/#svn%2Ftrunk%2FNFCCreditCardTool

Avancement du projet

17/09/2013 : Compréhension et recherches sur le sujet

Discussions avec nos encadrants pour comprendre les enjeux du projet. Prise en main du système Proxmark3, et essais de différents logiciels. L'utilitaire proxmark3 (Client Software) peut être téléchargé à cette addresse: "proxmark3.com/downloads.html". Il contient les pilotes pour permettre à un système Windows de reconaitre le matériel, ainsi que le logiciel client Proxmark3 qui permet de communiquer avec le périphérique grâce à une invite de commandes. LF = Low Frequency (125 kHz, 132.5 kHz) HF = High Frequency (13.56 MHz) UHF = Ultra High Frequency (860 MHZ, 960 MHz) Essais de lecture d'une carte RFID.


Figure 1 : Relevé d'une carte Monéo

04/10/2013 : Lecture d'une carte NFC

Première lecture d'une carte monéo, grâce à l'antenne HF.

Commande "hf mf chk *1 ? t" pour tenter l'acces aux blocs de la carte en utilisant des clefs de base. Si le secteur X utilise la clef Y, la commande : "hf mf nested X 1 A Y d" permet de cracker l'ensemble des clés de la carte, et de les enregistrer dans un fichier "dumpkeys.bin". La commande "hf mf dump" permet ensuite de lire l'ensemble des blocs de la carte, et les enregistre dans le fichier "dumpdata.bin".

Les données lues peuvent être observées facilement avec le logiciel HxD. Si on veut comparer deux relevés, le logiciel HexCmp sera plus pratique.

Vous pouvez voir sur la Figure 1 les données présentes sur la carte Monéo utilisée :


Les données sont écrites sous forme hexadécimale sur la carte, et sont traduites par le logiciel. Certaines données sont compréhensible, comme le nom ou le numéro d'étudiant, mais la plupart des données sont cryptées.


17/10/2013 : Avancée des recherches et relevés de données d'une carte

Découverte de la commande "hf mf wrbl" permettant d'écrire un bloc de données sur une carte, et de la commande "hf mf restore" permettant de restaurer les données sur une carte à l'aide d'un ancien relevé.


Figure 2 : Comparaison (30,17€ à gauche, 33,32€ à droite)


Pendant le mois d'octobre, nous avons effectué de nombreux relevés d'une carte Monéo étant utilisée régulièrement pour le paiement de repas. Nous avons pu effectuer de nombreuses comparaisons comme la suivante, en effectuant un relevé avant et un relevé après le paiement d'un repas de 3.15€.

Figure 3 : Relevé de la carte Monéo, en rouge les octets qui changent systématiquement et en vert ceux susceptibles de changer


Les symboles surlignés sont ceux qui sont modifiés, on remarque que peu de symboles sont modifiés lors de ce prélèvement.

Comme représenté sur la Figure 3, une dizaine de relevés différents nous a permis de repérer les symboles qui ne sont jamais modifiés, ceux qui le sont parfois (encadrés en vert) et ceux qui le sont toujours (encadrés en rouge).



6/11/2013  : Réécriture d'une carte NFC

Recherches sur l'organisation des données sur une carte. Le fichier Fichier:MF1ICS50FunctSpec.pdf nous a aidé dans cette recherche. Nous avons compris que chacune de nos cartes est constituée de 16 secteurs de données. Chaque secteur est constitué de 4 blocs, chaque bloc étant lui constitué de 16 paires d'octets. Sur nos relevés, chaque ligne constitue un bloc. Le dernier bloc de chaque secteur gère les autorisations d'accès à ce secteur. Il peut être représenté sous la forme suivante: AA AA AA AA AA AA KK KK KK XX BB BB BB BB BB BB ou les 12 premiers octets constituent la clé A, les 6 suivants les conditions d'accès et les 12 derniers la clé B. L'accès à chaque secteur est donc contrôlé par deux clefs, et les conditions d'accès qui définissent si un bloc peut être lu, s'il peut être écrit, et avec quelle clé. L'interprétation des 6 octets de conditions d'accès peut être faite grâce au logiciel MiFaRe Acces Conditions téléchargeable ici: http://www.sendspace.com/file/o3frc9 Sur une carte, tous les blocs dont l'adresse se termine par 3,7,B ou F sont donc réservés aux droits d'accès. Il est donc nécessaire de porter une attention particulière à la modification de ces blocs, car en fonction des autorisations attribuées un secteur peut être interdit en lecture, et dans ce cas il ne sera plus du tout utilisable, et ni modifiable.

D'autre part il est important de noter que les 12 premiers octets de chaque carte représentent l'identifiant de la carte, (4E 46 7E 16 60 88 sur la carte utilisée ici) et qu'ils ne sont pas modifiables (mis à part pour certaines cartes NFC chinoise destinées à ce genre d'opération).

Après avoir compris tout cela nous avons pu copier les données de la carte Monéo sur une autre carte NFC, exactement à l'identique, mis à part pour l'identifiant de la carte. Cependant, lors d'un essai de paiement avec cette autre carte, il y a eu une erreur, la carte n'étant pas reconnue du fait de son identifiant.

26/11/2013 : Espionnage d'échanges RFID

Après avoir cherché pendant plusieurs heures à utiliser la commande "hf mf sniff", qui ne s'est pas révélée utile finalement, nous avons trouvé comment "écouter" les données échangées entre une carte et un lecteur, à l'aide de la commande "hf 14a snoop".

Pour ce faire on a utilisé les commandes :

-"hf 14a snoop" pour sniffer et enregistrer l'échange'

-"hf 14a list" pour avoir accès à l'enregistrement

proxmark3> hf 14a snoop

  1. db# cancelled by button
  2. db# maxDataLen=3, Uart.state=0, Uart.byteCnt=1
  3. db# Uart.byteCntMax=20, traceLen=12d, Uart.output[0]

proxmark3> hf 14a list recorded activity:

ETU     :rssi: who bytes
+      0:   0: TAG 02
+ 152797:   0: TAG 00!
+ 289126:   0: TAG 02
+ 147123:   0: TAG 01
+ 147462:   0: TAG 05!
+ 147290:   0: TAG 02
+ 441954:   0: TAG 02
+ 441954:   0: TAG 02
+ 531882:   0: TAG 04  00
+    746:   0: TAG 4e  46  7e  16  60
+   2048:   0: TAG 08  b6  dd
+ 120402:   0: TAG 02
+  21846:   0: TAG 04  00
+    744:   0: TAG 4e  46  7e  16  60
+   2052:   0: TAG 08  b6  dd
+ 142234:   0: TAG 04  00
+    746:   0: TAG 4e  46  7e  16  60
+   2048:   0: TAG 08  b6  dd
+ 142220:    :     26
+   4752:    :     26
+ 142579:    :     26
+   4751:    :     26
+ 142578:    :     26
+   4750:    :     26
+ 142576:    :     26
+   4752:    :     26
+ 142579:    :     26
+   4751:    :     26

ATQA+UID+SAK = 0004 4e467e16 08 : Nous retrouvons donc l'UID de la carte NFC qui vaut 4e467e16.

L'elementary time unit (ETU) est la durée nominale des bits utilisés dans la trame.

Le "rssi" est l'intensité du signal. Il reste ici à 0. Nous avons contacté des développeurs de Proxmark qui nous ont confirmé que c'était le cas pour eux aussi, et qu'il ne fallait pas en tenir compte.

Les échanges au début de l'enregistrement ne signifient rien de particulier, ils ne sont pas à prendre en compte.

Dans ce cas, l'antenne de la Proxmark était placée à moins de 5 cm de l'échange. Notre but est de pouvoir faire ce genre de relevés à au moins 1 m.

6/12/2013 : Etude du circuit de la Proxmark

Dans le but d'augmenter la portée du lecteur de cartes, nous nous sommes intéressés à son fonctionnement.

Nous avons pu en déduire le schéma suivant :

Figure 4 : Représentation simplifiée du fonctionnement de la Proxmark

Le FPGA de la Proxmark exécute entre autres tous les algorithmes de crack.

Le FPGA transmet le signal à émettre, aux circuits amplificateurs d'émission, par les PIN PWR_OE1, PWR_OE2, PWR_OE3 et PWR_OE4. La carte comporte deux circuits amplificateurs, notés HF et BF, suivant le type de fréquence pour lequel chacun est utilisé


Vous pourrez voir ci-contre le schéma des circuits amplificateurs :

Figure 5 : Circuits amplificateurs internes à la Proxmark


Le circuit amplificateur BF se trouve dans la partie haute du schéma, encadré en rouge, tandis que le circuit amplificateur HF est encadré en bleu.

Les 8 tampons d'émission présents sur le schéma sont chacun assimilables à une capacité C0. Des recherches dans la datasheet du composant nous ont permis de connaître la valeur de cette capacité, qui est de 8pF.


L'impédance de sortie de la Proxmark peut donc être simplifie de la façon suivante :

Cadre rouge : on a 4 capacités induites par les tampons d'émission, donc 4 * C0 = 4*8 pF = 32 pF et une résistance de 33 Ohms

Cadre bleu : on a 4 capacités induites par les tampons d'émission, donc 3 * C0 = 3*8 pF = 24 pF et une résistance de 33 Ohms

Cadre vert : on a 4 capacités induites par les tampons d'émission, donc 1 * C0 = 1*8 pF = 8 pF et une résistance de 10 KOhms

En mettant en parallèle les impédances de ces trois parties du circuit, on peut déduire la valeur de l'impédance totale de sortie de la Proxmark, qui est de 21–208j.


16/12/2013 : Bilan de liaison et définition des expériences à réaliser pour la caractérisation du système

Nous avons réalisé un premier bilan de liaison du système, peu précis, en attente des expériences à venir.

Figure 6 : Premier bilan de liaison

Sur ce bilan, on retrouve en rouge le chemin d'émission et en vert le chemin de réception.

Nous avons pris contact avec M. Royes, représentant de la société Rysc Corp créatrice de notre antenne HF. D'après lui la société a conçu une antenne compatible avec la Proxmark3, mais sans en effectuer de relevés de caractéristiques.

Nous avons aussi pris rendez-vous avec M. Ducourneau, Responsable de la Plate-Forme Electronique, Electrotechnique, Instrumentation (EEI) de Polytech, afin de définir les expériences à effectuer pour la caractérisation de l'antenne fournie et le dimensionnement de l'amplificateur.

Nous avons alors défini les expériences à réaliser :

Expérience prévue avec une antenne :

=> Mesure de l'intensité traversant l'antenne.

=> Mesure du coefficient de réflexion S(1,1), à l'analyseur de réseau vectoriel avant amplification puis après amplification. Cette étape est nécessaire car à 13,56 Mhz aucune antenne de petite taille n'est vraiment adaptée. Le but du projetétant de dissimuler le système, l'antenne ne devra pas dépasser 50 cm. Il faut donc partir du principe que quelque soit l'antenne, elle ne pourra pas être adaptée. L'idée est de mesurer son coefficient de réflexion à 13,56 Mhz, pour s'assurer que l'antenne conçue ne rejette pas la plus grande partie du signal. Si ce n'est pas le cas, il faudra s'intéresser à une antenne patch, plus directive et de plus grande portée.

Expérience prévue avec deux antennes (identiques) :

=> Mesure du gain : elle nous permettra de calculer la puissance P1 à la sortie de l'antenne afin de compléter notre bilan de liaison.

=> Mesure des pertes de 0 à 1,5 m, avec un pas de 0,10 m. Cela nous permettra de quantifier les pertes dans l'air.

Nous avons à partir de là pu définir le matériel à commander pour réaliser ces expériences.

06/01/2014 : Bilan de liaison global du système

Figure 7 : Bilan de liaison de la solution proposée

Ce bilan devait être confirmé (ou non) après la réalisation des expériences prévues.

Le raisonnement suivant concerne les puissances en Watt.

En rouge on retrouve le chemin d'émission. On a une puissance P0 en sortie de la Proxmark3.

D'après les utilisateurs elle est de 200 mW, nous n'avons pas pu la déterminer car on a pas encore reçu les embouts MQ172, donc nous avons fixé P0 = 0,2 W, Ensuite nous avons déterminé que le gain de l'amplificateur devait valoir 16 dB (soit un gain de 40). Donc après le système d'émission on retrouve une puissance P1 tel que : P1 = P0 * Gain Ampli = 0,2 W * 40 = 8 W. Ensuite le signal d'émission traverse l'antenne, on a fixé le rendement de l'antenne à 0,30, en sachant qu'on utilise notre antenne qui est accordée à 13,56 Mhz. Sinon on aurait fixé le rendement à 20 / 25% ce qui est la norme pour la plupart des antennes patch s, non accordées, à cette fréquence. P2 vaut donc 2,4 W.

Ensuite pour calculer P3, la puissance qui atteint la carte NFC, on utilise la formule suivante :

P3=P2-P2*((4*π*distance*Fréquence)/célérité)^2=1,3 W

en prenant une distance de 1 mètre.

En fixant le rendement de la carte NFC à 0.8, on trouve une puissance émise de la carte P4 de 1 W. En utilisant la même formule de perte dans l'air, que dans le cas de l'émission, on retrouve une puissance de réception P5 = 0,77 W, qui arrive au niveau de l'antenne. A l'entrée de l'amplificateur faible bruit on retrouve alors une puissance P6 = 0,023 W. Pour retrouver une puissance de réception permettant une détection par la Proxmark3 on suppose qu'il faut la même puissance d'émission, soit 0,2 W, même si en pratique on se doute que si la puissance de réception est bien plus faible il n'y aura pas de problèmes. On conclut donc que notre amplificateur faible bruit doit avoir un gain de 10 afin d'obtenir une puissance de réception de 0,230 W à l'entrée de la Proxmark3. Il devra aussi contenir un filtre passe-bande à 13,56 MHz afin de ne laisser passer que le signal utile et de ne pas garder le bruit

20/01/2014 : Etude de la chaîne d'émission

Le signal de sortie de la Proxmark étant d'environ 0,2 W, nous aimerions l'amplifier de façon à obtenir un signal plus proche de 7,5 W. Pour cela, nous avons pensé à modifier si possible la valeur d'un registre du FPGA qui permettrait de gérer la puissance du signal de sortie. Cependant, en parcourant les différents fichiers du programme FPGA, nous n'avons pas trouvé de tel registre.

Pour l'adaptation d'impédance, nous avons pensé à mettre en amont, deux amplificateurs opérationnels de type LF 357 : Cependant en simulant sur Multisim, on observe que l'amplitude du signal de sortie est très faible : 2 mV, par rapport au 5V d'entrée, on a une division par 2500 de l'entrée. Ici la simulation montre ses limites, en réalité le problème est le Slew Rate. Même si cet amplificateur opérationnel est censé fonctionné jusqu'à 20 Mhz, dans le meilleur des cas, son Slew Rate est de 50V/us, d'après sa datasheet. Or nous travaillons à 13,56 Mhz, dans le cas où durant la demi-période, notre signal va de 0 à 5V, on va de 0 à 1 V en t = 1/(2*13,56Mhz*5)=7,4 ns. Cette performance est beaucoup trop élevée pour le LF357. En effet, à cette fréquence il est difficile d'obtenir un très bon signal en sortie d'AOP. De plus, plus le circuit comporte d'éléments, plus le signal est dégradé à haute fréquence. Comme la Proxmark3 est composée de portes logiques, l'impédance n'est pas élevée et donc on peut justifier le fait de ne pas utiliser de circuit d'adaptation. C'est pourquoi nous n'allons pas utiliser de circuit d'adaptation d'impédance dans notre chaîne d'émission, mais simplement un amplificateur d'un gain de 40, déterminé suite au bilan de liaison.

Après avoir essayé et étudié différents circuits d'amplifications, nous avons conclu que puisque la sortie en tension de la Proxmark était de l'ordre du Volt, il n'était pas nécessaire d'amplifier en tension, et donc nous nous sommes concentré sur un amplificateur en courant. Inventé par Bell en 1953, le transistor Darlington est la combinaison de deux transistors bipolaires de même type (tous deux NPN ou tous deux PNP), résultant en un composant hybride qui a encore des caractéristiques de transistor. Ces deux transistors peuvent être intégrés dans un même boîtier. Le gain en courant du Darlington est égal au produit des gains de chaque transistor. Le montage est le suivant : les collecteurs sont communs et correspondent au collecteur du Darlington ; l'émetteur du transistor de commande est relié à la base du transistor de sortie ; la base du transistor de commande et l'émetteur du transistor de sortie correspondent respectivement à la base et à l'émetteur du Darlington1 L'avantage dans notre application est que le gain du premier transistor multiplié par le gain du deuxième nous permet d'obtenir un grand gain. Une façon d'obtenir un grand gain en courant à partir d'un amplificateur classe B type push-pull est d'utiliser des paires de Darlington à la place de transistors seuls et c'est ce que nous allons dimensionner.

Voici notre montage Darlington Push-Pull :

Figure 8 : Circuit chaîne d'émission

Nous prendrons le cas des transistors NPN 2N2222A pour l'analyse :

Puissance d'alimentation VCC = 15 V. Résistance de charge : RL = 15 Ohms, tolérance 10 % Puissance minimum : PL = 7 - 8 W (déterminé par bilan de liaison).

Calcul du cas le plus défavorable d'intensité à fournir pour délivrer la puissance spécifiée :

IL = rac (2 * PL / RL ) = 1,67 A VL= √(2*RL*PL)=10 V

Supposons que le courant du collecteur à travers le transistor Q1 est ILpeak. A partir de sa datasheet on cherche le gain hFE1min, VBE1on et VCE1sat.

Note : Hfe n'était pas spécifié à cette valeur, nous supposerons qu'il a une valeur inférieure à celle spécifiée à 500 mA. hFE1min = 20, VCe1sat = 1,3 V, VBE1on = 2.0 V

hFE1min = 20, VBE1on = 1,

IB1peak=Ilpeak/(hFE1 min⁡〖+ 1〗 ) = 79mA

Supposons que IB1peak est environ égal au courant collecteur de Q3, IC2peak = IB1peak

Pour le 2N2222A à IC2peak = 40 mA,

VB2sat = 1V, hFE2min = 100, VCE2sat = 0,25 V

Note : Hfe n'était pas spécifié à 50 mA, nous l'avons fixé en fonction de la valeur spécifiée à 150 mA.

Calcul du courant de base de Q2 IB2peak=IB1peak/(hFE2 min⁡〖+ 1〗 )= 782 uA ) Ce courant doit être fournie à travers Rb Calcul de la tension de base de Q3 : Specification à 5% d'une valeur pour la résistance à l'émetteur : RE = 1 Ohm REmax = RE.1,05 ; REmin = RE. 0,95 VBpeak = ILpeak * ( REmax + RLmax ) + VBE1on + VBE2sat = 13.821 V

On trouve donc la valeur de Rb, qui est R1 dans notre schematic :

RB=((VCC-VBpeak)/IB2peak)/1.05 = 718 Ohms


Optimisation : Pour 13,56 Mhz, nous choisissons de placer une capacité de 100 nF à l'entrée du circuit, c'est la norme pour les circuits en Haute Fréquence.

Voici les résultats de notre circuit de type Darlington Push-Pull :

Figure 9 : Tensions d'entrée et de sortie du montage Darlington Push-Pull

En bleu on a le signal d'entrée, en rouge celui de sorti. On observe que le gain en tension est environ égal à 1, et c'est ce que nous voulions, puisqu'on veut concevoir un amplificateur en courant avec un gain de 40.


Figure 10 : Mesures des courants d’entrée et sortie du montage Darlington Push-Pull

On injecte environ 40 mA en entrée (à l'aide d'une transformateur Thévenin/Norton), et on observe 1,6 A en sortie. D'où le gain en intensité : (Is )/Ie= 1,6/(40*〖10〗^(-3) )=40 On observe bien un gain de 40 pour cette amplificateur en courant.
















27/01/2014 : Etude de la chaîne de réception

Pour la chaîne de retour de notre système, nous avons prévu la conception d'un amplificateur faible bruit. Un amplificateur faible bruit (ou LNA en anglais pour Low Noise Amplifier) est un dispositif électronique chargé de mettre en forme des faibles signaux provenant d'une antenne. On le place généralement à proximité de la chaîne de traitement des informations reçues de manière à minimiser les pertes en ligne. On le nomme parfois préamplificateur. Les amplificateurs sont souvent utilisés pour les systèmes qui, comme le notre, travaillent à des fréquences élevées.

Suivant les fréquences, l'élément actif d'un amplificateur d'entrée à faible bruit varie : le FET est le moins bruyant jusqu'à quelques dizaines de mégahertz, suivi par le transistor bipolaire (particulièrement SiGe), puis de nouveau le FET en GaAs au-delà de quelques gigahertz.

Notre amplificateur faible bruit sera composé d'un transistor permettant d'amplifier la tension de retour et combiné avec un filtre passe bande.


Figure 11 : Amplificateur chaîne de réception
Figure 12 : Filtre passe-bande à 13,56 Mhz
Figure 13 : Performances du filtre passe bande dans la zone de 1 à 30Mhz












On remarque qu’à la fréquence de 13,56 Mhz notre filtre à un gain très proche de 1. Ce gain est très nettement inférieur de part et d'autre, ce qui nous permet de ne renvoyer vers la Proxmark que la fréquence voulue (13,56 Mhz environ).


Figure 14 : Simulation Multisim de notre Amplificateur de réception












On observe que pour une entrée d'amplitude 0,4V, on a environ un gain de 10, soit 4V en sortie. Ce gain de 10 est nécessaire pour permettre la détection du signal de retour à travers la Proxmark3. Sa valeur a été déduite du bilan de liaison effectué précédemment.










03/02/2014 : Etude des possibilités de sécurisation

A partir de cette date nous commençons à rechercher les nouveautés concernant la sécurité NFC. L'enjeu étant de savoir quels sont les possibilités à l'heure d'aujourd'hui, pour empêcher les hackers de lire le contenu de nos cartes à distance. Une solution bien connu est celle de la cage de Faraday

04/02/2014 : Simulation de la solution et optimisation

Comme la commande des embouts pour connecter les cartes (embouts MQ172, câble blindé,..) , ne sont pas encore arrivés, Nous nous contenterons cette semaine de simuler notre système sur Multisim, et ceci afin d'obtenir les gains nécessaires à partir du bilan de liaison.

Puis nous allons tout de même commencer la création des circuits, même si la grande contrainte de la fin de notre PFE est de recevoir les connecteurs pour brancher notre solution complète.

17/02/2014 : Réalisation des PCBs, de l'antenne et des circuits

Cette semaine nous avons réalisé les PCBs sous altium, de notre solution de chaîne d'émission et de réception. Cependant la machine qui réalise les circuits réels est cassée, c'est pourquoi on ne peut pas effectuer les tests. En effet, à la fréquence de 13,56 Mhz, on ne peut pas travailler sur des boards habituels car le signal serait dégradé.

Nous avons fait quelques expériences à l'aide de plaques à essais, cependant ces plaques ne sont pas appropriées pour notre travail en hautes fréquences. Nous avons donc travaillé à la conception de circuits imprimés, avec le logiciel Altium Designer.

Conception des Schematics : Etant donné que nous n’avions pas pu faire les mesures exactes des courants et puissances d’entrée et de sortie de la carte Proxmark, nous avons réalisé deux schémas d’amplificateurs. En plus du Darlington en push-pull, nous avons aussi dimensionné un ampli de plus faible puissance ne comportant qu'un seul transistor 2N2222A.

Pour pouvoir créer les cartes électroniques, il était nécessaire de créer des PCB sous Altium Designer. Nous avons donc commencé par réaliser des schémas électroniques, comme suit :

Figure 15 : Amplificateur de courant à faible puissance
Figure 16 : Montage de Darlington PushPull
Figure 17 : Amplificateur faible bruit

Pour connecter les entrées et sorties de ces circuits, nous avions prévu d’utiliser des connecteurs du fabriquant AMP, disponibles au magasin électronique de l’école. Ces connecteurs étant différents de ceux présents dans les librairies du logiciel, nous avons dû les ajouter. Nous avons pour cela cherché sur internet des librairies contenant ces composants, mais sans succès. Finalement nous avons créé une librairie contenant trois connecteurs AMP : 1 à 2x2, 1 à 2x4 et 1 à 2x5 broches. Nous avons pour cela dû créer la librairie Schematic. Vous pourrez voir le schéma d’un composant ci-après.

Figure 18 : Création du Schématic d’un connecteur AMP 2x5

Nous avons ensuite créé la librairie PCB, en utilisant les dimensions disponibles dans les spécifications techniques des connecteurs AMP.

Figure 19 : Création de l'emprunte PCB d’un connecteur AMP 2x5

Ceci étant fait, nous avons pu créer les PCB des cartes électroniques. Nous avons dû pour cela router les cartes au mieux, en raccourcissant les pistes au maximum, et en évitant les détails trop minutieux, comme les angles droits et les pistes ou pastilles trop fines, qui risqueraient de ne pas être propres après la fabrication de la carte. De plus nous avons ajouté sur chaque PCB un plan de masse, afin d’avoir une meilleure isolation des différents signaux parcourant la carte. Nous avons aussi dû respecter plusieurs contraintes pour la création de ces PCB, comme la largeur des pistes, qui devait être au minimum de 80mil, et la taille des trous et des pastilles de 24mil et 80mil. Vous pouvez voir ci-dessous les trois PCB créés.

Nous avons eu plusieurs difficultés par rapport aux contraintes de dimensions des pistes, pastilles et trous des PCB, et étant donné les gabarits de certains composants. Nous avons pu imprimer ces PCB en noir et blanc et à l’échelle réelle, en ne prenant en compte que les pistes, les pastilles et les plans de masses, (donc en ne prenant pas en compte les composants). De plus, lors de cette étape, il est important d’imprimer les PCB en miroir, c'est-à-dire retournés par rapport à un axe vertical.

Nous avons ainsi pu commencer la réalisation des circuits imprimés. Nous avons donc passé la plaque de circuit imprimé aux rayons UV puis au révélateur. Nous avons obtenu le résultat suivant :

Figure 20 : Circuit imprimé révélé





Après la révélation le circuit aurait dû être gravé au perchlorure de fer. Cependant, la graveuse à perchlorure étant endommagée, nous n’avons pas pu procéder à la gravure de nos cartes.


















21/02/2014 : Attente du matériel, poursuite de l'étude des possibilités de sécurisation

En dépit de notre attente nous n'avons pas vu arriver le matériel commandé. Désormais nous savons que lorsqu'un projet mêle software et hardware, il faut s'y prendre à l'avance pour préparer la partie Hardware, car elle réclame en général beaucoup plus de matériel que la partie Software.

D'autre part nos recherches concernant les possibilités de sécurisation ont progressé.

Nous avons notamment pu découvrir plusieurs solutions comme : les cages de Faraday et le blindage électromagnétique (à l'aide d'une feuille de cuivre ou d'aluminium), l'ajout d'un interrupteur connecté à l'étiquette, solution plus coûteuse, l'utilisation d'une cryptographie plus évoluée, mais plus consommatrice en énergie, ou l'utilisation de smartphones NFC, qui permet une consommation d'énergie assez importante, bien que cette solution puisse être encore plus fragile étant donné les multiples possibilités de hackage d'un smartphone.

Documentation

Analyse des données :

[CEPS Technical Specification]

Circuit Proxmark3

[1]