Smartcardarchitektur

In diesem Thema für IT-Experten wird die Systemarchitektur beschrieben, die Smartcards im Windows-Betriebssystem unterstützt, einschließlich der Architektur des Anmeldeinformationsanbieters und der Smart Karte-Subsystemarchitektur.

Die Authentifizierung ist ein Prozess zum Überprüfen der Identität eines Objekts oder einer Person. Wenn Sie ein Objekt authentifizieren, z. B. eine intelligente Karte, besteht das Ziel darin, zu überprüfen, ob das Objekt original ist. Wenn Sie eine Person authentifizieren, besteht das Ziel darin, zu überprüfen, ob Sie es nicht mit einem Betrüger zu tun haben.

In einem Netzwerkkontext ist die Authentifizierung der Nachweis der Identität gegenüber einer Netzwerkanwendung oder -ressource. In der Regel wird die Identität durch einen kryptografischen Vorgang nachgewiesen, der einen Schlüssel verwendet, der nur dem Benutzer bekannt ist (z. B. mit Kryptografie mit öffentlichem Schlüssel) oder einen gemeinsam genutzten Schlüssel. Die Serverseite des Authentifizierungsaustauschs vergleicht die signierten Daten mit einem bekannten kryptografischen Schlüssel, um den Authentifizierungsversuch zu überprüfen. Das Speichern der kryptografischen Schlüssel an einem sicheren zentralen Ort macht den Authentifizierungsprozess skalierbar und verwaltbar.

Für Smartcards unterstützt Windows eine Anbieterarchitektur, die die Anforderungen an die sichere Authentifizierung erfüllt und erweiterbar ist, sodass Sie benutzerdefinierte Anmeldeinformationsanbieter einschließen können. Dieses Thema enthält Informationen zu folgenden Themen:

Architektur des Anmeldeinformationsanbieters

In der folgenden Tabelle sind die Komponenten aufgeführt, die in der interaktiven Anmeldearchitektur enthalten sind:

Komponente Beschreibung
Winlogon Stellt eine interaktive Anmeldeinfrastruktur bereit.
Anmeldeoberfläche Stellt interaktives Benutzeroberflächenrendering bereit.
Anmeldeinformationsanbieter (Kennwort und intelligente Karte) Beschreibt Anmeldeinformationen und Serialisierung von Anmeldeinformationen.
Lokale Sicherheitsautorität (LSA) Verarbeitet Anmeldeinformationen.
Authentifizierungspakete Enthält NTLM und das Kerberos-Protokoll. Kommuniziert mit Serverauthentifizierungspaketen, um Benutzer zu authentifizieren.

Die interaktive Anmeldung in Windows beginnt, wenn der Benutzer STRG+ALT+ENTF drückt. Die Tastenkombination STRG+ALT+ENTF wird als sichere Aufmerksamkeitssequenz (SAS) bezeichnet. Damit andere Programme und Prozesse sie nicht verwenden können, registriert Winlogon diese Sequenz während des Startvorgangs.

Nach dem Empfang der SAS generiert die Benutzeroberfläche dann die Anmeldekachel aus den Informationen, die von den registrierten Anmeldeinformationsanbietern empfangen wurden. Die folgende Grafik zeigt die Architektur für Anmeldeinformationsanbieter im Windows-Betriebssystem.

Architektur des Anmeldeinformationsanbieters.

In der Regel muss ein Benutzer, der sich mit einem lokalen Konto oder domänenkonto bei einem Computer anmeldet, einen Benutzernamen und ein Kennwort eingeben. Diese Anmeldeinformationen werden verwendet, um die Identität des Benutzers zu überprüfen. Für die Anmeldung mit intelligenten Karte sind die Anmeldeinformationen eines Benutzers auf dem Sicherheitschip des intelligenten Karte enthalten. Ein smarter Karte Leser ermöglicht es dem Computer, mit dem Sicherheitschip auf dem smarten Karte zu interagieren. Wenn sich Benutzer mit einem intelligenten Karte anmelden, geben sie anstelle eines Benutzernamens und Kennworts eine persönliche Identifikationsnummer (PIN) ein.

