La Carte A Puce
La Carte A Puce
La Carte A Puce
Lacarte
carteààpuce
puce
Samia Bouzefrane
Maître de Conférences
CEDRIC –CNAM
[email protected]
http://cedric.cnam.fr/~bouzefra
Titre de transport (Passe Navigo à Paris, Oyster à Londres, Korrigo (un seul
titre de transport pour tous ses déplacements en transports en commun ).
(d’après : http://www.prefecture-police-paris.interieur.gouv.fr/demarches/passeport_elec/passeport_2006.htm)
1971: Paul Castrucci de IBM dépose aux USA un brevet intitulé Information Card
Année Événement
1979 Première carte fabriquée par Motorola
pour Bull CP8
1980-81 Premières expérimentations de télévision
payante
1983 Premières cartes téléphoniques France
Télecom
1984 Première version de la carte bleue à base
de carte Bull CP8
1987 Publication des normes ISO 7816
1989 Premières cartes GSM pour téléphones
mobiles (Gemplus)
1998 Premières cartes Java (Java Card)
carte à mémoire
carte à microprocesseur
notion de zone:
- zone à valeur fixe, non modifiable [identifiant émetteur],
- zone pour l’écriture, modifiable [compteur d’unité],
- notion de fusible, cycle de vie de la carte [par exemple la zone à
valeur fixe devient non modifiable après que le fusible soit grillé : OTP (One
Time Programing)].
Exemple la télécarte
(mémoire de 256 bits = ZP (96) + ZL (150))
Av. : coût très bas. Inc. : “clonage” simple.
Circuit intégré ST 1200 (de SGS Thomson) : programmable une seule fois
( mise à 1)
- La carte compare son résultat avec celui du lecteur, s’il y a égalité =>
le lecteur est identifié par la carte
- La carte utilise ce résultat pour calculer une nouvelle valeur à l’aide d’un algo
cryptographique
- La carte envoie le nouveau résultat
Chaque zone :
- un octet : conditions d’accès à la zone (avec/sans mot de passe de Lect/
Ecrit/, avec/sans authentification)
- données initiales pour l’authentification mutuelle (clé + semence
du générateur de nbs aléatoires)
- mots de passe en Lect/Ecrit
Plastique laminé
Fabrication du module :
Découpage/Sciage,
Contact/Binding,
Collage.
Comportent un microcontrôleur :
- UC
- PROM
- RAM dans le même circuit
- EEPROM
- interface d’E/S
- crypto processeur
Processeur : 16 ou 32 bits
EEPROM : de 1Ko à 128 Ko (256 Ko pour une Java Card ou une Basic Card)
Gestion de la mémoire
Fonction cryptographique
A la personnalisation
A l’utilisation
Mémoires :
- RAM : 1 à 4 Ko
- NVM (EEPROM/Flash) : 16 à 32 Ko
- ROM : 32 à 64Ko
Co-processeur
- Java Card : exécution directe du Byte Code Java Card
ISO,
Santé,
...
Quel que soit le fabricant de la carte à puce, celle-ci sera lue par n’importe quel
distributeur dans le monde
La norme ISO 7816-4 définit les commandes de base des cartes à puce
ID 01
ID 00 ID 000
Le fabricant produit une seule taille (ID1), le client final pourra réduire
ses dimensions au format ID00 ou ID000 (ex. carte SIM)
La carte doit être opaque aux rayons UV (la puce insensible aux rayons UV)
La zone des contacts doit résister à la pression causée par une bille d’acier
de 1,55 mm de diamètre appliquée avec une force intérieure ≤ 1,5 N.
La carte ne doit pas être endommagée par un champ magnétique statique
de 79 500 A/m.
etc.
Carte ISO
Carte AFNOR
Valeurs en mm
I: Min= 2V ou 0.7Vcc
Max=Vcc
O: Min=2.4V ou 3.8V
Max=Vcc
La norme ISO 7816-3 précise la mise sous tension de la carte et son arrêt
Reset de la carte
Retrait de la carte
Une fois la carte placée dans le lecteur, les opérations suivantes sont déclenchées :
Retrait de la carte (le retrait de la carte avant la fin de la transaction doit être
pris en charge par l’application).
- Le protocole de transport ;
- Taux de transmission des données ;
- Numéro de série de la puce …
Pour émettre ses données, il influe sur le champ HF reçu en faisant varier
l’énergie qu’il absorbe
Si plusieurs cartes sont à proximité d’un lecteur, les cartes peuvent tenter
un dialogue avec le lecteur
- le lecteur informe les autres cartes non sélectionnées qui retournent dans
un état semi-passif
-la carte sélectionnée envoie une réponse ATS (Answer To Select) qui contient
les caractéristiques de la carte
1: convention inverse :
- niveau bas A = « un » logique
- niveau haut Z = « zéro » logique
- ba (bit transmis en premier) = bit 7 de poids fort
- bh (bit transmis en dernier)=bit 0 de poids faible
TS = 0011 1111 (3F, en héxa)
2: convention directe :
- niveau bas A = « 0 » logique
- niveau haut Z = « 1 » logique
- ba (bit transmis en premier) = bit 0 de poids faible
- bh (bit transmis en dernier)=bit 7 de poids fort
TS = 0011 1011 (3B, en héxa)
Les poids forts de TD1 indique si les caractères supérieurs sont transmis
dans l’ATR, par ex. :
-Si TD1 contient 1010 => TD2 et TB2 sont transmis
TA1 372 1
F D
TB1 50 5
I P
TC1 0
N
TD1 0
protocole
Les cartes dialoguent à 9600 bits/s pendant l’ATR (vitesse connue de tout
port série RS232 facilite la réalisation d’espions)
Si la carte supporte plusieurs protocoles dont T=0, c’est ce protocole qui
doit être utilisé par défaut dans TD1 si la négociation est absente.
Carte Lecteur
= 3 à 6 octets
- 1er octet : PTSS (PTS Start) = FF
-2ème octet : caractère de format PTS0
-3 octets optionnels : PTS1, PTS2 et PTS3, dernier octet : PCK octet de
contrôle
Si b0 de PTS2=1 la carte accepte que N=255 (tps de garde est réduit à 1 etu)
Si b1=1 la carte peut utiliser un TG=12 etu entre chaque caractère envoyé
au lecteur
b3 à b7 non utilisés
PCK contient une valeur de manière qu’un ou exclusif des bits allant de
PTSS à PCK soit nul.
87 [email protected] - CEDRIC ( CNAM) -
Réponse au PTS par la carte
rien à PTS0
PTS2 en réponse à PTS2 (si pas de réponse à PTS2, la carte est rejetée)
Conclusion
-Protocole un peu contraignant
-Ignoré sur la majorité des cartes actuelles en partie pour cette raison
Elle définit les messages APDU (Application Protocol Data Units) utilisés
par les cartes à puce pour communiquer avec le lecteur.
Commande APDU
Entête obligatoire Corps optionnel
CLA INS P1 P2 Lc Data field Le
•CLA (1 octet): Classe d’instructions --- indique la structure et le format pour
une catégorie de commandes et de réponses APDU
•INS (1 octet): code d’instruction: spécifie l’instruction de la commande
•P1 (1 octet) et P2 (1 octet): paramètres de l’instruction
•Lc (1 octet): nombre d’octets présents dans le champ données de la commande
•Avec Le=0, - Si cde d’écriture => pas de données utiles
- Si cde de lecture => la cde doit retourner 256 octets de données utiles
•Data field (octets dont le nombre est égal à la valeur de Lc): une séquence
d’octets dans le champ données de la commande
Réponse APDU
Champ de la Valeurs
commande
APDU
CLA BC = cartes de crédit françaises, cartes vitales françaises,
A0 = cartes SIM (téléphonie)
00 = cartes Monéo (porte-monnaie en France), Mastercard, Visa
INS 20 = vérification du PIN,
B0 = Lecture
B2 = Lecture de record
D0 = Écriture
DC = Écriture de record
A4 = Sélection du répertoire (directory)
C0 = Demander une réponse (get an anwer)
P1, P2 paramètres contenant des adresses à lire
LEN longueur prévue pour la réponse ou bien longueur de
l’argument de l’instruction
ARG contient LEN octets (octets à écrire, PIN à vérifier, etc.)
96 [email protected] - CEDRIC ( CNAM) -
Protocoles TPDU/APDU
Protocole ambitieux
- création/destruction de fichiers
- attribuer un nom à un fichier
- définir des restrictions d’accès en Letc/écrit
- lire/écrire dans un fichier
- le plus contraignant est l’échange en binaire entre le lecteur et la
carte
La méthode la plus utilisée sur les cartes actuelles est la méthode (a)
Si ces commandes sont utilisées par une carte, elles doivent respecter la
norme
Get/Put Data
Commande APDU
Entête obligatoire Corps optionnel
CLA INS P1 P2 Lc Data field Le
•CLA: dépend de l’application
•INS: "A4"
•P1 : mode de sélection (sélection par nom, par chemin d’accès, etc.)
•P2: sélection d’un enregistrement dans un fichier
•Lc: peut être absent
•Data field: varie selon le mode de sélection
Commande APDU
Entête obligatoire Corps optionnel
CLA INS P1 P2 Lc Data field Le
•CLA: dépend de l’application
•INS: "B0"
•P1 : Si MSB (b7)=1, les bits b0 à b2 = FID d’un fichier EF. P2 contient l’adresse
de l’octet concerné
Si b7=0, il s’agit du fichier EF déjà sélectionné alors (P1 P2) contiennent le
décalage du premier octet à lire
•Si Le=0, alors lecture des données comprises entre l’octet défini par P1 et la fin
du fichier
Commande APDU
Entête obligatoire Corps optionnel
CLA INS P1 P2 Lc Data field Le
•CLA: dépend de l’application
•INS: "D6"
•P1 : Si MSB (b7)=1, les bits b0 à b2 = FID d’un fichier EF. P2 contient l’adresse
de l’octet concerné
Si b7=0, il s’agit du fichier EF déjà sélectionné alors (P1 P2) contiennent le
décalage du premier octet à lire
•Lc: contient le nb d’octets à écrire dans le fichier
•Data field : données à écrire (dont la taille = Lc)
Commande APDU
Entête obligatoire Corps optionnel
CLA INS P1 P2 Lc Data field Le
•CLA: dépend de l’application
•INS: "B2"
•P1 = 0, lire l’enregistrement en cours.
Si "01"<=P1<="FF" alors lire la valeur de P2
•P2 contient (b2b1b0)=100 (lire numéro dicté par P1), =101 (lire de P1 jusqu’à la
fin du fichier), =110 (lire de la fin du fichier jusqu’à P1), etc.
Commande APDU
Entête obligatoire Corps optionnel
CLA INS P1 P2 Lc Data field Le
•CLA: dépend de l’application
•INS: "D2"
•P1 = 0, écrire dans l’enregistrement en cours.
Si "01"<=P1<="FF" alors lire la valeur de P2
•P2 contient (b2b1b0)=000 (premier enreg.), =001 (dernier enreg.), =010 enreg.
Suivant, 011 (enreg. précédent), numéro d’enreg dans P1, etc.
•Data field : contient les données à écrire
Commande APDU
Entête obligatoire Corps optionnel
CLA INS P1 P2 Lc Data field Le
•CLA: dépend de l’application
•INS: "DC"
•P1 = 0, écrire dans l’enregistrement en cours.
Si "01"<=P1<="FF" alors lire la valeur de P2
•P2 contient (b2b1b0)=000 (premier enreg.), =001 (dernier enreg.), =010 enreg.
Suivant, 011 (enreg. précédent), numéro d’enreg dans P1, etc.
•Data field : contient les données à écrire
Commande APDU
Entête obligatoire Corps optionnel
CLA INS P1 P2 Lc Data field Le
•CLA: dépend de l’application
•INS: "E2"
•P1 =0
•P2 : contient le FID court du fichier EF concerné
•Lc: taille de l’enreg à écrire dans un fichier à structure linéaire variable
•Data field : données à écrire
http://java.sun.com/products/javacard/
http://www.gemalto.com
http://www.oberthur.com
http://www.globalplatform.org
http://www.javacardforum.org
http://www.opencard.org
http://www.linuxnet.com/
http://www.iso.org
http://www.ttfn.net/techno/smartcards/
http://eurekaweb.free.fr/ih1-carte_a_puce.htm
http://membres.lycos.fr/dbon/historique.htm
http://apte.net/info-e/pubs.htm
http://www.eurosmart.com/index.htm