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
Il existe trois catégories principales de cartes à puces:
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.
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.
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 :
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.
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.
En fonction des usages des cartes, une ou plusieurs technologies peuvent être utilisées. Elles ne sont pas toutes compatibles.
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 support est donc tout désigné pour faire de l'authentification forte.
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).
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).
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..
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.