Anmeldeinformationsanbieter sind prozessinterne COM-Objekte, die auf dem lokalen System ausgeführt werden und zum Sammeln von Anmeldeinformationen verwendet werden. Die Anmeldebenutzeroberfläche bietet interaktives Rendern der Benutzeroberfläche, Winlogon stellt eine interaktive Anmeldeinfrastruktur bereit, und Anmeldeinformationsanbieter arbeiten mit beiden Komponenten, um Anmeldeinformationen zu sammeln und zu verarbeiten.

Winlogon weist die Anmeldeoberfläche an, Kacheln des Anmeldeinformationsanbieters anzuzeigen, nachdem ein SAS-Ereignis empfangen wurde. Die Anmeldeoberfläche fragt jeden Anmeldeinformationsanbieter nach der Anzahl der Anmeldeinformationen ab, die er aufzählen möchte. Anmeldeinformationsanbieter haben die Möglichkeit, eine dieser Kacheln als Standard anzugeben. Nachdem alle Anbieter ihre Kacheln aufgelistet haben, werden sie dem Benutzer auf der Anmeldeoberfläche angezeigt. Der Benutzer interagiert mit einer Kachel, um die richtigen Anmeldeinformationen anzugeben. Die Anmeldeoberfläche übermittelt diese Anmeldeinformationen für die Authentifizierung.

In Kombination mit unterstützender Hardware können Anmeldeinformationsanbieter das Windows-Betriebssystem erweitern, um Benutzern die Anmeldung mithilfe von Biometrie (z. B. Fingerabdruck, Netzhaut- oder Spracherkennung), Kennwort, PIN, Smart Karte-Zertifikat oder einem benutzerdefinierten Authentifizierungspaket zu ermöglichen. Unternehmen und IT-Experten können benutzerdefinierte Authentifizierungsmechanismen für alle Domänenbenutzer entwickeln und bereitstellen, und sie können explizit verlangen, dass Benutzer diesen benutzerdefinierten Anmeldemechanismus verwenden.

Hinweis

Anmeldeinformationsanbieter sind keine Erzwingungsmechanismen. Sie werden verwendet, um Anmeldeinformationen zu sammeln und zu serialisieren. Die LSA- und Authentifizierungspakete erzwingen Sicherheit.

Anmeldeinformationsanbieter können so konzipiert werden, dass sie einmaliges Anmelden (Single Sign-In, SSO) unterstützen. In diesem Prozess authentifizieren sie Benutzer bei einem sicheren Netzwerkzugriffspunkt (mithilfe von RADIUS und anderen Technologien), um sich beim Computer anzumelden. Anmeldeinformationsanbieter sind auch für die Unterstützung anwendungsspezifischer Anmeldeinformationen konzipiert und können für die Authentifizierung bei Netzwerkressourcen, den Beitritt von Computern zu einer Domäne oder zur Bereitstellung der Administratorzustimmung für die Benutzerkontensteuerung (UAC) verwendet werden.

Auf einem Computer können mehrere Anmeldeinformationsanbieter gleichzeitig vorhanden sein.

Anmeldeinformationsanbieter müssen auf einem Computer unter Windows registriert sein und sind für Folgendes verantwortlich:

  • Beschreiben der Anmeldeinformationen, die für die Authentifizierung erforderlich sind
  • Verarbeiten von Kommunikation und Logik mit externen Authentifizierungsautoritäten
  • Packen von Anmeldeinformationen für die interaktive Anmeldung und die Netzwerkanmeldung

Hinweis

Die Anmeldeinformationsanbieter-API rendert die Benutzeroberfläche nicht. Es beschreibt, was gerendert werden muss.
Nur der Kennwortanmeldeinformationsanbieter ist im abgesicherten Modus verfügbar.
Der Anmeldeinformationsanbieter für intelligente Karte ist während des Netzwerks im abgesicherten Modus verfügbar.

Smart Karte-Subsystemarchitektur

Anbieter bieten Smartcards und Smart Karte-Leser an, und in vielen Fällen unterscheiden sich die Anbieter für die intelligente Karte und den Smart Karte Reader. Treiber für intelligente Karte-Leser werden auf den Pc/SmartCard-Standard (PC/SC) geschrieben. Jede intelligente Karte muss über einen Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) verfügen, der die CryptoAPI-Schnittstellen verwendet, um kryptografische Vorgänge zu ermöglichen, und die WinSCard-APIs, um die Kommunikation mit Smart Karte Hardware zu ermöglichen.

Basis-CSP und Smart Karte Minidriver-Architektur

