SmartCard – Carte à puce

Introduction

Une carte à puce est une carte en plastique qui intègre un circuit électronique dont la surface est limitée à 25 mm2.

image

Lorsque la carte est mise sous tension, elle émet une réponse au démarrage (en anglais Anwer-To-Reset : ATR).

La carte à puce utilisée dans ce post est une carte Gemalto .NET V2+, anciennement connu sous le nom Axalto Cryptoflex .Net.

A l’aide de la commande certutil -scinfo ; nous pouvons voir que l’ATR de la carte est :  3B 16 96 41 73 74 72 69 64

image

Windows identifie le modèle de carte à puce à l’aide de l’ATR en cherchant une correspondance dans la base de registre à partir de la clef  HKLM\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards.

Si une correspondance est trouvé dans la base de registre alors le CSP monolithique ou mini-pilote correspondant est chargé.
(ici le mini-pilote axaltocm.dll)

image

Support des cartes à puce dans Windows

La plateforme Windows est agnostique par rapport au système d’exploitation du support (.NET, JavaCard, MultOS, BasicCard etc.) à partir du moment où un module cryptographique (CSP monolithique ou mini-pilote) est disponible.

Concernant le lecteur de carte à puce, le pilote doit être conforme à la spécification PC/SC v1.0 du PC/SC workgroup. 

image

Sous Windows, le support des fonctions cryptographiques et la gestion des certificats X509 v3 sont nativement pris en charge au travers de CryptoAPI (CAPI).

image

CAPI2 implémente le support des certificats, comme la construction des chaînes de certificats, la signature…

CAPI1 fait référence au support des composants cryptographiques de base, tel que les fonctions de chiffrement, de déchiffrement et de hachage.

La prise en compte d’une carte à puce suppose historiquement de disposer du CSP (Cryptographic Service Provider) monolithique pour ce support.
L’infrastructure carte à puce de la plateforme Windows  a vu l’introduction d’un SmartCard Base CSP générique et d’un modèle à base de mini-pilotes pour les cartes à puce de façon à faciliter la prise en compte de nouveaux supports.
Le SmartCard Base CSP est disponible sous forme de téléchargement gratuit à partir de  Windows 2000 SP4 et supérieur.
Il est présent nativement sur Windows Vista et Windows Server 2008.

CNG (Cryptographic Next Generation) est le successeur de CAPI1 qui est un bus cryptographique ouvert (Open Cryptographic Interface) disponible à partir de Windows Vista et Windows Server 2008.

La prise en compte avec CNG d’une carte à puce suppose de disposer d’un KSP pour ce support. Windows Vista et (Windows Server 2008) intègre nativement un SmartCard KSP qui est le pendant du SmartCard Base CSP pour CryptoAPI 1.0.
Le SmartCard KSP s’appuie sur le même modèle à base de mini-pilotes pour les cartes à puce de façon à faciliter la prise en compte de nouveaux supports. Il est ainsi possible de développer des mini-pilotes pour CryptoAPI, pour CNG, ou duals pour CryptoAPI et CNG.