Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab Windows 7 werden Smartcard-Minidriver, die über das Windows-Logo-Programm (WLP) zertifiziert sind, automatisch von den Komponenten für Windows Plug and Play heruntergeladen und installiert. Windows 7 führt auch einen Klassen-Minidriver für PIV-kompatible Karten und Karten ein, die den GIDS-Kartenrand unterstützen.
Wenn eine Smartcard in den Reader eingefügt wird, führt Windows die folgenden Ermittlungsprozesse aus:
Smartcard-Plug-and-Play-Prozess:
Dieser Prozess fordert einen logo-zertifizierten Minidriver über Plug and Play von Windows Update ab und lädt ihn herunter.
Winscard Discovery Process: Dieser Prozess ordnet eine kompatible Smartcard einem PIV- oder GIDS-kompatiblen Minidriver zu.
Windows SmartCard Class Minidriver Discovery Process: Dieser Prozess ordnet einen installierten Minidriver einer Smartcard zu.
In der folgenden Tabelle sind die AID-Werte aufgeführt, die von den verschiedenen Ermittlungsprozessen verwendet werden.
| AID-Name | AID-Wert | BESCHREIBUNG |
|---|---|---|
| PIV AID | A0 00 00 03 08 00 00 10 00 xx yy | PIV AID, die keine Versionsinformationen enthält. Das Microsoft-Smartcardframework ignoriert die am wenigsten signifikanten 2 Byte. |
| MS GIDS AID | A0 00 00 03 97 42 54 46 59 xx yy | MICROSOFT (MS) GIDS AID, die keine Versionsinformationen enthält. Die am wenigsten signifikanten 2 Bytes werden nicht an die Karte gesendet, sondern vom Host wie folgt reserviert:
|
| SC PNP AID | A0 00 00 03 97 43 49 44 5F 01 00 | Smartcard Plug and Play AID. |
In der folgenden Tabelle sind die Dateien aufgeführt, die vom Ermittlungsprozess verwendet werden.
| Befehl | Anweisungswert (INS) |
|---|---|
| MF | 0x3F00 |
| EF. ATR | 0x2F01 |
In der folgenden Tabelle sind die Befehle aufgeführt, die von den verschiedenen Ermittlungsprozessen verwendet werden.
| Befehl | Instruktionswert (INS) |
|---|---|
| SELECT | 0xA4 |
| ABRUFEN VON DATEN | 0xCA |
| ANTWORT ERHALTEN | 0xC0 |
Smartcard-Plug-and-Play-Prozess
Plug and Play installiert einen Smartcard-Minidriver, wenn kein kompatibler Posteingangs-Minidriver verfügbar ist. Plug and Play aktualisiert auch die installierten Smartcard-Minidriver über Windows Update.
Um eine dieser Aufgaben auszuführen, muss Plug and Play eine eindeutige ID für die Smartcard ableiten können. Ab Windows 7 beschreibt folgendes den Smartcard-Ermittlungsprozess, den Plug and Play verwendet, um eine eindeutige ID für die Karte abzuleiten:
Plug and Play ruft die historischen Bytes vom ATR ab. Diese Bytes werden später in diesem Ermittlungsprozess verwendet.
Plug and Play gibt einen SELECT-Befehl aus, um die SC PNP AID zu finden. Plug and Play gibt einen GET DATA-Befehl aus, um das proprietäre Windows-Tag 0x7F68 (ASN.1 DER-codiert) zu finden. Weitere Informationen finden Sie im folgenden Unterabschnitt "Windows Smart Card Framework Card Identifier". Wenn dieser Befehl erfolgreich ist, wird eine Liste eindeutiger Bezeichner zurückgegeben. Plug and Play verwendet den ersten Bezeichner in der Liste als Geräte-ID der Smartcard und verwendet diesen Wert für die eindeutige ID der Karte. Weitere Informationen finden Sie unter Geräte-IDs.
Wenn Plug and Play eine eindeutige ID für die Smartcard ableitet, fährt es mit Schritt 12 fort.
Wenn Windows im obigen Schritt keine Geräte-ID abrufen kann, wird ein SELECT-Befehl für MF und EF.ATR gefolgt von einem READ BINARY-Befehl ausgeführt. Wenn es Windows gelingt, einen eindeutigen Bezeichner zu erhalten, der als Geräte-ID für WU verwendet werden kann, wechseln Sie zu Schritt 12.
Wenn Plug and Play einen eindeutigen Bezeichner im obigen Schritt nicht abruft, gibt es einen SELECT-Befehl für die PIV AID aus. Wenn Plug and Play erfolgreich ist, wird die Smartcard als PIV-kompatibles Gerät betrachtet. Plug and Play verwendet Folgendes als eindeutige ID der Karte:
- Die PIV-kompatible Geräte-ID als kompatible ID des Geräts. Weitere Informationen finden Sie unter kompatible IDs.
- Die historischen ATR-Bytes der Karte als Geräte-ID. Wenn keine historischen ATR-Bytes vorhanden sind, verwendet Windows die PIV-kompatible Geräte-ID als Geräte-ID.
Wenn Plug and Play eine eindeutige ID für die Smartcard ableitet, geht es zu Schritt 12 über.
Wenn der SELECT-Befehl in Schritt 4 nicht erfolgreich ist, gibt Windows einen SELECT-Befehl für die MS GIDS AID aus. Wenn Plug and Play erfolgreich die MS GIDS AID auswählt, wird die Smartcard als GIDS-kompatibles Gerät betrachtet. Plug and Play verwendet Folgendes als eindeutige ID der Karte:
- Die GIDS-kompatible Geräte-ID als kompatible ID.
- Die historischen ATR-Bytes der Karte als Geräte-ID. Wenn keine historischen ATR-Bytes vorhanden sind, verwendet Plug and Play die GIDS-kompatible Geräte-ID als Geräte-ID.
Wenn Plug and Play eine eindeutige ID für die Smartcard ableitet, fährt es mit Schritt 12 fort.
Wenn Plug and Play die PIV AID oder die MS GIDS AID nicht auswählen kann, verwendet es die ATR-Verlaufsbytes der Karte (falls vorhanden) als Geräte-ID für die eindeutige ID der Smartkarte.
Wenn Plug and Play nicht über die ATR-Verlaufsbytes verfügt, enthält es nicht genügend Informationen für Windows Update. Plug and Play schlägt den Ermittlungsprozess mit SCARD_E_UNEXPECTED fehl.
Wenn Plug and Play eine eindeutige ID für die Smartcard ableitet, fährt es mit Schritt 12 fort.
Plug and Play beendet den Ermittlungsprozess und verwendet den eindeutigen Bezeichner.
Wenn Plug and Play ab Windows 8 keinen Treiber für die Karte finden kann, wird die Karte mit einem Posteingangs-NULL-Treiber gekoppelt. Zusätzliche Software, die für die Karte spezifisch ist, ist dann erforderlich, damit die Karte funktioniert, wenn sie mit einem Smartcardleser verbunden ist, der mit dem PC verbunden ist.
Winscard-Ermittlungsprozess
Der Winscard(Winscard.dll)-Ermittlungsprozess wird verwendet, um eine Karte im System einem installierten Minidriver zuzuordnen. Der Prozess wird gestartet, wenn SCardListCards oder SCardLocateCards aufgerufen wird.
Ab Windows 7 wird der Winscard-Ermittlungsprozess wie folgt beschrieben:
Winscard sucht in der Registrierung unter dem Calais-Schlüssel nach verschiedenen Unterschlüsseln, die Smartcards darstellen, die auf dem Computer installiert sind. Diese Unterschlüssel befinden sich unter:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards
Winscard durchsucht jeden Unterschlüssel unter dem SmartCards-Unterschlüssel nach einer Übereinstimmung zwischen dem ATR-Wert des Unterschlüssels und einem ATR-Wert, der von der Smartcard abgerufen wird. Wenn eine Übereinstimmung gefunden wird, fahren Sie mit Schritt 6 fort.
Winscard sucht nach einer Übereinstimmung zwischen einem SmartCards-Unterschlüsselwert für einen Minidriver und einem Wert innerhalb der PIV Device ATR Cache (für PIV-Karten) oder IDMP ATR Cache (für Microsoft GIDS-kompatible Karten) Unterschlüssel. Wenn eine Übereinstimmung gefunden wird, wechseln Sie zu Schritt 6.
Winscard gibt einen SELECT-Befehl für die MS GIDS AID aus. Wenn dieser Befehl erfolgreich ist, fahren Sie mit Schritt 6 fort.
Wenn Schritt 4 fehlschlägt, gibt Winscard einen SELECT-Befehl für die PIV AID aus. Wenn dieser Befehl erfolgreich ist, fahren Sie mit Schritt 6 fort.
Winscard gibt den Namen der Karte zurück, die dem Minidriver-Registrierungsschlüssel entspricht, der der Karte entspricht.
In der folgenden Tabelle werden die verschiedenen Registrierungsschlüssel beschrieben, die der Winscard-Ermittlungsprozess verwendet.
| Registrierungsschlüssel | Verwendung |
|---|---|
| HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Cryptography\Calais\SmartCards | Winscard verwendet diesen Schlüssel als Calais\SmartCards-Schlüssel in Schritt 1. |
| HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft \Cryptography\Calais\PIV Device ATR Cache | Wenn eine Übereinstimmung in Schritt 4 gefunden wird, wird der vollständige ATR der abgeglichenen Karte in diesem Registrierungsschlüssel als Binärwert gespeichert. Der Name des Eintrags wird zufällig ausgewählt.
Nachdem dieser Eintrag zwischengespeichert wurde, wird er in Schritt 3 verwendet, um die Leistung zu verbessern. |
| HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft \Cryptography\Calais\IDMP ATR Cache | Wenn eine Übereinstimmung in Schritt 5 gefunden wird, wird der vollständige ATR der übereinstimmenen Karte unter diesem Registrierungsschlüssel als Binärwert gespeichert. Der Name des Eintrags wird zufällig ausgewählt.
Nachdem dieser Eintrag zwischengespeichert wurde, wird er in Schritt 3 verwendet, um die Leistung zu verbessern. |
Windows Smart Card Klasse Minidriver Erkennungsprozess
Der Minidriver der Windows-Smartcardklasse führt den folgenden Ermittlungsprozess aus, wenn CardAcquireContext aufgerufen wird. Der Minidriver führt diesen Ermittlungsprozess aus, um die zugeordnete Karte als PIV- oder Microsoft GIDS-kompatibel zu markieren:
Der Minidriver gibt einen SELECT-Befehl für die PIV AID aus. Wenn der Befehl erfolgreich ist, wird die Karte als PIV-kompatibel gekennzeichnet, und der Ermittlungsprozess wird beendet.
Andernfalls gibt der Minidriver einen SELECT-Befehl für die MS GIDS AID aus. Wenn der Befehl erfolgreich ist oder die AID nicht gefunden werden kann, kennzeichnet der Minidriver die Karte als MS GIDS.
Wenn die Smartcard zuvor über den Winscard-Discovery-Prozess mit dem Klassenminidriver ermittelt wurde, reagiert sie möglicherweise nicht auf den SELECT-Befehl für die PIV- oder GIDS-AID. In diesem Fall muss es sich um eine Karte eines Anbieters sein, der den GIDS-Kartenrand mit einer benutzerdefinierten AID implementiert. Solche Karten könnten das Microsoft-Smartcarddatenmodell mit zusätzlichen Datenobjekten erweitern.
PIV- und GIDS-Smartcardanbieter können den Minidriver der Smartcard-Klasse von Windows verwenden und Branding hinzufügen, indem sie ein reines INF-Installationspaket bereitstellen. Weitere Informationen zur Verwendung des Minidriver für kompatible Karten finden Sie im INF-Beispiel in Smart Card Plug and Play. Nur historische Bytes werden für Plug-and-Play-Abgleich in der INF-Datei verwendet.
Die VOM Anbieter bereitgestellte INF-Datei erstellt Einträge unter dem Registrierungsunterschlüssel Calais\SmartCards mit den folgenden Informationen.
| Eintragsname | Typ | Wert |
|---|---|---|
| 80000001 | Schnur | Der Minidriverspeicherort der Karte. Dies kann der vollständige Pfad zu einem vom Anbieter bereitgestellten Minidriver oder der Name einer Datei im System32-Verzeichnis oder im Treiberspeicher sein. Es wird empfohlen, dass ein von einem Treiberpaket bereitgestellter Minidriver einen vollständigen Pfad zum Minidriver bereitstellt und der Minidriver vom Treiberspeicher ausgeführt wird. Der Minidriver für den Posteingang, msclmd.dll, wird unter %windir%Verzeichnis "\system32" gespeichert. |
| ATR | Binär | ATR der Karte |
| ATRMask | Binär | ATR-Maske der Karte |
| Kryptoanbieter | Schnur | Microsoft BasisSmartcard-Kryptografieanbieter |
| Smartcardschlüsselspeicheranbieter | Schnur | Microsoft Smartcard-Schlüsselspeicheranbieter |
Auswahlmechanismen
Anwendungen, die Microsoft-IDs enthalten
Das Windows-Smartcardframework versucht, eine Anwendung mithilfe des Microsoft Plug and Play AID auszuwählen. Wenn die Karte die angegebene AID nicht unterstützt, sollte nach dem SELECT-Befehl ein Fehler zurückgegeben werden. Wenn der SELECT-Befehl erfolgreich abgeschlossen ist, versucht das Framework, die Karte und den entsprechenden Smartcard-Minidriver durch Ausgeben eines GET DATA-Befehls zu identifizieren.
Die GET DATA-Befehle werden unabhängig davon ausgeführt, ob das SC Plug and Play AID unterstützt wird. Auf diese Weise können Anwendungen, die entweder anderen AIDs zugeordnet sind oder keiner AID zugeordnet sind, die Kartenauswahlmechanismen in dieser Spezifikation implementieren.
ABRUFEN VON DATEN
Nachdem das Plug and Play MS AID auf der Karte ausgewählt wurde, gibt das Smartcardframework einen GET DATA-Befehl mit dem proprietären Windows-Tag von 0x7F68 aus. Wenn die Karte den GET DATA-Befehl und das proprietäre Tag unterstützt, antwortet sie, indem eine Liste mit mindestens einem eindeutigen Bezeichner zurückgegeben wird. Die eindeutigen Bezeichner müssen gemäß der Definition im folgenden Abschnitt "Windows Smart Card Framework Card Identifier" strukturiert sein.
Das Windows-Smartcardframework verwendet nur den ersten eindeutigen Bezeichner in der Liste, um den entsprechenden Smartcard-Minidriver zu suchen und zu installieren. Die anderen Bezeichner können in Zukunft verwendet werden.
SELECT PIV AID-Befehl
Um eine PIV-Anwendung zu identifizieren, gibt Windows den BEFEHL SELECT PIV AID aus. Wenn dieser Befehl erfolgreich ist, ist eine PIV-Anwendung auf der Karte vorhanden und jetzt ausgewählt. In diesem Fall kann das Windows-Smartcardframework nun einem PIV-kompatiblen Minidriver die Karte zuordnen.
SELECT MS GIDS AID-Befehl
Um eine MS GIDS-Anwendung zu identifizieren, wird ein SELECT MS GIDS AID-Befehl verwendet. Wenn dieser Befehl erfolgreich ist, ist eine MS GIDS-Anwendung auf der Karte vorhanden und jetzt ausgewählt. Das Windows-Smartcardframework kann jetzt einen MS GIDS-kompatiblen Minidriver der Karte zuordnen.
Verwendung der ATR Historical Bytes
Unter den folgenden Bedingungen fällt das Windows-Smartcard-Framework auf die Verwendung der ATR-historischen Bytes zurück, um den zu ladenden Minidriver zu ermitteln.
- Die Smartcard unterstützt nicht den Befehl GET DATA.
- Die Smartcard unterstützt die AID-Auswahlmethoden in dieser Spezifikation nicht.
Die Verwendung der historischen ATR-Bytes ist die veraltete Methode, die verwendet wird, um die eingefügte Karte zu identifizieren. Das Framework verwendet alle historischen Bytes in der Suche nach einem Minidriver.
Windows SmartCard Framework-Kartenbezeichner
Wenn die Smartcard den Befehl GET DATA unterstützt, erwartet das Windows-Smartcardframework, dass die Karte ein DER-TLV codiertes Bytearray zurückgibt, das in der folgenden ASN.1-Struktur formatiert ist.
CardID ::= SEQUENCE {
version Version DEFAULT v1,
vendor VENDOR,
guids GUIDS }
Version ::= INTEGER {v1(0), v2(1), v3(2)}
VENDOR ::= IA5STRING(SIZE(0..8))
GUID ::= OCTET STRING(SIZE(16))
GUIDS ::= SEQUENCE OF GUID
Das Versionsmitglied muss auf 0 (v1) festgelegt sein.
Das VENDOR-Mitglied muss auf "MSFT" festgelegt sein.
Das GUID-Element ist eine 16-Byte-GUID, die die Karten-/Anwendungskombination eindeutig identifiziert. Dieser Wert wird verwendet, um den entsprechenden Smartcard-Minidriver zu erkennen und zu laden.
Hinweis
Das Unternehmen, das die Anwendung herausgibt, sei es ein IHV oder ISV, muss eine eindeutige GUID für die Kombination aus Karte und Anwendung erstellen.