Die folgende Grafik zeigt die Beziehung zwischen CryptoAPI, CSPs, dem SmartCard Base Cryptographic Service Provider (Base CSP) und smarten Karte Minidrivern.

Basis-CSP und smarte Karte Minidriver-Architektur.

Zwischenspeichern mit Basis-CSP und Intelligentem Karte KSP

Smart Karte-Architektur verwendet Zwischenspeicherungsmechanismen, um Vorgänge zu optimieren und den Zugriff eines Benutzers auf eine PIN zu verbessern.

  • Datenzwischenspeicherung: Der Datencache bietet einen einzelnen Prozess, um intelligente Karte E/A-Vorgänge zu minimieren.
  • PIN-Zwischenspeicherung: Der PIN-Cache hilft dem Benutzer, bei jeder nicht authentifizierten smarten Karte erneut eine PIN eingeben zu müssen.

Datenzwischenspeicherung

Jeder CSP implementiert den aktuellen Smart Karte-Datencache separat. Der Basis-CSP implementiert einen robusten Zwischenspeicherungsmechanismus, der es einem einzelnen Prozess ermöglicht, intelligente Karte E/A-Vorgänge zu minimieren.

Der vorhandene globale Cache funktioniert wie folgt:

  1. Die Anwendung fordert einen kryptografischen Vorgang an. Beispielsweise soll ein Benutzerzertifikat aus dem smarten Karte
  2. Der CSP überprüft seinen Cache auf das Element.
  3. Wenn das Element nicht im Cache gefunden wird oder das Element zwischengespeichert, aber nicht aktuell ist, wird das Element aus der intelligenten Karte
  4. Nachdem ein Element aus dem smarten Karte gelesen wurde, wird es dem Cache hinzugefügt. Jede vorhandene veraltete Kopie dieses Elements wird ersetzt.

Drei Typen von Objekten oder Daten werden vom CSP zwischengespeichert: Pins (weitere Informationen finden Sie unter PIN-Zwischenspeicherung), Zertifikate und Dateien. Wenn sich zwischengespeicherte Daten ändern, wird das entsprechende Objekt in aufeinander folgenden Vorgängen aus dem smarten Karte gelesen. Wenn beispielsweise eine Datei in den smarten Karte geschrieben wird, ist der CSP-Cache für die Dateien veraltet, und andere Prozesse lesen die intelligente Karte mindestens einmal, um ihren CSP-Cache zu aktualisieren.

Der globale Datencache wird im Dienst Smartcards für Windows gehostet. Windows enthält zwei öffentliche Smart Karte-API-Aufrufe: SCardWriteCache und SCardReadCache. Diese API-Aufrufe machen globale Datenzwischenspeicherungsfunktionen für Anwendungen verfügbar. Jede intelligente Karte, die der Smart Karte Minidriver-Spezifikation entspricht, verfügt über einen 16-Byte-Karte-Bezeichner. Dieser Wert wird verwendet, um zwischengespeicherte Daten eindeutig zu identifizieren, die sich auf eine bestimmte intelligente Karte beziehen. Der Standardmäßige Windows-GUID-Typ wird verwendet. Diese APIs ermöglichen es einer Anwendung, Daten zum globalen Cache hinzuzufügen und aus ihnen zu lesen.

PIN-Zwischenspeicherung

Der PIN-Cache schützt den Benutzer vor der Eingabe einer PIN bei jeder nicht authentifizierten smarten Karte. Nachdem eine intelligente Karte authentifiziert wurde, unterscheidet sie sich nicht zwischen hostseitigen Anwendungen. Jede Anwendung kann auf private Daten auf der intelligenten Karte zugreifen.

Um dies abzumildern, wechselt die intelligente Karte in einen exklusiven Zustand, wenn sich eine Anwendung bei der intelligenten Karte authentifiziert. Dies bedeutet jedoch, dass andere Anwendungen nicht mit dem intelligenten Karte kommunizieren können und blockiert werden. Daher werden solche exklusiven Verbindungen minimiert. Das Problem besteht darin, dass ein Protokoll (z. B. das Kerberos-Protokoll) mehrere Signaturvorgänge erfordert. Daher erfordert das Protokoll exklusiven Zugriff auf die intelligente Karte über einen längeren Zeitraum oder mehrere Authentifizierungsvorgänge. Hier wird der PIN-Cache verwendet, um die exklusive Verwendung der intelligenten Karte zu minimieren, ohne dass der Benutzer mehrmals eine PIN eingeben muss.

