En France 2 normes cohabitent : la norme Afnor, française et la norme ISO, mondiale.
La d
ifférence la plus visible est la position de la puce sur la carte, la première carte est une carte ISO, la deuxième Afnor.

Aujourd’hui c’est la norme ISO qui se généralise, cette norme définit :

  • Les caractéristiques physiques : taille, contraintes à supporter, emplacement des contacts, et caractéristiques électriques.

  • Les protocoles de communication : Par caractère (appelé T=0 ) et par paquet (appelé T=1).

  • Les commandes applicatives : les différentes commandes/réponses suivant les applications


Norme ISO 7816
La norme ISO 7816 se décompose en 4 parties (dénommée 7816-X, où X est le numéro de la partie).

  • La partie 1 définit caractéristiques physiques
  • La partie 2 impose la dimension et la position des contacts
  • La partie 3 normalise les caractéristiques électriques et les protocoles de communication
  • La partie 4 définit le format des paquets de données échangés entre un lecteur et une carte

Note : Cette page ne contient pas toute la norme ISO en détail, la norme est en effet copyrightée par ISO. Vous pouvez l'obtenir en visitant le site de l'ISO.

ISO 7816-1
Cette partie définit entre autres le format "carte de crédit " (85 * 54 * 0.76 mm.)
Elle définit également les contraintes physiques auxquelles la carte doit résister, par exemple résistance à la flexion et à la torsion mais aussi aux rayons ultraviolets, aux rayons X, et résistance électrique des contacts du microcircuit.

ISO 7816-2
Cette deuxième partie définit la dimension et la position des contacts des microprocesseurs qui sont implantés dans les cartes. un exemple du positionnement de la puce sur la carte à été donné en début de page lors de la comparaison Afnor/ISO

ISO 7816-3
Cette partie définit le protocole de communication qui doit être utilisé par les cartes afin de dialoguer avec le monde extérieur. Cette partie décrit les signaux électriques et les informations qui sont échangées lors de toute communication. Les courants, les tensions, les fréquences des signaux sont normalisés ainsi que le format des données échangées lors d'un dialogue entre une carte et un lecteur de carte.

Quelques caractéristiques données par la norme 7816-3 :

  • La carte ne dispose pas de sa propre horloge, elle est fournie par l'interface, ou maître.
  • La transmission est du type asynchrone, avec 1 start-bit, 8 bits de data, 1 bit de parité paire, et 2 stop-bits, on définit un temps de garde entre 2 caractères transmis.
  • La communication est du type half-duplex, c’est à dire que les entrées et les sorties s’effectuent par alternance et en se servant de la même ligne physique.

La carte ne prend jamais l’initiative de l’échange d’informations. Elle ne fait que répondre à des commandes de la forme :

CLASSE INSTRUCTION PARAMETRE1 PARAMETRE2 LONGUEUR

Ou encore, sous forme abrégée :

CLASS INS P1 P2 LEN

Voici les significations de chacun des octets de la commande reçue :

CLASS : détermine le groupe d’instructions concernées. Si le nombre d’instructions utilisé n’est pas élevé, rien n’interdit de n’utiliser qu’une seule classe.

INS : c’est l’instruction proprement dite, ou encore la commande. C’est cet octet qui détermine l’opération à effectuer par la carte.

P1 et P2 : sont 2 paramètres que la carte reçoit avec la commande. Leur signification dépend de la commande envoyée. Ils peuvent être inutilisés mais doivent tout de même être présents. Leur signification est décrite dans la partie 4.

LEN : peut représenter 2 choses. Soit c’est le nombre d’octets qui suit la commande, dans ce cas la carte s’attendra à recevoir LEN octets supplémentaires avant de traiter la commande dans sa totalité. Soit ce sera la longueur de la chaîne de réponse que le maître s’attend à recevoir en provenance de la carte. C’est l’instruction qui permet d’établir le rôle de LEN.

Concernant la réponse, on distingue :

DATA : zone correspondant aux données de réponse

SW1 & SW2 : ces octets indiquent l'état du déroulement de la commande


Le protocole d’échange d’informations
Voici comment se déroule un échange standard d’informations entre le maître et la carte ISO 7816.

  1. A la mise en service, le maître génère un RESET sur la pin MCLR, la carte répond avec un certain nombres d’octets. Cette réponse s’appelle ATR, pour "Answer To Reset".
  2. Le maître envoie la commande Class INS P1 P2 LEN
  3. La carte renvoie l’instruction comme accusé de réception INS
  4. Le maître envoie éventuellement les données complémentaires
  5. La carte envoie la réponse DATA, SW1 et SW2
  6. La carte envoie le status et repasse en mode d’attente de commande


