LES CARTES A PUCES ASYNCHRONES


Principe

Les cartes à puces émettent un train de données juste après avoir été remises à zéro (reset). Ceci est appelé ATR "answer to reset".

La liaison entre la carte et le terminal externe est sous forme half duplex, sur la même ligne.

Les octets peuvent être encodés en convention directe ou inverse. L'un étant le complément à l'envers de l'autre. Pour passer de l'un à l'autre, inverser les bits et lire à l'envers :

Les deux protocoles qui sont le plus utilisés sont appelés T=0 et T=1. T=0 est le plus simple basé sur une transmission par caractères, T=1 est plus complexe et met en place une transmission par bloc avec un protocole supplémentaire.

 


Interfaces

Interfaces physiques :

 

Interfaces électriques :

 

Protocole série standard avec un bit start, 8 bits de donées, 1 bit de parité paire (convention directe) ou impaire (convention inverse) et 1 bit de stop.

 

Interfaces vers un port COM d'un PC

voici le schéma d'une interface vers le port série d'un PC, inspiré d'un schéma Electronique Pratique HS Interfaces PC N°4 (Patrick Gueulle).

 

 

 

 

Il est très proche des schémas Dumbmouse, Smartmouse ou Phénix, un peu éloigné du lecteur JDM (qui est un exemple d'un mauvais montage). Les différences sont données ci dessous :

 

 

 

L'avantage du montage proposé, est que contrairement au Phoenix ou Dumbmouse, 'il peut aussi servir en mode espion, lorsque l'on cherche à intercepter les échanges entre un terminal et une carte. Dans ce cas, il suffit d'enlever le jumper de l'horloge et de débrancher l'alimentation .

 


 

Le premier contact et la réponse au reset : ATR

  1. Alimenter la carte, avec reset (C2) à 0Volt, présenter l'oscillateur (C3),
  2. Programmer le port série en 8.Even.1
  3. Essayer de recevoir avec reset=0 avec un time out = 2 secondes (çà c'est la théorie=20600*ietu, en pratique 200ms est ok)
  4. Si rien reçu, essayer de recevoir avec reset=1 avec time out = 2 secondes (çà c'est la théorie=20600*ietu, en pratique 200ms est ok)
  5. Si rien reçu, sortir du programme, la carte est muette

Il faut maintenir le reset dans l'état où la carte a répondu.

Si on présente une horloge externe à la carte, le débit série est de Fx/372. 9600 Bauds pour un quartz 3.57 MHz. Sinon, la vitesse de transmission est de 9600 Bauds normalement mais peut varier. L'interface peut alors mesurer la vitesse de transmission avec le temps entre le 1er front descendant (bit reset) et le 2ème front descendant. Ce temps vaut 3 fois le temps bit (etu) soit 312 µs pour 9600 bauds, quelque soit la convention de transmission.

La carte émet avec un bit de parité, et vérifie la parité des octets qu'elle reçoit en utilisant : 8.Even.1 si convention directe 8.Odd.1 si convention inverse. Si un octet reçu par la carte n'est pas correct en parité, la carte peut émettre une condition d'erreur revélée par une mise à zéro de la ligne I/O (C7) pendant 2 temps bits.

 

Le premier octet reçu (TS) est soit 0x03 soit 0x3B

Si on détecte une convention inverse (0x03 lu), on reprogramme le port COM en 8.odd.1

Suivant TS, l'ATR est composé d'au plus 31 caractères :

quelques exemples d'ATR :


CHOIX DU PROTOCOLE

En cas de protocoles mutliples, il faut choisir le protocole utilisé par un ordre PTS (Protocol Type Selection). La demande PTS est envoyée avec 5 octets :

  1. PTSS=0xFF
  2. PTS0 caractere de format, indique présence de PTS1,2,3 (b4-6) et choix du protocole (b0-3)
  3. [PTS1]
  4. [PTS2]
  5. [PTS3]
  6. PCK verification


UTILISATION EN PROTOCOLE 0 : GENERALITES

Tous les échanges sont à l'initiative de l'interface, qui émet une commandes sur 5 octets (classe, instruction, parametre 1, parametre 2, longueur). L'échange se termine toujours par l'émission d'un statut.

Envoi de données :

  • Envoi: CLA INS P1 P2 LEN

  • Reçu : PROC

  • Envoi : DATA (LEN bytes)

  • Reçu : SW1 SW2

Lecture de données :

  • Envoi: CLA INS P1 P2 LEN

  • Reçu : PROC

  • Reçu : DATA (LEN bytes)

  • Reçu : SW1 SW2

 

CLA classe de la commande : 0 à 0xFE (FF=PTS)

INS instruction : en général pair

Les valeurs 6x et 9x sont interdites dans l'ISO7816

 

PROC octet de procedure, renvoyé par la carte suite à CLA INS P1 P2 LEN

 

SW1, SW2 octets d'état, renvoyé par la carte suite à la fin de l'échange

 

Exemples :


Cas particulier de la carte bancaire

Lecture de zones

Transcodage et présentation du code privé

A l'envers, si la carte reçoit : 95 10 7F FF = 1001 0101 0001 0000 0111 1111 1111 1111, le code est 5441


Cas particulier de la carte GSM

Recherche des instructions reconnues par une carte GSM :

Recherche des fichiers reconnus par une carte GSM :

Transcodage et présentation de code pin GSM

Divers

Recherche de l'IMSI (international mobile subscriber identity)


Séléction d'une application

Les cartes à puces peuvent supporter chacune plusieurs applications. Par exemple, on trouve maintenant l'application MONEO sur nos cartes bancaires au standard GMV.

 

Chaque application est référencée dans la norme ISO7816-5, à laide d'un AID ( Application IDentifier), lui même composé d'un RID (Registered Application Provider Identifier, 5 octets) et d'un PIX (Proprietary Application Identifier Extension, 0 à 11 octets)

La séquence à envoyer est par exemple : 00 A4 04 00 07 A0 00 00 00 03 10 10

La séquence à envoyer pour explorer une carte est : 00 A4 04 00 0E 315041592E5359532E4444463031

 

 


Standards internationaux

 

The basic contact smart card standard is the ISO 7816 series, part 1- 10 while contactless cards will be governed by the ISO 14443 standard. These standards are derived from the identification card standards and detail the physical, electrical, mechanical, and application programming interface. Below is a list of the contact card standards.


Références