Das folgende Beispiel veranschaulicht, wie dies funktioniert. In diesem Szenario gibt es zwei Anwendungen: Outlook und Internet Explorer. Die Anwendungen verwenden Smartcards für verschiedene Zwecke.

  1. Der Benutzer startet Outlook und versucht, eine signierte E-Mail zu senden. Der private Schlüssel befindet sich im intelligenten Karte
  2. Outlook fordert den Benutzer zur Eingabe der smarten Karte-PIN auf. Der Benutzer gibt die richtige PIN ein.
  3. E-Mail-Daten werden für den Signaturvorgang an den smarten Karte gesendet. Der Outlook-Client formatiert die Antwort und sendet die E-Mail.
  4. Der Benutzer öffnet internet Explorer und versucht, auf einen geschützten Standort zuzugreifen, der tls-Authentifizierung (Transport Layer Security) für den Client erfordert.
  5. Internet Explorer fordert den Benutzer zur Eingabe der smarten Karte-PIN auf. Der Benutzer gibt die richtige PIN ein.
  6. Der TLS-bezogene Private Key-Vorgang erfolgt auf dem intelligenten Karte, und der Benutzer wird authentifiziert und angemeldet.
  7. Der Benutzer kehrt zu Outlook zurück, um eine weitere signierte E-Mail zu senden. Dieses Mal wird der Benutzer nicht zur Eingabe einer PIN aufgefordert, da die PIN aus dem vorherigen Vorgang zwischengespeichert wird. Wenn der Benutzer internet Explorer erneut für einen anderen Vorgang verwendet, fordert internet Explorer den Benutzer nicht zur Eingabe einer PIN auf.

Der Basis-CSP verwaltet intern einen Prozesscache der PIN. Die PIN wird verschlüsselt und im Arbeitsspeicher gespeichert. Die Zum Sichern der PIN verwendeten Funktionen sind RtlEncryptMemory, RtlDecryptMemory und RtlSecureZeroMemory, die Puffer leeren, die die PIN enthalten.

Intelligente Karte-Auswahl

In den folgenden Abschnitten in diesem Artikel wird beschrieben, wie Windows die Smart Karte-Architektur verwendet, um die richtige Smart Karte-Lesersoftware, den Anbieter und die Anmeldeinformationen für eine erfolgreiche Anmeldung für intelligente Karte auszuwählen:

Containerspezifikationsebenen

Als Reaktion auf einen CryptAcquireContext-Aufruf in CryptoAPI versucht der Basis-CSP, den Container, den der Aufrufer angibt, einem bestimmten intelligenten Karte und Leser zuzuordnen. Der Aufrufer kann einen Containernamen mit unterschiedlichen Spezifitätsebenen bereitstellen, wie in der folgenden Tabelle dargestellt, und von den meisten spezifischen bis zu den am wenigsten spezifischen Anforderungen sortiert werden.

Ebenso versucht der intelligente Karte KSP als Reaktion auf einen NCryptOpenKey-Aufruf in CNG, den Container auf die gleiche Weise abzugleichen, und verwendet das gleiche Containerformat, wie in der folgenden Tabelle gezeigt.

Hinweis

Vor dem Öffnen eines Schlüssels mithilfe des intelligenten Karte KSP muss ein Aufruf von NCryptOpenStorageProvider (MS_SMART_CARD_KEY_STORAGE_PROVIDER) erfolgen.

Typ Name Format
Ich Lesername und Containername \.<Reader Name><Container Name>
II Lesername und Containername (NULL) \.<Reader Name>
III Nur Containername <Container Name>
IV Nur Standardcontainer (NULL) NULL

Der Basis-CSP und der intelligente Karte KSP-Cache-Karte Informationen zum Aufrufprozess und zu den Smartcards verarbeiten, auf die der Prozess zugegriffen hat. Bei der Suche nach einem Smart Karte-Container überprüft der Basis-CSP oder der intelligente Karte KSP zuerst seinen Cache für den Prozess. Wenn das zwischengespeicherte Handle ungültig ist oder keine Übereinstimmung gefunden wird, wird die SCardUIDlg-API aufgerufen, um das Karte-Handle abzurufen.

Containervorgänge