Les liaisons série asynchrones
Pour comprendre la suite de ce chapitre, il faut comprendre ce qu’est une liaison série asynchrone.

Le mode série est défini pour signaler que tous les bits d’un octet vont être envoyés en série les uns derrière les autres. Ceci par opposition au mode parallèle pour lequel tous les bits sont envoyés en même temps, chacun sur un fil séparé.

Asynchrone est l’opposé de synchrone, c’est-à-dire qu’il s’agit d’une liaison qui ne fournit pas une horloge destinée à indiquer le début et la fin de chaque bit envoyé. Nous aurons donc besoin d’un mécanisme destiné à repérer la position de chaque bit. Notez qu’il s’agit ici d’un mode asynchrone particulier, étant donné que la carte utilise la même horloge que le maitre. La vitesse ne sera donc exeptionnellement pas donnée en bauds, mais en nombre d’impulsions d’horloge.

Pour recevoir correctement les bits envoyés, il faut convenir d’un protocole de communication. Ce dernier doit comprendre la vitesse de transmission en bauds et le format, c’est à dire le nombre de start-bits, de stop-bits, de bits de données et le type de parité.

Nous allons maintenant expliquer ces concepts et indiquer quelles sont les valeurs employées dans la norme ISO 7816.

  • Le start-bit
    Au repos, la ligne se trouve à l’état haut. L’émetteur fait alors passer la ligne à l’état bas : c’est le start-bit. C’est ce changement de niveau qui va permettre de détecter le début de la réception des bits en série.
    Les valeurs admissibles sont 1 ou 2 start-bit(s). La norme ISO 7816 nécessite un start-bit.

  • Les bits de donnée
    Après avoir reçu le start-bit, on trouve les bits de données, en commençant par le bit 0. Les normes usuelles utilisent 7 ou 8 bits de data. Pour la norme ISO 7816, nous aurons 8 bits de donnée, ce qui nous donne des valeurs admissibles de 0 à 0xFF pour chaque octet reçu.

  • Le bit de parité
    Le bit de parité est une vérification du bon déroulement du transfert. Lors de l’émission, on comptabilise chaque bit de donnée qui vaut 1. A la fin du comptage, on ajoute un bit à 1 ou à 0 de façon à obtenir un nombre de bits total impair ou pair.
    On dira qu’on utilise une parité paire si le nombre de bits à 1 dans les bits de données et le dans bit de parité est un nombre pair.
    De même, une parité impaire donnera un nombre impair de bits à 1. Notez que le bit de parité n’est pas indispensable dans une liaison série asynchrone. Nous avons donc 3 possibilités, à savoir pas de parité, parité paire, ou parité impaire. Dans le cas de la norme ISO 7816, nous devrons utiliser une parité paire.

  • Le stop-bit
    Après la réception des bits précédents, il est impératif de remettre la ligne à l’état haut pour pouvoir détecter le start-bit de l’octet suivant. C’est le rôle du stop-bit. Les valeurs admissibles sont de 1 ou 2 stop-bits.
    Dans la norme ISO 7816, nous utiliserons 2 stop-bits, c’est à dire tout simplement un stop-bit d’une durée équivalente à la durée de 2 bits.

  • Vitesse et débit
    La durée de chaque bit est une constante et dépend de la vitesse de transmission. Par exemple, pour une vitesse de 9600 bauds, c’est à dire 9600 bits par seconde, chaque bit durera 1s/9600 = 104,17 µS.
    Le temps nécessaire pour recevoir un octet entier est la somme du temps nécessaire pour recevoir chacun des bits de cet octet. Dans le cas général de la norme ISO 7816, on utilise 1 start-bit + 8 bits de données + 1 bit de parité + 2 stop-bits = 12 bits. Le temps total pour recevoir un octet est donc de 1250 µS.
    Le débit maximum en octets par seconde est donc égal à :
    Débit maximum = 1 / (nbre de bits * durée d’un bit), soit pour la norme ISO 7816
    1 / 1250 * 10-6 = 800 octets par seconde.
    Nous parlons ici de débit maximum car ceci est le cas dans lequel un octet commence dès la fin du précédent, ce qui n’est pas obligatoire pour une liaison asynchrone.

ISO 7816-4
la norme ISO 7816-4 a pour objectif de définir les commandes inter-industries pour les échanges internationaux ainsi que les mécanismes de sécurité qui doivent être implantés pour accéder aux données inscrites dans les fichiers. Elle définit donc le
format des «paquets de données» échangés entre un lecteur et une carte : APDUs (Application Programming Data Units) de commande et de réponse (vue dans la partie 2).

La figure représente l'échange le couple Commande/Réponse échangé lors d'une communication.

Vous pouvez trouver plus de détails sur la partie 4 de la norme ici