Les projets concernant les cartes à puce se développant, le CRU a décidé de proposer cette page afin que toute personne intéressée puisse avoir des repères techniques. Elle traite des supports type carte à puce et token cryptographique (clé USB cryptographique). Si vous estimez que ces informations sont incomplètes ou erronées, vous pouvez nous le signaler : contact

Types de cartes et champs d'applications

Il existe trois catégories principales de cartes à puces:

  • Cartes à mémoire
  • Cartes à Microprocesseur
  • Cartes sans contact

Seules ces deux dernières catégories peuvent embarquer des fonctionnalités cryptographiques. Il existe aussi des cartes hybrides afin d'exploiter les champs d'application des cartes à microprocesseur et des cartes sans contact. Selon la terminologie, les cartes hybrides comportent deux puces: une puce avec contact et une puce sans contact. Les cartes dual comportent une seule puce accessible par les deux procédés.

Les cartes à mémoire

Simple support de stockage. La première utilisation de masse a été la télécarte : stock de points décrémenté à chaque appel. Elle peut être en lecture seule. Grâce à l'augmentation de la mémoire des puces, on peut l'utiliser pour stocker des données plus importantes (cartes d'identité dans certains pays, dossier médical...). Mais les fonctionnalités sont limitées. La protection des données n'est pas assurée.

Les cartes à microprocesseur

Le premier champs d'applications a été la carte bancaire française. Des fonctionnalités cryptographiques sont ajoutées dans ces cartes, qui disposent néanmoins de mémoire. Depuis l'augmentation de la puissance de leur processeur et de la taille de la mémoire, le nombre d'applications qui peut y être embarqué est (quasiment) sans limite. Les premières fonctionnalités qui ont été demandées à ces processeurs furent cryptographique, afin de s'assurer que le possesseur d'une carte en est bien son propriétaire. Elles sont actuellement utilisées dans les téléphones mobiles, les cartes bancaires... Cartes multifonctionnelles avec possibilité d'utilisation de :

  • identification
  • signature électronique
  • stockage sécurisé de données
  • autres applications avancées seules ou en ajout des fonctionnalités précédentes

L'énergie nécessaire au fonctionnement de la carte ainsi que les données sont transmises entre le lecteur et le terminal par contact électrique.

Les cartes sans contact

Dans ces cartes, l'énergie et les données sont transmises sans aucun contact électrique entre la carte et le terminal. Ces cartes sont typiquement utilisées pour de l'authentification (transports en commun, bagages, bâtiments...). Elles peuvent être utilisées jusqu'à environ un mètre du terminal. On voit bien le danger dans le cadre d'opérations de paiement. Une authentification du porteur est normalement requise dans ce cas (par le geste d'introduire la carte dans le terminal et de valider la somme par exemple).

Pour les problèmes d'authentification et de paiement sur une seule et même carte, on utilisera des cartes combinant les deux technologies.

Usages

En fonction des usages des cartes, une ou plusieurs technologies peuvent être utilisées. Elles ne sont pas toutes compatibles.

Authentification forte

Pour s'authentifier auprès d'un système d'information, on utilise des cartes à puces pouvant contenir des certificats. Ce sont donc des cartes à microprocesseur dotées de fonctionnalités cryptographiques. D'autres procédés sont possibles, en utilisant des javacards par exemple, mais ils nécessitent du développement supplémentaire car les standards d'authentification (IPSec, EAP-TLS, SmartLogon) utilisent des certificats (pour des javacards, il faut alors développer une interface et un “magasin” de certificats). Si des certificats ne sont pas utilisés, il faut envisager un développement privatif (javacards avec gestion de code PIN et identifiant unique par exemple).

Plus généralement, une carte à puce associée à un code PIN permet typiquement une authentification à deux facteurs :

  • ce que je possède : la carte
  • ce que je sais : le code pin

Ce support est donc tout désigné pour faire de l'authentification forte.

Accès à des bâtiments

Pour l'accès à une salle ou à un bâtiment, on utilisera une carte sans contact (si la carte a une autre utilisation, elle peut être hybride ou duale). En effet, l'utilisation d'un lecteur de carte à puce avec contact serait trop contraignante. Comme il existe deux normes (ISO 14443-A et 14443-B) et qu'elles ne sont pas compatibles, il vaut mieux utiliser des lecteurs “bi-norme”. Dans le cas de l'accès au bâtiment ou à la salle, un numéro de série est fourni par la carte et permet l'accès ou non à la zone. Ce système peut permettre de faire de l'authentification simple dans d'autres domaines (bibliothèque par exemple).

Porte-monnaie électronique

Si le porte-monnaie en question n'est utilisé que dans les locaux de l'institution, on peut très bien envisager l'utilisation d'une carte sans-contact simple. La gestion du porte-monnaie se fait alors en décentralisé (le montant disponible sur le “compte” est géré par une application qui est hébergée sur un serveur par exemple). Si le porte-monnaie doit pouvoir être utilisé à l'extérieur, il faut envisager des solutions déja déployées comme Monéo. Dans le cas de Monéo, pour combiner le porte-monnaie avec d'autres fonctionnalités, il faut définir des zones d'applications non bancaires (55 octets par zone). Ceci doit être fait en coopération avec le fournisseur. On peut alors combiner le porte-monnaie avec d'autres usages ne nécessitant pas d'authentification forte (un code PIN n'est pas demandé et on ne peut y stocker de certificat X.509).

Émargement

Si on veut utiliser une carte à puce pour faire de l'émargement, il faut distinguer deux cas : usage interne ou émargement au sens légal. Dans le cas d'émargement pour usage interne, on peut utiliser tout moyen d'authentification. Par contre, une signature au sens légal est très encadrée. L'usage de certificats X.509 de signature émis par autorité de certification est nécessaire. La clef a dû être générée au moyen d'un procédé sûr et seul le titulaire doit pouvoir être en sa possession. Le procédé devant garantir l'identité du porteur et l'intégrité de l'acte, la carte à puce doit embarquer des fonctionnalités cryptographiques (exécution d'une signature numérique à l'aide d'un certificat) et permettre une authentification forte..

Standards et API

Les standards internationaux sont développés sous les auspices de l'ISO/IEC. Malheureusement, ces standards ne sont pas ouverts et leur accès est payant. Les laboratoires RSA (Rivest, Shamir et Adleman, inventeurs de l'algorithme du même nom) élaborent des API appelées PKCS (Public Key Cryptography Standards), parmi lesquels, on trouve des standards de communication et d'interrogation des cartes à puces.

Normes ISO/IEC

  • Cartes utilisées dans le cadre de transaction financières : ISO TC68/SC6
  • Architecture sécurité : ISO 10202/11568
  • Applications générales : ISO/IEC JTC1/SC17
  • Propriétés physiques et méthodes de test : ISO/IEC 7810/7811/7813/10373
  • Cartes à puce intégrée avec contacts : ISO/IEC 7816
  • Cartes à puce intégrée sans contact : ISO/IEC 10536/14443/15693 (la norme ISO/IEC 14443 est implémenté partiellement dans Mifare)
  • Cartes optiques et équipement ; ISO/IEC 11694

API et interfaces

  • PKCS#11 : Cryptographic Token Interface Standard. API décrivant les fonctions d'accès à un ou plusieurs jetons cryptographiques sans dépendre d'une solution particulière. Elle est aussi appelée API Cryptoki
  • PKCS#15 : Cryptographic Token Information Format Standard. Standard qui décrit une façon de représenter les métadonnées de la carte à puce sur la carte elle-même.
  • CAPI : Crypto API. API cryptographique Microsoft, équivalent de PKCS#11
  • PC/SC : Personnal Computer/Smart Card. Spécification décrivant une interface pour intégrer une carte à puce dans n'importe quelle application, indépendamment de la plate-forme.

Glossaire

  • ISO : International Organization for Standardization
  • IEC : International Electrotechnical Commission
  • Java Card : Carte à puce embarquant une JVM (Java Virtual Machine)
  • ROM : Read-only memory. C'est une mémoire non volatile utilisée dans les cartes à puce. Elle est principalement utilisée pour stocker les programmes et les données statiques.
  • Masque de puce : c'est le système d'exploitation de la carte. Il est stocké dans la ROM et ne peut donc être modifié au cours de sa vie.
  • Mifare : cartes sans contact. Implémentation partielle de la norme ISO/IEC 14443

Liens et Documents relatifs

Documents

Liens

  • Projet M.U.S.C.L.E. : utilisation de cartes à puces sous linux
  • OPENSC : Bibliothèques d'utilisation de cartes compatibles PKCS#15 sous Linux
Valid XHTML 1.0 Transitional