Die folgenden drei Containervorgänge können mithilfe von CryptAcquireContext angefordert werden:

  1. Erstellen Sie einen neuen Container. (Die CNG-Entsprechung von CryptAcquireContext mit dwFlags ist auf CRYPT_NEWKEYSET ist NCryptCreatePersistedKey.)
  2. Öffnen Sie einen vorhandenen Container. (Das CNG-Äquivalent von CryptAcquireContext zum Öffnen des Containers ist NCryptOpenKey.)
  3. Löschen sie einen Container. (Die CNG-Entsprechung von CryptAcquireContext mit dwFlags ist auf CRYPT_DELETEKEYSET ist NCryptDeleteKey.)

Die Heuristiken, die verwendet werden, um einem bestimmten intelligenten Karte und Leser ein kryptografisches Handle zuzuordnen, basieren auf dem angeforderten Containervorgang und der verwendeten Containerspezifikationsebene.

In der folgenden Tabelle sind die Einschränkungen für den Containererstellungsvorgang aufgeführt.

Spezifikation Einschränkung
Kein hintergrundbezogener Kontext Die Erstellung eines Schlüsselcontainers muss immer die Benutzeroberfläche anzeigen können, z. B. die PIN-Eingabeaufforderung.
Kein Überschreiben vorhandener Container Wenn der angegebene Container bereits auf dem ausgewählten smarten Karte vorhanden ist, wählen Sie eine andere intelligente Karte aus, oder brechen Sie den Vorgang ab.

Kontextflags

Die folgende Tabelle zeigt die Kontextflags, die als Einschränkungen für den Containererstellungsvorgang verwendet werden.

Flag Beschreibung
CRYPT_SILENT Während dieses Vorgangs kann keine Benutzeroberfläche angezeigt werden.
CRYPT_MACHINE_KEYSET Während dieses Vorgangs sollten keine zwischengespeicherten Daten verwendet werden.
CRYPT_VERIFYCONTEXT Auf der intelligenten Karte kann nur auf öffentliche Daten zugegriffen werden.

Zusätzlich zu Containervorgängen und Containerspezifikationen müssen Sie bei der Auswahl der intelligenten Karte weitere Benutzeroptionen berücksichtigen, z. B. die CryptAcquireContext-Flags.

Wichtig

Das CRYPT_SILENT-Flag kann nicht zum Erstellen eines neuen Containers verwendet werden.

Erstellen eines neuen Containers im automatischen Kontext

Anwendungen können den Basis-CSP mit CRYPT_DEFAULT_CONTAINER_OPTIONALaufrufen, die PIN im automatischen Kontext festlegen und dann einen neuen Container im hintergrundbasierten Kontext erstellen. Dieser Vorgang erfolgt wie folgt:

  1. Rufen Sie CryptAcquireContext auf, indem Sie den Smart Karte-Readernamen als Typ-II-Containerspezifikationsstufe übergeben und das CRYPT_DEFAULT_CONTAINER_OPTIONAL Flag angeben.
  2. Rufen Sie CryptSetProvParam auf, indem Sie oder PP_SIGNATURE_PIN und eine MIT NULL endende ASCII-PIN angebenPP_KEYEXCHANGE_PIN.
  3. Freigeben des in Schritt 1 abgerufenen Kontexts
  4. Rufen Sie CryptAcquireContext mit CRYPT_NEWKEYSETauf, und geben Sie die Containerspezifikationsebene typ I an.
  5. Rufen Sie CryptGenKey auf, um den Schlüssel zu erstellen.

Intelligentes Karte Auswahlverhalten

In einigen der folgenden Szenarien kann der Benutzer aufgefordert werden, eine intelligente Karte einzufügen. Wenn der Benutzerkontext im Hintergrund ist, schlägt dieser Vorgang fehl, und es wird keine Benutzeroberfläche angezeigt. Andernfalls kann der Benutzer als Reaktion auf die Benutzeroberfläche eine intelligente Karte einfügen oder Abbrechen auswählen. Wenn der Benutzer den Vorgang abbricht, schlägt der Vorgang fehl. Das Flussdiagramm zeigt die Auswahlschritte, die vom Windows-Betriebssystem ausgeführt werden.

Intelligenter Karte Auswahlprozess.

