technologie nfc - lip6
TRANSCRIPT
Technologie NFCWafa Badreddine
Wafa Badreddine PROGRES
Plan
• Introduction
• Caractéristiques techniques & Fonctionnement
• Modes de communication
• APDU & AID
• Projet Android
!2
Wafa Badreddine PROGRES
Introduction
• Technologie de communication sans fil
• Sans contact
• Simple d’utilisation
• Near Field : courte distance (cm)
• Extension de la norme définissant RFID
• RFID (Radio Frequency IDentification)
!3
Wafa Badreddine PROGRES
Introduction• Le NFC est intégré dans certains téléphones portables sous
forme d’une antenne, ainsi que sur certaines cartes de transport ou de paiement (permettant le paiement sans contact)
!4
Wafa Badreddine PROGRES
Caractéristiques techniques
• Le NFC (Near Field Communication) est une technologie permettant d’échanger des données à une distance très faible (moins de 5 cm), entre deux appareils équipés de NFC sans contact
• Fréquence : 13.56 MHz
• Distance : <= 10cm
• Débit : de 106 à 420 Kbits/s
!5
Wafa Badreddine PROGRES
Fonctionnement• Induction de champ magnétique
• La communication NFC se fait entre un initiateur et une cible
• un initiateur: émetteur du champ magnétique, Target ou Initiator
• une cible: un Tag, un récepteur
• L’initiateur est l’appareil qui souhaite communiquer
• La cible reçoit la requête et répond
➡ Le tag est interrogé et l’émetteur interroge.
• Par défaut tous les appareils sont des cibles !6
Wafa Badreddine PROGRES
Qu’est ce qu’un tag NFC ?• Les tags NFC peuvent être des étiquettes, des autocollants ou même
des bracelets contenant de petites micro puce pouvant stocker une petite quantité d’informations afin de le transférer à un autre dispositif utilisant le NFC. Ainsi, un téléphone portable peut également être un tag NFC dans le cas d’un fonctionnement en pair-à-pair.
• Un tag est composé de trois parties principales:
• la puce: sert à stocker les données.
• l’antenne: L’antenne sert à capter l’énergie radio émise par l’équipement NFC au passage du tag NFC. Cette énergie permet le démarrage de la puce.
• l’autocollant de papier ou de vinyle (matière synthétique plus résistante que l’adhésif papier)
!9
Wafa Badreddine PROGRES
Fonctionnement
• Deux modes de communication existent
• Passif
• Actif
!10
Wafa Badreddine PROGRES
Fonctionnement Passif
• L’initiateur génère un champ électromagnétique à partir du quel le récepteur va être alimenté en énergie.
• Un appareil initie la connexion
• Il fourni le champ magnétique
• L’appareil cible va moduler le champ existant
• Le champ magnétique peut être utilisé comme source d’énergie
!11
Wafa Badreddine PROGRES
Fonctionnement actif
• Le récepteur et l’initiateur disposent de leur propre source d’énergie et communiquent en alternant le champ électromagnétique qu’ils génèrent.
• Les deux appareils génèrent des champs
• Ils désactivent la génération lors de l’attente
• Les deux appareils nécessites une source d’énergie propre
!12
Wafa Badreddine PROGRES
Normes• Standardisée par ISO 18092
• Vitesse de transfert
• Méthode d’encodage
• Modulation
• Architecture des trames
• Protocole utilisé
• ISO 14443
• Définit la communication avec des circuits intégrés sans contact
• NDEF (NFC Data Exchange Format)
• Définit le format d’échange!13
Wafa Badreddine PROGRES
Collisions
• Rares (faible portée)
• Collision avoidance
• Ecoute avant d’émettre
• Attend tant qu’une émission est en cours
• Commence l’émission une fois le canal libre et après un temps de garde
!14
Wafa Badreddine PROGRES!15
Communication
Wafa Badreddine PROGRES
Intérêts
• Faible portée
• Sécurité
• Utilisation naturelle
• Mode passif
• Economie d’énergie
!16
Wafa Badreddine PROGRES
Comparaison NFC/RFID
• NFC englobe les fonctionnalités de RFID
• Emulation de tag RFID
• Possibilité de P2P (communication active)
!17
Wafa Badreddine PROGRES
Comparaison NFC/Bluetooth• Portée : 10cm / 10m
• Temps d’établissement de la connexion
• <0.1s / 6s
• NFC propose mode actif / passif
• Débit : 424 Kbits/s / 2.1 Mbits/s
• Utilisation différente
!18
Wafa Badreddine PROGRES
Usages
• Paiement : carte bancaire NFC / téléphone
• Billetterie : transport / spectacle
• Lecture d’information : transport / magasin
• Contrôle d’accès
• Carte de visite électronique
• Appairage Bluetooth, clé wifi
!19
Wafa Badreddine PROGRES
Sécurité: Déni de service
• Denial of Service
• Occuper la canal de fréquence radio
• Envoyer des données à un appareil
• Si NFC est activé, il lira tous les messages
!20
Wafa Badreddine PROGRES
Modes de communication NFC
• La communication NFC a trois modes différents:
• Reader/Writer Mode
• Card Emmulation Mode (Host Card Emulation)
• Peer to Peer Mode
!21
Wafa Badreddine PROGRES
• L’équipement NFC est capable de lire des tags (étiquettes électroniques), pour récolter des informations pratiques, ou pour lancer une action de manière automatique.
• Exemples d'utilisations :
• Paiement par carte
• Automatisation d'une tâche : lancer une application à l'approche du tag NFC.
!22
Mode Reader/Writer
Wafa Badreddine PROGRES
Mode Reader/Writer• Ce mode permet également de donner la fonctionnalité de
commutateur à un tag NFC. En effet, il est possible sur certaines applications de programmer le tag de façon à ce que la première fois qu’on passe l’équipement dessus, il réalise une certaine action et qu’en repassant l’équipement une deuxième fois, il réalise une autre action.
• Exemple d'utilisation :
• Au premier passage du téléphone, le tag active la fonction GPS du téléphone, et au deuxième passage, le tag désactive cette même fonction.
!23
Wafa Badreddine PROGRES
Mode émulation de cartes• Le terminal mobile fonctionne comme une carte sans contact. La carte SIM du
portable peut être utilisée pour stocker des informations chiffrées sécurisées.
• Exemples d'utilisations :
• Paiement sans contact.
• Gestion des coupons de réduction ou des points de fidélité dans un magasin.
!24
Wafa Badreddine PROGRES
Mode Pair-à-Pair• Ce mode de fonctionnement permet l'échange d'informations entre deux
appareils équipés du NFC.
• Exemple d'utilisation :
• Un échange de photos entre une tablette et un Smartphone.
• Récupération des contacts téléphonique lors d’un changement de portable.
!25
Wafa Badreddine PROGRES
AID
• Le lecteur identifie le contenu d’une carte NFC/HCE grâce au:
• AID (Application IDentifier)
• Les AIDs sont en hexadécimal.
• Exemple: Carte Visa a un AID spécifique AID1: A0000000031010
!26
Wafa Badreddine PROGRES
APDU
• Le lecteur et la caret NFC/HCE communiquent entre eux grâce au:
• APDU (Application Protocol Data Unit)
• C’est un ensemble de commandes et réponses APDU
• APDU a un format standard
• Les cartes bancaires (Visa, Master,…) sont lues partout dans le monde grâce à cette standardisation.
!27
Wafa Badreddine PROGRES
• La première commande entre un lecteur et une carte NFC/HCE est SELECT AID
!28
Wafa Badreddine PROGRES
Lecture et Ecriture de tags NFC avec Android
!29
Wafa Badreddine PROGRES
Introduction
• La réalisation du projet nécessite la prise en main d’outils tels que l’environnement de développement Android Studio et l’API Android NFC qui sont présentés ci-après.
!30
• L’application créée au cours de ce projet peut être lancée sur un émulateur (fonctionnalité fournie par SDK Android) ou sur un téléphone réel.
• Le test de l’application sur l’émulateur a montré les limites de l’émulateur qui été très long à se lancer.
• Aussi, nous utilisons un téléphone réel pour tester l’application, bénéficiant de la fonctionnalité NFC.
Wafa Badreddine PROGRES
Projet: Modes de communication• On va s’intéresser à deux modes NFC:
• Mode Read/writer:
• Emetteur: Téléphone NFC (Select AID1, Select AID2,…)
• Récepteur: une carte NFC: navigo ou carte bancaire
• Mode Card Emulation
• Emetteur: Téléphone NFC (Select AID4)
• Récepteur: un deuxième téléphone agissant comme une carte NFC (Attribuer au téléphone HCE AID4)
!32
Wafa Badreddine PROGRES
API Android NFC• L’API d’Android propose un accès à la fonctionnalité NFC d’un téléphone grâce au
package android.nfc. Ce dernier permet aux applications de lire et écrire un message NDEF dans les tags NFC.
• Le package contient 4 classes :
• NfcManager : Gestionnaire de haut niveau, utilisé pour obtenir le NfcAdapter de l’appareil
• NfcAdapter : Représente l'adaptateur NFC de l'appareil, qui est le point d'entrée pour effectuer des opérations NFC.
• NdefMessage : Représente un message de données NDEF, qui est le format standard dans lequel les "enregistrements" porteurs de données sont transmis entre les périphériques et les tags
• NdefRecord : Représente un enregistrement, qui est livré dans un NdefMessage et décrit le type de données partagées et transporte les données lui-même.
!33
• Le package android.ncf.tech propose des classes qui donnent accès aux caractéristiques de la technologie d’un tag, qui varie selon le type de tag scanné.
• Un tag scanné peut supporter plusieurs technologies.
Wafa Badreddine PROGRES
Modification du Manifest
• Vérifiez si le téléphone supporte la technologie NFC 1.<uses-feature 2.android:name="android.hardware.nfc" 3.android:required="true"/>
!35
• Ajoutez les permissions nécessaires à votre application afin de pouvoir utiliser le NFC.
<uses-permission android:name="android.permission.NFC"></uses-permission>
Wafa Badreddine PROGRES
Implémentation de la classe TagWriterActivity
• Ajoutez une nouvelle activité à votre application: TagWriterActivity.
• Cette activité sera destinée à écrire des informations sur un tag NFC.
!37
• Il faut également surcharger la méthode onResume() de l'activité pour activer la découverte de tag.
• Surchargez de même la méthode onPause de l'activité pour désactiver l'écoute des tags quand l’activité est mise en pause.
• A la lecture d'un tag, Android crée automatiquement une nouvelle intention contenant les informations sur le tag détecté;
• pour pouvoir récupérer cette intention, il vous faudra surcharger la méthode onNewIntent() de l'activité. Cette méthode sera appelée à chaque fois qu'un tag est détecté par le lecteur.
• Cette méthode convertit une chaine de caractères au format NDEF
• private NdefMessage getMessageAsNdef(String message) {}
• Cette méthode lit un message NDEF contenu dans un tag
• private NdefMessage[] getNdefMessages(Intent intent) {}
• Méthode permettant de formater et\ou d'écrire de nouvelles données sur un tag NFC
• boolean writeTag(NdefMessage message) {}