Im Allgemeinen wird das Verhalten der intelligenten Karte Auswahl von der SCardUIDlgSelectCard-API behandelt. Der Basis-CSP interagiert mit dieser API, indem er sie direkt aufruft. Der Basis-CSP sendet auch Rückruffunktionen, die zum Filtern und Abgleichen von Kandidaten-Smartcards dienen. Aufrufer von CryptAcquireContext stellen intelligente Karte übereinstimmende Informationen bereit. Intern verwendet der Basis-CSP eine Kombination aus Smart Karte Seriennummern, Lesernamen und Containernamen, um bestimmte Smartcards zu finden.

Jeder Aufruf von SCardUI * kann zu zusätzlichen Informationen führen, die von einem potenziellen smarten Karte gelesen werden. Die Smart Karte-Auswahlrückrufe des Basis-CSP speichern diese Informationen zwischen.

Erstellen einer Übereinstimmung mit einem intelligenten Karte-Leser

Für die Spezifikationsebenen von Containern vom Typ I und Typ II ist der Auswahlprozess für intelligente Karte weniger komplex, da nur die intelligenten Karte im benannten Reader als Übereinstimmung betrachtet werden können. Der Prozess zum Abgleichen eines intelligenten Karte mit einem intelligenten Karte-Leser ist:

  1. Suchen Sie den angeforderten Smart Karte Reader. Wenn er nicht gefunden werden kann, schlägt der Prozess fehl (dies erfordert eine Cachesuche anhand des Lesernamens).
  2. Wenn sich keine intelligente Karte im Reader befindet, wird der Benutzer aufgefordert, eine intelligente Karte einzufügen. (Dies ist nur im nichtsilent-Modus. Wenn der Aufruf im unbeaufsichtigten Modus erfolgt, schlägt er fehl.)
  3. Nur für die Containerspezifikationsstufe II wird der Name des Standardcontainers auf der ausgewählten intelligenten Karte bestimmt.
  4. Suchen Sie nach dem angegebenen Container, um einen vorhandenen Container zu öffnen oder einen vorhandenen Container zu löschen. Wenn der angegebene Container in diesem intelligenten Karte nicht gefunden werden kann, wird der Benutzer aufgefordert, eine intelligente Karte
  5. Wenn das System versucht, einen neuen Container zu erstellen, und der angegebene Container bereits in diesem intelligenten Karte vorhanden ist, tritt beim Prozess ein Fehler auf.

Intelligente Karte übereinstimmungen

Für die Containerspezifikationsstufen III und IV wird eine umfassendere Methode verwendet, um eine geeignete intelligente Karte mit einem Benutzerkontext abzugleichen, da mehrere zwischengespeicherte Smartcards die angegebenen Kriterien erfüllen können.

Öffnen eines vorhandenen Standardcontainers (kein Reader angegeben)

Hinweis

Für diesen Vorgang müssen Sie die intelligente Karte mit dem Basis-CSP verwenden.

  1. Für jede intelligente Karte, auf die vom Basis-CSP zugegriffen wurde, und die Handle- und Containerinformationen werden zwischengespeichert, sucht der Basis-CSP nach einem gültigen Standardcontainer. Es wird versucht, einen Vorgang für die zwischengespeicherte SCARDHANDLE-Instanz durchzuführen, um deren Gültigkeit zu überprüfen. Wenn das Smart Karte Handle ungültig ist, sucht der Basis-CSP weiterhin nach einem neuen intelligenten Karte
  2. Wenn im Basis-CSP-Cache kein passender smarter Karte gefunden wird, ruft der Basis-CSP das Smart Karte-Subsystem auf. SCardUIDlgSelectCard() wird mit einem geeigneten Rückruffilter verwendet, um einen passenden Smart Karte mit einem gültigen Standardcontainer zu finden.

Öffnen eines vorhandenen GUID-benannten Containers (kein Reader angegeben)

Hinweis

Für diesen Vorgang müssen Sie die intelligente Karte mit dem Basis-CSP verwenden.

  1. Suchen Sie für jede intelligente Karte, die bereits beim Basis-CSP registriert ist, nach dem angeforderten Container. Versuchen Sie einen Vorgang für die zwischengespeicherte SCARDHANDLE, um deren Gültigkeit zu überprüfen. Wenn das Smart Karte-Handle ungültig ist, wird die Seriennummer des smarten Karte an die SCardUI * API übergeben, um die Suche nach diesem bestimmten intelligenten Karte fortzusetzen (und nicht nur eine allgemeine Übereinstimmung mit dem Containernamen).
  2. Wenn keine übereinstimmende intelligente Karte im Basis-CSP-Cache gefunden wird, wird ein Aufruf des Smart Karte-Subsystems ausgeführt. SCardUIDlgSelectCard()wird mit einem entsprechenden Rückruffilter verwendet, um eine entsprechende intelligente Karte mit dem angeforderten Container zu finden. Wenn bei der Suche in Schritt 1 eine smarte Karte Seriennummer entstanden ist, versucht der Rückruffilter, die Seriennummer und nicht den Containernamen abzugleichen.

Erstellen eines neuen Containers (kein Reader angegeben)

Hinweis

Für diesen Vorgang müssen Sie die intelligente Karte mit dem Basis-CSP verwenden.

Wenn die PIN nicht zwischengespeichert wird, ist kein CRYPT_SILENT für die Containererstellung zulässig, da der Benutzer mindestens zur Eingabe einer PIN aufgefordert werden muss.

Bei anderen Vorgängen kann der Aufrufer möglicherweise einen Überprüfungskontext für den Standardcontainer CRYPT_DEFAULT_CONTAINER_OPTIONAL abrufen und dann einen Aufruf mit CryptSetProvParam durchführen, um die Benutzer-PIN für nachfolgende Vorgänge zwischenzuspeichern.

  1. Aktualisieren Sie für jede intelligente Karte, die dem CSP bereits bekannt ist, die gespeicherte SCARDHANDLE, und führen Sie die folgenden Überprüfungen durch:
    1. Wenn die intelligente Karte entfernt wurde, setzen Sie die Suche fort.
    2. Wenn die intelligente Karte vorhanden ist, aber bereits über den benannten Container verfügt, setzen Sie die Suche fort.
    3. Wenn die intelligente Karte verfügbar ist, ein Aufruf von CardQueryFreeSpace jedoch angibt, dass die intelligente Karte nicht genügend Speicherplatz für einen zusätzlichen Schlüsselcontainer hat, setzen Sie die Suche fort.
    4. Verwenden Sie andernfalls die erste verfügbare intelligente Karte, die die oben genannten Kriterien für die Containererstellung erfüllt.
  2. Wenn im CSP-Cache kein passender smarter Karte gefunden wird, rufen Sie das Smart Karte-Subsystem auf. Der Rückruf, der zum Filtern aufgezählter Smartcards verwendet wird, überprüft, ob ein potenzieller smarter Karte noch nicht über den benannten Container verfügt, und dass CardQueryFreeSpace angibt, dass die intelligente Karte über ausreichend Platz für einen zusätzlichen Container verfügt. Wenn keine geeignete intelligente Karte gefunden wird, wird der Benutzer aufgefordert, eine intelligente Karte

Löschen eines Containers

  1. Wenn der angegebene Containername NULL ist, wird der Standardcontainer gelöscht. Das Löschen des Standardcontainers führt dazu, dass ein neuer Standardcontainer willkürlich ausgewählt wird. Aus diesem Grund wird dieser Vorgang nicht empfohlen.
  2. Aktualisieren Sie für jede intelligente Karte, die dem CSP bereits bekannt ist, die gespeicherte SCARDHANDLE, und führen Sie die folgenden Überprüfungen durch:
    1. Wenn die intelligente Karte nicht über den benannten Container verfügt, setzen Sie die Suche fort.
    2. Wenn der smarte Karte über den benannten Container verfügt, das Smart Karte Handle aber nicht mehr gültig ist, speichern Sie die Seriennummer der übereinstimmenden smarten Karte, und übergeben Sie sie an SCardUI.
  3. Wenn im CSP-Cache kein passender smarter Karte gefunden wird, rufen Sie das Smart Karte-Subsystem auf. Der Rückruf, der zum Filtern aufgezählter Smartcards verwendet wird, sollte überprüfen, ob ein potenzieller smarter Karte über den benannten Container verfügt. Wenn als Ergebnis der vorherigen Cachesuche eine Seriennummer angegeben wurde, sollte der Rückruf aufgezählte Smartcards nach Seriennummer und nicht nach Containervergleichen filtern. Wenn der Kontext nicht unbeaufsichtigt ist und keine geeignete intelligente Karte gefunden wird, zeigen Sie die Benutzeroberfläche an, die den Benutzer auffordert, eine intelligente Karte

Basis-CSP- und KSP-basierte Architektur in Windows

Das folgende Diagramm zeigt die Kryptografiearchitektur, die vom Windows-Betriebssystem verwendet wird.

Kryptografiearchitektur.

Basis-CSP- und Smart Karte KSP-Eigenschaften in Windows

Hinweis

Die API-Definitionen befinden sich in WinCrypt.h und WinSCard.h.

Eigenschaft Beschreibung
PP_USER_CERTSTORE – Wird verwendet, um ein HCERTSTORE zurückzugeben, das alle Benutzerzertifikate auf dem smarten Karte
– Schreibgeschützt (wird nur von CryptGetProvParamverwendet)
– Aufrufer, der für das Schließen des Zertifikatspeichers verantwortlich ist
– Mit oder codiertes PKCS_7_ASN_ENCODING Zertifikat X509_ASN_ENCODING
– CSP sollte für Zertifikate festgelegt KEY_PROV_INFO werden
– Es sollte davon ausgegangen werden, dass es sich um einen In-Memory-Speicher handelt.
– Zertifikate sollten als Eigenschaft gültig CRYPT_KEY_PROV_INFO sein.
PP_ROOT_CERTSTORE – Lesen und Schreiben (verwendet von CryptGetProvParam und CryptSetProvParam)
– Wird verwendet, um eine Sammlung von Stammzertifikaten in die smarte Karte zu schreiben oder zurückzugebenHCERTSTORE, die Stammzertifikate aus dem smarten Karte
– Wird hauptsächlich für den Beitritt zu einer Domäne mithilfe einer intelligenten Karte
– Aufrufer, der für das Schließen des Zertifikatspeichers verantwortlich ist
PP_SMARTCARD_READER – Schreibgeschützt (wird nur von CryptGetProvParamverwendet)
– Gibt den Smart Karte-Lesernamen als ANSI-Zeichenfolge zurück, die zum Erstellen eines vollqualifizierten Containernamens verwendet wird (d. b. einen intelligenten Karte Reader plus einen Container).
PP_SMARTCARD_GUID – Zurückgeben einer smarten Karte GUID (auch als Seriennummer bezeichnet), die für jede intelligente Karte
– Wird vom Zertifikatverteilungsdienst verwendet, um die Quelle eines Stammzertifikats nachzuverfolgen.
PP_UI_PROMPT – Wird zum Festlegen der Suchzeichenfolge für das SCardUIDlgSelectCard Dialogfeld "Karte Einfügen" verwendet.
– Persistent für den gesamten Prozess, wenn er festgelegt ist
– Schreibgeschützt (wird nur von CryptSetProvParamverwendet)

Auswirkungen auf CSPs in Windows

Kryptografische Dienstanbieter (Cryptographic Service Providers, CSPs), einschließlich benutzerdefinierter intelligenter Karte CSPs, werden weiterhin unterstützt, aber dieser Ansatz wird nicht empfohlen. Die Verwendung des vorhandenen Basis-CSP und des smarten Karte KSP mit dem Smart Karte Minidriver-Modell für Smartcards bietet erhebliche Vorteile in Bezug auf Leistung, PIN und Datenzwischenspeicherung. Ein Minitreiber kann so konfiguriert werden, dass er unter CryptoAPI- und CNG-Ebenen funktioniert. Dies bietet Vorteile einer verbesserten kryptografischen Unterstützung, einschließlich Kryptografie mit elliptischer Kurve und AES.

Wenn eine intelligente Karte von einem CSP und einem Smart Karte Minidriver registriert wird, wird der zuletzt installierte für die Kommunikation mit dem smarten Karte verwendet.

Schreiben eines intelligenten Karte Minidriver, CSP oder KSP

CSPs und KSPs sollen nur geschrieben werden, wenn bestimmte Funktionen in der aktuellen Smart Karte Minidriver-Architektur nicht verfügbar sind. Beispielsweise unterstützt die Smart Karte Minidriver-Architektur Hardwaresicherheitsmodule, sodass ein Minitreiber für ein Hardwaresicherheitsmodul geschrieben werden kann, und ein CSP oder KSP ist möglicherweise nicht erforderlich, es sei denn, er ist erforderlich, um Algorithmen zu unterstützen, die nicht im Basis-CSP oder smarten Karte KSP implementiert sind.

Weitere Informationen zum Schreiben eines smarten Karte Minidriver, CSP oder KSP finden Sie unter Smartcard-Minitreiber.