SmartcardarchitekturSmart Card Architecture

Gilt für: Windows 10, Windows Server 2016Applies To: Windows 10, Windows Server 2016

Dieses Thema für IT-Experten beschreibt die Systemarchitektur, die Smartcards im Windows-Betriebssystemunter stützt, einschließlich Architektur des Anmeldeinformationsanbieters und der Architektur des Smart Card-Subsystems.This topic for the IT professional describes the system architecture that supports smart cards in the Windows operating system, including credential provider architecture and the smart card subsystem architecture.

Bei der Authentifizierung handelt es sich um einen Prozess zur Überprüfung der Identität eines Objekts oder einer Person.Authentication is a process for verifying the identity of an object or person. Wenn Sie ein Objekt, beispielsweise eine Smartcard, authentifizieren, besteht das Ziel darin, zu überprüfen, ob das Objekt echt ist.When you authenticate an object, such as a smart card, the goal is to verify that the object is genuine. Wenn Sie eine Person authentifizieren, besteht das Ziel darin, zu überprüfen, ob es sich nicht um einen Betrüger handelt.When you authenticate a person, the goal is to verify that you are not dealing with an imposter.

In einem Netzwerk Kontext stellt die Authentifizierung den Akt dar, bei dem eine Netzwerkanwendung oder-Ressource Identität bewiesen wird.In a networking context, authentication is the act of proving identity to a network application or resource. In der Regel wird Identität durch einen kryptografischen Vorgang bewiesen, der einen Schlüssel verwendet, der nur dem Benutzer bekannt ist (beispielsweise mit der Kryptografie mit öffentlichen Schlüsseln) oder einem freigegebenen Schlüssel.Typically, identity is proven by a cryptographic operation that uses a key only the user knows (such as with public key cryptography), or a shared key. Die Serverseite des Authentifizierungs Austauschs vergleicht die signierten Daten mit einem bekannten kryptografischen Schlüssel, um den Authentifizierungsversuch zu überprüfen.The server side of the authentication exchange compares the signed data with a known cryptographic key to validate the authentication attempt. Das Speichern der kryptografischen Schlüssel an einem sicheren zentralen Speicherort macht den Authentifizierungsprozess skalierbar und verwaltbar.Storing the cryptographic keys in a secure central location makes the authentication process scalable and maintainable.

Für Smartcards unterstützt Windows eine Anbieter Architektur, die die Anforderungen der sicheren Authentifizierung erfüllt und erweiterbar ist, sodass Sie benutzerdefinierte Anmeldeinformationsanbieter einbeziehen können.For smart cards, Windows supports a provider architecture that meets the secure authentication requirements and is extensible so that you can include custom credential providers. Dieses Thema enthält Informationen zu folgenden Themen:This topic includes information about:

Anmeldeinformationsanbieter-ArchitekturCredential provider architecture

In der folgenden Tabelle sind die Komponenten aufgelistet, die in der interaktiven Anmeldearchitektur von Windows Server und Windows-Betriebssystemen enthalten sind.The following table lists the components that are included in the interactive sign-in architecture of the Windows Server and Windows operating systems.

KomponenteComponent BeschreibungDescription
WinlogonWinlogon Bietet eine interaktive Anmelde Infrastruktur.Provides an interactive sign-in infrastructure.
AnmeldebenutzeroberflächeLogon UI Bietet ein interaktives UI-Rendering.Provides interactive UI rendering.
Anmeldeinformationsanbieter (Kennwort und Smartcard)Credential providers (password and smart card) Beschreibt Anmeldeinformationen und das Serialisieren von Anmeldeinformationen.Describes credential information and serializing credentials.
Local Security Authority (LSA)Local Security Authority (LSA) Verarbeitet Anmeldeinformationen.Processes sign-in credentials.
AuthentifizierungspaketeAuthentication packages Enthält NTLM und das Kerberos-Protokoll.Includes NTLM and the Kerberos protocol. Kommuniziert mit Server Authentifizierungspaketen, um Benutzer zu authentifizieren.Communicates with server authentication packages to authenticate users.

Die interaktive Anmeldung in Windows beginnt, wenn der Benutzer STRG + ALT + ENTF drückt.Interactive sign-in in Windows begins when the user presses CTRL+ALT+DEL. Die Tastenkombination STRG + ALT + ENTF wird als Secure Attention Sequence (SAS) bezeichnet.The CTRL+ALT+DEL key combination is called a secure attention sequence (SAS). Damit andere Programme und Prozesse weiterhin verwendet werden können, registriert Winlogon diese Sequenz während des Startvorgangs.To keep other programs and processes from using it, Winlogon registers this sequence during the boot process.

Nach dem Empfang der SAS generiert die Benutzeroberfläche dann die Anmelde Kachel aus den Informationen, die von den registrierten Anmeldeinformationsanbietern empfangen wurden.After receiving the SAS, the UI then generates the sign-in tile from the information received from the registered credential providers. Die folgende Abbildung zeigt die Architektur für Anmeldeinformationsanbieter im Windows-Betriebssystem.The following graphic shows the architecture for credential providers in the Windows operating system.

Anmeldeinformationsanbieter-Architektur

**** Abbildung1 -Anmeldeinformationsanbieter-ArchitekturFigure1  Credential provider architecture

In der Regel muss ein Benutzer, der sich mit einem lokalen Konto oder einem Domänenkonto bei einem Computer anmeldet, einen Benutzernamen und ein Kennwort eingeben.Typically, a user who signs in to a computer by using a local account or a domain account must enter a user name and password. Diese Anmeldeinformationen werden verwendet, um die Identität des Benutzers zu überprüfen.These credentials are used to verify the user's identity. Bei der Smartcard-Anmeldung sind die Anmeldeinformationen eines Benutzers auf dem Sicherheitschip der Smartcard enthalten.For smart card sign-in, a user's credentials are contained on the smart card's security chip. Mit einem Smartcard-Lesegerät kann der Computer mit dem Sicherheitschip auf der Smartcard interagieren.A smart card reader lets the computer interact with the security chip on the smart card. Wenn sich Benutzer mit einer Smartcard anmelden, geben Sie anstelle eines Benutzernamens und Kennworts eine persönliche Identifikationsnummer (PIN) ein.When users sign in with a smart card, they enter a personal identification number (PIN) instead of a user name and password.

Anmeldeinformationsanbieter sind in-Process-COM-Objekte, die auf dem lokalen System ausgeführt werden und zum Sammeln von Anmeldeinformationen verwendet werden.Credential providers are in-process COM objects that run on the local system and are used to collect credentials. Die Benutzeroberfläche für die Anmeldung bietet interaktive Benutzeroberflächen Wiedergabe, Winlogon bietet interaktive Anmelde Infrastruktur, und Anmeldeinformationsanbieter arbeiten mit diesen beiden Komponenten zusammen, um die Anmeldeinformationen zu erfassen und zu verarbeiten.The Logon UI provides interactive UI rendering, Winlogon provides interactive sign-in infrastructure, and credential providers work with both of these components to help gather and process credentials.

Winlogon weist die Anmeldebenutzeroberfläche an, die Kacheln des Anmeldeinformationsanbieters anzuzeigen, nachdem ein SAS-Ereignis empfangen wurde.Winlogon instructs the Logon UI to display credential provider tiles after it receives an SAS event. Die Anmeldebenutzeroberfläche fragt jeden Anmeldeinformationsanbieter nach der Anzahl der Anmeldeinformationen ab, die er auflisten möchte.The Logon UI queries each credential provider for the number of credentials it wants to enumerate. Anmeldeinformationsanbieter haben die Möglichkeit, eine dieser Kacheln als Standard anzugeben.Credential providers have the option of specifying one of these tiles as the default. Nachdem alle Anbieter Ihre Kacheln aufgelistet haben, zeigt die Anmeldebenutzeroberfläche Sie dem Benutzer an.After all providers have enumerated their tiles, the Logon UI displays them to the user. Der Benutzer interagiert mit einer Kachel, um die richtigen Anmeldeinformationen bereitzustellen.The user interacts with a tile to supply the proper credentials. Die Anmeldebenutzeroberfläche sendet diese Anmeldeinformationen zur Authentifizierung.The Logon UI submits these credentials for authentication.

In Kombination mit der unterstützenden Hardware können Anmeldeinformationsanbieter das Windows-Betriebssystem so erweitern, dass Benutzer sich mithilfe von Biometrie (beispielsweise Fingerabdruck, Netzhaut oder Spracherkennung), Kennwort, PIN, Smartcard-Zertifikat oder beliebige benutzerdefinierte Anmeldungen anmelden können. Authentifizierungspaket.Combined with supporting hardware, credential providers can extend the Windows operating system to enable users to sign in by using biometrics (for example, fingerprint, retinal, or voice recognition), password, PIN, smart card certificate, or any custom authentication package. Unternehmen und IT-Experten können benutzerdefinierte Authentifizierungsmechanismen für alle Domänenbenutzer entwickeln und bereitstellen, und Sie können Benutzer ausdrücklich dazu verpflichten, diesen benutzerdefinierten Anmeldemechanismus zu verwenden.Enterprises and IT professionals can develop and deploy custom authentication mechanisms for all domain users, and they may explicitly require users to use this custom sign-in mechanism.

**** Hinweis Anbieter von Anmeldeinformationen sind keine Erzwingungsmechanismen.Note  Credential providers are not enforcement mechanisms. Sie werden zum Sammeln und Serialisieren von Anmeldeinformationen verwendet.They are used to gather and serialize credentials. Die LSA-und Authentifizierungspakete erzwingen Sicherheit.The LSA and authentication packages enforce security.

Anmeldeinformationsanbieter können zur Unterstützung der einmaligen Anmeldung (Single Sign-in, SSO) entwickelt werden.Credential providers can be designed to support single sign-in (SSO). In diesem Verfahren authentifizieren Sie Benutzer mit einem sicheren Netzwerkzugriffspunkt (mithilfe von RADIUS und anderen Technologien) für die Anmeldung beim Computer.In this process, they authenticate users to a secure network access point (by using RADIUS and other technologies) for signing in to the computer. Anmeldeinformationsanbieter sind auch für die Unterstützung der anwendungsspezifischen Erfassung von Anmeldeinformationen konzipiert und können für die Authentifizierung für Netzwerkressourcen, das Hinzufügen von Computern zu einer Domäne oder die Genehmigung des Administrators für die Benutzerkontensteuerung (UAC) verwendet werden.Credential providers are also designed to support application-specific credential gathering, and they can be used for authentication to network resources, joining computers to a domain, or to provide administrator consent for User Account Control (UAC).

Mehrere Anmeldeinformationsanbieter können auf einem Computer koexistieren.Multiple credential providers can coexist on a computer.

Anmeldeinformationsanbieter müssen auf einem Computer mit Windows registriert sein und für folgende Aufgaben verantwortlich sein:Credential providers must be registered on a computer running Windows, and they are responsible for:

  • Beschreibung der Anmeldeinformationen, die für die Authentifizierung erforderlich sind.Describing the credential information that is required for authentication.

  • Behandeln von Kommunikation und Logik mit externen Authentifizierungs BehördenHandling communication and logic with external authentication authorities.

  • Verpacken von Anmeldeinformationen für interaktive und NetzwerkanmeldungenPackaging credentials for interactive and network sign-in.

**** Hinweis die API des Anmeldeinformationsanbieters rendert die Benutzeroberfläche nicht.Note  The Credential Provider API does not render the UI. Sie beschreibt, was gerendert werden muss.It describes what needs to be rendered.
Nur der Anmeldeinformationsanbieter für Kennwörter steht im abgesicherten Modus zur Verfügung.Only the password credential provider is available in safe mode.
Der Anbieter von Smartcard-Anmeldeinformationen steht während des Netzwerkbetriebs im abgesicherten Modus zur Verfügung.The smart card credential provider is available in safe mode during networking.

Architektur des Smart Card-SubsystemsSmart card subsystem architecture

Anbieter bieten Smartcards und Smartcard-Leser an, und in vielen Fällen unterscheiden sich die Anbieter von Smartcards und Smartcard-Lesern.Vendors provide smart cards and smart card readers, and in many cases the vendors are different for the smart card and the smart card reader. Treiber für Smartcard-Leser werden in den Standard für Personal Computer/Smartcard (PC/SC)geschrieben.Drivers for smart card readers are written to the Personal Computer/Smart Card (PC/SC) standard. Jede Smartcard muss einen Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) aufweisen, der die CryptoAPI-Schnittstellen verwendet, um kryptografische Vorgänge zu ermöglichen, und die winscard-APIs, um die Kommunikation mit Smartcard-Hardware zu ermöglichen.Each smart card must have a Cryptographic Service Provider (CSP) that uses the CryptoAPI interfaces to enable cryptographic operations, and the WinSCard APIs to enable communications with smart card hardware.

Basis-CSP und Smartcard-Mini Driver-ArchitekturBase CSP and smart card minidriver architecture

Bild2 veranschaulicht die Beziehung zwischen CryptoAPI, Kryptografiedienstanbieter, dem Smartcard-Basis-Kryptografiedienstanbieter (Cryptographic Service Provider, Base CSP) und Smartcard-Minitreiber.Figure2 illustrates the relationship between the CryptoAPI, CSPs, the Smart Card Base Cryptographic Service Provider (Base CSP), and smart card minidrivers.

Basis-CSP und Smartcard-Mini Driver-Architektur

**** Bild2 -Basis-CSP und Smartcard-Mini Driver-ArchitekturFigure2  Base CSP and smart card minidriver architecture

Zwischenspeicherung mit Basis-CSP und Smartcard KSPCaching with Base CSP and smart card KSP

Bei der Smartcard-Architektur werden zwischen Speicherungs Mechanismen verwendet, um die Optimierung von Vorgängen zu unterstützen und den Zugriff eines Benutzers auf eine PIN zu verbessern.Smart card architecture uses caching mechanisms to assist in streamlining operations and to improve a user’s access to a PIN.

  • Datenzwischenspeicherung: der Datencache bietet einen einzelnen Prozess zum Minimieren von e/a-Vorgängen für Smartcards.Data caching: The data cache provides for a single process to minimize smart card I/O operations.

  • Pin-Zwischenspeicherung: der PIN-Cache hilft dem Benutzer, jedesmal eine PIN erneut einzugeben, wenn die Smartcard nicht authentifiziert wird.PIN caching: The PIN cache helps the user from having to reenter a PIN each time the smart card is unauthenticated.

DatenzwischenspeicherungData caching

Jeder CSP implementiert den aktuellen Smartcard-Datencache separat.Each CSP implements the current smart card data cache separately. Der Basis-CSP implementiert einen robusten Zwischenspeichermechanismus, mit dem ein einzelner Prozess die e/a-Vorgänge von Smartcards minimieren kann.The Base CSP implements a robust caching mechanism that allows a single process to minimize smart card I/O operations.

Der vorhandene globale Cache funktioniert wie folgt:The existing global cache works as follows:

  1. Die Anwendung fordert einen kryptografischen Vorgang an.The application requests a cryptographic operation. Beispielsweise soll ein Benutzerzertifikat von der Smartcard gelesen werden.For example, a user certificate is to be read from the smart card.

  2. Der CSP überprüft seinen Cache auf das Element.The CSP checks its cache for the item.

  3. Wenn das Element im Cache nicht gefunden wird oder wenn das Element zwischengespeichert ist, aber nicht auf dem neuesten Stand ist, wird das Element von der Smartcard gelesen.If the item is not found in the cache, or if the item is cached but is not up-to-date, the item is read from the smart card.

  4. Nachdem ein Element von der Smartcard gelesen wurde, wird es dem Cache hinzugefügt.After any item has been read from the smart card, it is added to the cache. Alle vorhandenen veralteten Kopien dieses Elements werden ersetzt.Any existing out-of-date copy of that item is replaced.

Drei Arten von Objekten oder Daten werden vom CSP zwischengespeichert: Pins (Weitere Informationen finden Sie unter Zwischenspeichernvon Pins), Zertifikate und Dateien.Three types of objects or data are cached by the CSP: pins (for more information, see PIN caching), certificates, and files. Wenn sich die zwischengespeicherten Daten ändern, wird das entsprechende Objekt in aufeinanderfolgenden Vorgängen aus der Smartcard gelesen.If any of the cached data changes, the corresponding object is read from the smart card in successive operations. Wenn beispielsweise eine Datei auf die Smartcard geschrieben wird, wird der CSP-Cache für die Dateien veraltet, und andere Prozesse lesen die Smartcard mindestens einmal, um den CSP-Cache zu aktualisieren.For example, if a file is written to the smart card, the CSP cache becomes out-of-date for the files, and other processes read the smart card at least once to refresh their CSP cache.

Der globale Datencache wird im Smart Cards für Windows-Dienst gehostet.The global data cache is hosted in the Smart Cards for Windows service. Windows umfasst zwei öffentliche Smartcard-API-Aufrufe, SCardWriteCache und SCardReadCache.Windows includes two public smart card API calls, SCardWriteCache and SCardReadCache. Mithilfe dieser API-Aufrufe können Anwendungen globale Daten Zwischenspeicherungsfunktionen zur Verfügung stellen.These API calls make global data caching functionality available to applications. Jede Smartcard, die der Mini Driver-Spezifikation für Smartcards entspricht, verfügt über eine 16-Byte-Kartenkennung.Every smart card that conforms to the smart card minidriver specification has a 16-byte card identifier. Dieser Wert wird verwendet, um zwischengespeicherte Daten, die zu einer bestimmten Smartcard gehören, eindeutig zu identifizieren.This value is used to uniquely identify cached data that pertains to a given smart card. Der standardmäßige Windows-GUID-Typ wird verwendet.The standard Windows GUID type is used. Diese APIs ermöglichen einer Anwendung das Hinzufügen und Lesen von Daten aus dem globalen Cache.These APIs allow an application to add data to and read data from the global cache.

Zwischenspeichern von PinsPIN caching

Der PIN-Cache schützt den Benutzer vor der Eingabe einer PIN, wenn die Smartcard nicht authentifiziert wird.The PIN cache protects the user from entering a PIN every time the smart card is unauthenticated. Nachdem eine Smartcard authentifiziert wurde, wird Sie nicht zwischen hostseitigen Anwendungen unterschieden – jede Anwendung kann auf private Daten auf der Smartcard zugreifen.After a smart card is authenticated, it will not differentiate among host-side applications—any application can access private data on the smart card.

Um dies zu vermeiden, wechselt die Smartcard in einen exklusiven Zustand, wenn sich eine Anwendung bei der Smartcard authentifiziert.To mitigate this, the smart card enters an exclusive state when an application authenticates to the smart card. Dies bedeutet jedoch, dass andere Anwendungen nicht mit der Smartcard kommunizieren können und blockiert werden.However, this means that other applications cannot communicate with the smart card and will be blocked. Daher werden solche exklusiven Verbindungen minimiert.Therefore, such exclusive connections are minimized. Das Problem besteht darin, dass für ein Protokoll (wie das Kerberos-Protokoll) mehrere Signierungs Vorgänge erforderlich sind.The issue is that a protocol (such as the Kerberos protocol) requires multiple signing operations. Daher erfordert das Protokoll exklusiven Zugriff auf die Smartcard über einen längeren Zeitraum, oder es sind mehrere Authentifizierungsvorgänge erforderlich.Therefore, the protocol requires exclusive access to the smart card over an extended period, or it require multiple authentication operations. Hier wird der PIN-Cache verwendet, um die ausschließliche Verwendung der Smartcard zu minimieren, ohne dass der Benutzer mehrmals eine PIN eingeben muss.This is where the PIN cache is used to minimize exclusive use of the smart card without forcing the user to enter a PIN multiple times.

Im folgenden Beispiel wird gezeigt, wie das funktioniert.The following example illustrates how this works. In diesem Szenario gibt es zwei Anwendungen: Outlook und Internet Explorer.In this scenario, there are two applications: Outlook and Internet Explorer. Die Anwendungen verwenden Smartcards für unterschiedliche Zwecke.The applications use smart cards for different purposes.

  1. Der Benutzer startet Outlook und versucht, eine signierte e-Mail-Nachricht zu senden.The user starts Outlook and tries to send a signed e-mail. Der private Schlüssel befindet sich auf der Smartcard.The private key is on the smart card.

  2. Outlook fordert den Benutzer auf, die Smartcard-PIN einzugeben.Outlook prompts the user for the smart card PIN. Der Benutzer gibt die richtige PIN ein.The user enters the correct PIN.

  3. E-Mail-Daten werden für den Signaturvorgang an die Smartcard gesendet.E-mail data is sent to the smart card for the signature operation. Der Outlook-Client formatiert die Antwort und sendet die e-Mail.The Outlook client formats the response and sends the e-mail.

  4. Der Benutzer öffnet Internet Explorer und versucht, auf eine geschützte Website zuzugreifen, die TLS-Authentifizierung (Transport Layer Security) für den Client erfordert.The user opens Internet Explorer and tries to access a protected site that requires Transport Layer Security (TLS) authentication for the client.

  5. Internet Explorer fordert den Benutzer auf, die Smartcard-PIN einzugeben.Internet Explorer prompts the user for the smart card PIN. Der Benutzer gibt die richtige PIN ein.The user enters the correct PIN.

  6. Der TLS-bezogene private Schlüssel Vorgang erfolgt auf der Smartcard, und der Benutzer wird authentifiziert und angemeldet.The TLS-related private key operation occurs on the smart card, and the user is authenticated and signed in.

  7. Der Benutzer kehrt zu Outlook zurück, um eine weitere signierte e-Mail zu senden.The user returns to Outlook to send another signed e-mail. Dieses Mal wird der Benutzer nicht aufgefordert, eine PIN einzugeben, da die PIN aus dem vorherigen Vorgang zwischengespeichert wurde.This time, the user is not prompted for a PIN because the PIN is cached from the previous operation. Auch wenn der Benutzer Internet Explorer für einen anderen Vorgang erneut verwendet, fordert Internet Explorer den Benutzer nicht auf, eine PIN einzugeben.Similarly, if the user uses Internet Explorer again for another operation, Internet Explorer will not prompt the user for a PIN.

Der Basis-CSP verwaltet intern einen Cache für einzelne Prozesse der PIN.The Base CSP internally maintains a per-process cache of the PIN. Die PIN wird verschlüsselt und im Arbeitsspeicher gespeichert.The PIN is encrypted and stored in memory. Die zum Sichern der PIN verwendeten Funktionen sind RtlEncryptMemory, RtlDecryptMemory und RtlSecureZeroMemory, wodurch Puffer, die die PIN enthielten, leer sind.The functions that are used to secure the PIN are RtlEncryptMemory, RtlDecryptMemory, and RtlSecureZeroMemory, which will empty buffers that contained the PIN.

Smartcard-AuswahlSmart card selection

In den folgenden Abschnitten in diesem Thema wird beschrieben, wie Windows die Smartcard-Architektur zur Auswahl der richtigen Smartcard-Lesesoftware, des Anbieters und der Anmeldeinformationen für eine erfolgreiche Smartcard-Anmeldung nutzt:The following sections in this topic describe how Windows leverages the smart card architecture to select the correct smart card reader software, provider, and credentials for a successful smart card sign-in:

Container-Spezifikations EbenenContainer specification levels

Als Antwort auf einen CryptAcquireContext-Aufruf in CryptoAPI versucht der Basis-CSP, dem Container zu entsprechen, den der Aufrufer auf eine bestimmte Smartcard und einen bestimmten Leser angibt.In response to a CryptAcquireContext call in CryptoAPI, the Base CSP tries to match the container that the caller specifies to a specific smart card and reader. Der Aufrufer kann einen Containernamen mit unterschiedlichen Spezifitäten bereitstellen, wie in der folgenden Tabelle dargestellt, und von den meisten spezifischen zu den am wenigsten spezifischen Anforderungen sortiert werden.The caller can provide a container name with varying levels of specificity, as shown in the following table, and sorted from most-specific to least-specific requests.

Ebenso versucht die Smartcard KSP als Antwort auf einen NCryptOpenKey-Aufruf in CNG, den Container auf die gleiche Weise abzugleichen, und es wird dasselbe Containerformat verwendet, wie in der folgenden Tabelle dargestellt.Similarly, in response to a NCryptOpenKey call in CNG, the smart card KSP tries to match the container the same way, and it takes the same container format, as shown in the following table.

Hinweis Bevor Sie  einen Schlüssel mithilfe der Smartcard KSP öffnen, muss ein Aufruf von NCryptOpenStorageProvider (MS_SMART_CARD_KEY_STORAGE_PROVIDER) erfolgen.Note  Before opening a key by using the smart card KSP, a call to NCryptOpenStorageProvider (MS_SMART_CARD_KEY_STORAGE_PROVIDER) must be made.

TypType NameName FormatFormat
IchI Leser Name und Container NameReader Name and Container Name \ \ \ . \ &lt;Reader Name>\<Container Name>\\.\<Reader Name>\<Container Name>
IIII Leser Name und Container Name (null)Reader Name and Container Name (NULL) \ \ \ . \ &lt;Leser Name>\\.\<Reader Name>
IIIIII Nur Container NameContainer Name Only <Container Name><Container Name>
IVIV Nur Standard Container (null)Default Container (NULL) Only NULLNULL

Der Basis-CSP und die Smartcard KSP-Cache-Smartcard behandeln Informationen zum Anruf Prozess und zu den Smartcards, auf die der Prozess zugegriffen hat.The Base CSP and smart card KSP cache smart card handle information about the calling process and about the smart cards the process has accessed. Bei der Suche nach einem Smartcard-Container überprüft der Basis-CSP oder die Smartcard KSP zunächst den Cache des Prozesses.When searching for a smart card container, the Base CSP or smart card KSP first checks its cache for the process. Wenn das zwischengespeicherte Handle ungültig ist oder keine Übereinstimmung gefunden wird, wird die SCardUIDlg-API aufgerufen, um das Kartenhandle abzurufen.If the cached handle is invalid or no match is found, the SCardUIDlg API is called to get the card handle.

Container OperationenContainer operations

Die folgenden drei Container Vorgänge können mithilfe von CryptAcquireContext angefordert werden:The following three container operations can be requested by using CryptAcquireContext:

  1. Erstellen Sie einen neuen Container.Create a new container. (Das CNG-Äquivalent von CryptAcquireContext mit dwFlags, das auf CRYPT_NEWKEYSET eingestellt ist, ist NCryptCreatePersistedKey.)(The CNG equivalent of CryptAcquireContext with dwFlags set to CRYPT_NEWKEYSET is NCryptCreatePersistedKey.)

  2. Öffnen Sie einen vorhandenen Container.Open an existing container. (Das CNG-Äquivalent von CryptAcquireContext zum Öffnen des Containers lautet NCryptOpenKey.)(The CNG equivalent of CryptAcquireContext to open the container is NCryptOpenKey.)

  3. Löschen eines ContainersDelete a container. (Das CNG-Äquivalent von CryptAcquireContext mit dwFlags, das auf CRYPT_DELETEKEYSET eingestellt ist, ist NCryptDeleteKey.)(The CNG equivalent of CryptAcquireContext with dwFlags set to CRYPT_DELETEKEYSET is NCryptDeleteKey.)

Die Heuristik, die verwendet wird, um einem kryptografischen handle eine bestimmte Smartcard und einen bestimmten Leser zuzuordnen, basiert auf dem angeforderten Container Vorgang und der verwendeten Container Spezifikation.The heuristics that are used to associate a cryptographic handle with a particular smart card and reader are based on the container operation requested and the level of container specification used.

Die folgende Tabelle enthält die Einschränkungen für den Container Erstellungsvorgang.The following table shows the restrictions for the container creation operation.

SpezifikationSpecification EinschränkungRestriction
Kein HintergrundNo silent context Die Erstellung von Schlüsselcontainern muss immer in der Lage sein, die Benutzeroberfläche anzuzeigen, beispielsweise die PIN-Eingabeaufforderung.Key container creation must always be able to show UI, such as the PIN prompt.
Kein Überschreiben vorhandener ContainerNo overwriting existing containers Wenn der angegebene Container bereits auf der ausgewählten Smartcard vorhanden ist, wählen Sie eine andere Smartcard aus, oder brechen Sie den Vorgang ab.If the specified container already exists on the chosen smart card, choose another smart card or cancel the operation.

Kontext-FlagsContext flags

Die folgende Tabelle zeigt die Kontext-Flags, die als Einschränkungen für den Container Erstellungsvorgang verwendet werden.The following table shows the context flags used as restrictions for the container creation operation.

FlagFlag BeschreibungDescription
CRYPT_SILENTCRYPT_SILENT Während dieses Vorgangs kann keine Benutzeroberfläche angezeigt werden.No UI can be displayed during this operation.
CRYPT_MACHINE_KEYSETCRYPT_MACHINE_KEYSET Während dieses Vorgangs sollten keine zwischengespeicherten Daten verwendet werden.No cached data should be used during this operation.
CRYPT_VERIFYCONTEXTCRYPT_VERIFYCONTEXT Auf die Smartcard kann nur auf öffentliche Daten zugegriffen werden.Only public data can be accessed on the smart card.

Zusätzlich zu Container Vorgängen und Container Spezifikationen müssen Sie während der Smartcard-Auswahl andere Benutzeroptionen wie die CryptAcquireContext-Flags berücksichtigen.In addition to container operations and container specifications, you must consider other user options, such as the CryptAcquireContext flags, during smart card selection.

**** Wichtig das CRYPT_SILENT-Flag kann nicht zum Erstellen eines neuen Containers verwendet werden.Important  The CRYPT_SILENT flag cannot be used to create a new container.

Erstellen eines neuen Containers im HintergrundCreate a new container in silent context

Anwendungen können den Basis-CSP mit CRYPT_DEFAULT_CONTAINER_OPTIONAL aufrufen, die PIN im Silent-Kontext fest legen und dann einen neuen Container im Silent-Kontext erstellen.Applications can call the Base CSP with CRYPT_DEFAULT_CONTAINER_OPTIONAL, set the PIN in silent context, and then create a new container in silent context. Dieser Vorgang erfolgt wie folgt:This operation occurs as follows:

  1. Rufen Sie CryptAcquireContext auf, indem Sie den Namen des Smartcard-Lesers als Container Spezifikationsebene Typ II übergeben und das CRYPT_DEFAULT_CONTAINER_OPTIONAL-Flag angeben.Call CryptAcquireContext by passing the smart card reader name in as a type II container specification level, and specifying the CRYPT_DEFAULT_CONTAINER_OPTIONAL flag.

  2. Rufen Sie CryptSetProvParam auf, indem Sie PP_KEYEXCHANGE_PIN oder PP_SIGNATURE_PIN und eine NULL-terminierte ASCII-PIN angeben.Call CryptSetProvParam by specifying PP_KEYEXCHANGE_PIN or PP_SIGNATURE_PIN and a null-terminated ASCII PIN.

  3. Freigeben des in Schritt 1 erworbenen KontextsRelease the context acquired in Step 1.

  4. Rufen Sie CryptAcquireContext mit CRYPT_NEWKEYSET auf, und geben Sie die Container Spezifikationsebene Typ I an.Call CryptAcquireContext with CRYPT_NEWKEYSET, and specify the type I container specification level.

  5. Rufen Sie CryptGenKey auf, um den Schlüssel zu erstellen.Call CryptGenKey to create the key.

Auswahlverhalten für intelligente KartenSmart card selection behavior

In einigen der folgenden Szenarien kann der Benutzer zum Einfügen einer Smartcard aufgefordert werden.In some of the following scenarios, the user can be prompted to insert a smart card. Wenn der Benutzerkontext stumm ist, schlägt dieser Vorgang fehl, und es wird keine Benutzeroberfläche angezeigt.If the user context is silent, this operation fails and no UI is displayed. Andernfalls kann der Benutzer als Antwort auf die Benutzeroberfläche eine Smartcard einfügen oder auf "Abbrechen" klicken.Otherwise, in response to the UI, the user can insert a smart card or click Cancel. Wenn der Benutzer den Vorgang abbricht, schlägt der Vorgang fehl.If the user cancels the operation, the operation fails. Das Flussdiagramm in Figure3 zeigt die Auswahlschritte an, die vom Windows-Betriebssystem ausgeführt werden.The flow chart in Figure3 shows the selection steps performed by the Windows operating system.

Auswahlverfahren für Smartcards

**** Figure3 -Auswahlverhalten für SmartcardsFigure3  Smart card selection behavior

Im Allgemeinen wird das Auswahlverhalten von Smartcards von der SCardUIDlgSelectCard-API gehandhabt.In general, smart card selection behavior is handled by the SCardUIDlgSelectCard API. Der Basis-CSP interagiert mit dieser API, indem er direkt aufgerufen wird.The Base CSP interacts with this API by calling it directly. Der Basis-CSP sendet auch Rückruffunktionen, die zum Filtern und Zuordnen von Kandidaten-Smartcards dienen.The Base CSP also sends callback functions that have the purpose of filtering and matching candidate smart cards. Anrufer von CryptAcquireContext bieten Informationen zur Smartcard-Übereinstimmung.Callers of CryptAcquireContext provide smart card matching information. Intern verwendet der Basis-CSP eine Kombination aus Smartcard-Seriennummern, Leser Namen und Containernamen, um bestimmte Smartcards zu finden.Internally, the Base CSP uses a combination of smart card serial numbers, reader names, and container names to find specific smart cards.

Jeder Anruf an SCardUI \ * kann dazu führen, dass weitere Informationen von einer Kandidaten-Smartcard gelesen werden.Each call to SCardUI * may result in additional information read from a candidate smart card. Die Basis-CSP-Auswahl Rückrufe für Smartcards Zwischenspeichern diese Informationen.The Base CSP smart card selection callbacks cache this information.

Anpassen einer Smartcard-SprachausgabeMake a smart card reader match

Bei den Container Spezifikations Ebenen Typ I und Typ II ist der Auswahlprozess für die Smartcards nicht so komplex, da nur die Smartcard im benannten Reader als Übereinstimmung angesehen werden kann.For type I and type II container specification levels, the smart card selection process is less complex because only the smart card in the named reader can be considered a match. Der Vorgang zum Abgleich einer Smartcard mit einem Smartcard-Lesegerät lautet wie folgt:The process for matching a smart card with a smart card reader is:

  1. Suchen Sie den gewünschten Smartcard-Leser.Find the requested smart card reader. Wenn Sie nicht gefunden werden kann, schlägt der Prozess fehl.If it cannot be found, the process fails. (Dazu ist eine Cache Suche nach Leser Name erforderlich.)(This requires a cache search by reader name.)

  2. Wenn sich keine Smartcard im Reader befindet, wird der Benutzer aufgefordert, eine Smartcard einzufügen.If no smart card is in the reader, the user is prompted to insert a smart card. (Dies ist nur im nicht stummen Modus; Wenn der Anruf im unbeaufsichtigten Modus erfolgt, schlägt er fehl.)(This is only in non-silent mode; if the call is made in silent mode, it will fail.)

  3. Nur bei der Container Spezifikationsstufe II wird der Name des Standardcontainers auf der ausgewählten Smartcard bestimmt.For container specification level II only, the name of the default container on the chosen smart card is determined.

  4. Suchen Sie den angegebenen Container, um einen vorhandenen Container zu öffnen oder einen vorhandenen Container zu löschen.To open an existing container or delete an existing container, find the specified container. Wenn der angegebene Container auf dieser Smartcard nicht gefunden werden kann, wird der Benutzer aufgefordert, eine Smartcard einzufügen.If the specified container cannot be found on this smart card, the user is prompted to insert a smart card.

  5. Wenn das System versucht, einen neuen Container zu erstellen, schlägt der Prozess fehl, wenn der angegebene Container auf dieser Smartcard bereits vorhanden ist.If the system attempts to create a new container, if the specified container already exists on this smart card, the process fails.

Erstellen einer Smartcard-ÜbereinstimmungMake a smart card match

Für Container Spezifikations Ebenen III und IV wird eine breitere Methode verwendet, um eine geeignete Smartcard mit einem Benutzerkontext zu vergleichen, da mehrere zwischengespeicherte Smartcards die angegebenen Kriterien erfüllen können.For container specification levels III and IV, a broader method is used to match an appropriate smart card with a user context, because multiple cached smart cards might meet the criteria provided.

Öffnen eines vorhandenen Standardcontainers (kein Reader angegeben)Open an existing default container (no reader specified)

**** Hinweis dieser Vorgang setzt voraus, dass Sie die Smartcard mit dem Basis-CSP verwenden.Note  This operation requires that you use the smart card with the Base CSP.

  1. Für jede Smartcard, auf die der Basis-CSP zugegriffen hat und die Handle-und Container Informationen zwischengespeichert sind, sucht der Basis-CSP nach einem gültigen Standardcontainer.For each smart card that has been accessed by the Base CSP and the handle and container information are cached, the Base CSP looks for a valid default container. Es wird versucht, die Gültigkeit des zwischengespeicherten SCARDHANDLE zu überprüfen.An operation is attempted on the cached SCARDHANDLE to verify its validity. Wenn das Smartcard-Handle nicht gültig ist, sucht der Basis-CSP weiterhin nach einer neuen Smartcard.If the smart card handle is not valid, the Base CSP continues to search for a new smart card.

  2. Wenn im Basis-CSP-Cache keine übereinstimmende Smartcard gefunden wird, werden die Basis-CSP-Aufrufe an das Smartcard-Subsystem durchgestellt.If a matching smart card is not found in the Base CSP cache, the Base CSP calls to the smart card subsystem. SCardUIDlgSelectCard () wird zusammen mit einem geeigneten Rückruf Filter verwendet, um eine passende Smartcard mit einem gültigen Standardcontainer zu finden.SCardUIDlgSelectCard() is used with an appropriate callback filter to find a matching smart card with a valid default container.

Öffnen eines vorhandenen GUID-benannten Containers (kein Reader angegeben)Open an existing GUID-named container (no reader specified)

**** Hinweis dieser Vorgang setzt voraus, dass Sie die Smartcard mit dem Basis-CSP verwenden.Note  This operation requires that you use the smart card with the Base CSP.

  1. Suchen Sie für jede Smartcard, die bereits beim Basis-CSP registriert ist, nach dem angeforderten Container.For each smart card that is already registered with the Base CSP, search for the requested container. Versuchen Sie, die Gültigkeit des zwischengespeicherten SCARDHANDLE zu überprüfen.Attempt an operation on the cached SCARDHANDLE to verify its validity. Wenn das Smartcard-Handle nicht gültig ist, wird die Seriennummer der Smartcard an die SCardUI \ *-API übergeben, um weiterhin nach dieser bestimmten Smartcard zu suchen (und nicht nur eine allgemeine Übereinstimmung für den Containernamen).If the smart card handle is not valid, the smart card's serial number is passed to the SCardUI * API to continue searching for this specific smart card (rather than only a general match for the container name).

  2. Wenn keine übereinstimmende Smartcard im Basis-CSP-Cache gefunden wird, wird ein Anruf an das Smartcard-Subsystem durchgeführt.If a matching smart card is not found in the Base CSP cache, a call is made to the smart card subsystem. SCardUIDlgSelectCard () wird zusammen mit einem geeigneten Rückruf Filter verwendet, um eine passende Smartcard mit dem angeforderten Container zu finden.SCardUIDlgSelectCard() is used with an appropriate callback filter to find a matching smart card with the requested container. Wenn die Seriennummer einer Smartcard aus der Suche in Schritt 1 resultierte, versucht der Rückruf Filter, die Seriennummer und nicht den Containernamen zu erfüllen.Or, if a smart card serial number resulted from the search in Step 1, the callback filter attempts to match the serial number, not the container name.

Erstellen eines neuen Containers (kein Reader angegeben)Create a new container (no reader specified)

**** Hinweis dieser Vorgang setzt voraus, dass Sie die Smartcard mit dem Basis-CSP verwenden.Note  This operation requires that you use the smart card with the Base CSP.

Wenn die PIN nicht zwischengespeichert wird, ist für die Container Erstellung kein CRYPT_SILENT zulässig, da der Benutzer mindestens aufgefordert werden muss, eine PIN einzugeben.If the PIN is not cached, no CRYPT_SILENT is allowed for the container creation because the user must be prompted for a PIN, at a minimum.

Für andere Vorgänge kann der Aufrufer möglicherweise einen "verify"-Kontext für den Standardcontainer (CRYPT_DEFAULT_CONTAINER_OPTIONAL) erwerben und dann einen Aufruf mit CryptSetProvParam durchführen, um die Benutzer-PIN für nachfolgende Vorgänge zwischenzuspeichern.For other operations, the caller may be able to acquire a "verify" context against the default container (CRYPT_DEFAULT_CONTAINER_OPTIONAL) and then make a call with CryptSetProvParam to cache the user PIN for subsequent operations.

  1. Aktualisieren Sie für jede Smartcard, die bereits vom CSP bekannt ist, die gespeicherte SCARDHANDLE, und führen Sie die folgenden Überprüfungen durch:For each smart card already known by the CSP, refresh the stored SCARDHANDLE and make the following checks:

    1. Wenn die Smartcard entfernt wurde, fahren Sie mit der Suche fort.If the smart card has been removed, continue the search.

    2. Wenn die Smartcard vorhanden ist, aber bereits über den benannten Container verfügt, fahren Sie mit der Suche fort.If the smart card is present, but it already has the named container, continue the search.

    3. Wenn die Smartcard verfügbar ist, aber ein Aufruf von CardQueryFreeSpace angibt, dass die Smartcard nicht genügend Speicherplatz für einen zusätzlichen Schlüsselcontainer aufweist, fahren Sie mit der Suche fort.If the smart card is available, but a call to CardQueryFreeSpace indicates that the smart card has insufficient storage for an additional key container, continue the search.

    4. Verwenden Sie andernfalls die erste verfügbare Smartcard, die die obigen Kriterien für die Container Erstellung erfüllt.Otherwise, use the first available smart card that meets the above criteria for the container creation.

  2. Wenn keine übereinstimmende Smartcard im CSP-Cache gefunden wird, führen Sie einen Anruf an das Smartcard-Subsystem durch.If a matching smart card is not found in the CSP cache, make a call to the smart card subsystem. Der Rückruf, der zum Filtern von aufgelisteten Smartcards verwendet wird, überprüft, ob eine potenzielle Smartcard nicht bereits über den benannten Container verfügt, und dass CardQueryFreeSpace angibt, dass die Smartcard genügend Speicherplatz für einen zusätzlichen Container aufweist.The callback that is used to filter enumerated smart cards verifies that a candidate smart card does not already have the named container, and that CardQueryFreeSpace indicates the smart card has sufficient space for an additional container. Wenn keine geeignete Smartcard gefunden wird, wird der Benutzer aufgefordert, eine Smartcard einzufügen.If no suitable smart card is found, the user is prompted to insert a smart card.

Löschen eines ContainersDelete a container

  1. Wenn der angegebene Containername NULL ist, wird der Standardcontainer gelöscht.If the specified container name is NULL, the default container is deleted. Das Löschen des Standardcontainers bewirkt, dass ein neuer Standardcontainer willkürlich ausgewählt wird.Deleting the default container causes a new default container to be selected arbitrarily. Aus diesem Grund wird dieser Vorgang nicht empfohlen.For this reason, this operation is not recommended.

  2. Aktualisieren Sie für jede Smartcard, die bereits vom CSP bekannt ist, die gespeicherte SCARDHANDLE, und führen Sie die folgenden Überprüfungen durch:For each smart card already known by the CSP, refresh the stored SCARDHANDLE and make the following checks:

    1. Wenn die Smartcard nicht über den benannten Container verfügt, fahren Sie mit der Suche fort.If the smart card does not have the named container, continue the search.

    2. Wenn die Smartcard über den benannten Container verfügt, das Smartcard-handle aber nicht mehr gültig ist, speichern Sie die Seriennummer der entsprechenden Smartcard, und übergeben Sie Sie an SCardUI \ *.If the smart card has the named container, but the smart card handle is no longer valid, store the serial number of the matching smart card and pass it to SCardUI *.

  3. Wenn keine übereinstimmende Smartcard im CSP-Cache gefunden wird, führen Sie einen Anruf an das Smartcard-Subsystem durch.If a matching smart card is not found in the CSP cache, make a call to the smart card subsystem. Der Rückruf, der zum Filtern von aufgelisteten Smartcards verwendet wird, sollte überprüfen, ob eine Kandidaten-Smartcard den benannten Container aufweist.The callback that is used to filter enumerated smart cards should verify that a candidate smart card has the named container. Wenn eine fortlaufende Zahl als Ergebnis der vorherigen Cache Suche bereitgestellt wurde, sollte der Rückruf die aufgelisteten Smartcards auf Seriennummer und nicht auf Container Übereinstimmungen filtern.If a serial number was provided as a result of the previous cache search, the callback should filter enumerated smart cards on serial number rather than on container matches. Wenn der Kontext nicht geräuschlos ist und keine geeignete Smartcard gefunden wird, wird die Benutzeroberfläche angezeigt, in der der Benutzer zum Einfügen einer Smartcard aufgefordert wird.If the context is non-silent and no suitable smart card is found, display UI that prompts the user to insert a smart card.

Basis-CSP und KSP-basierte Architektur in WindowsBase CSP and KSP-based architecture in Windows

Bild4 zeigt die Kryptografie-Architektur, die vom Windows-Betriebssystem verwendet wird.Figure4 shows the Cryptography architecture that is used by the Windows operating system.

Kryptografie-Architektur

**** Bild4 -Kryptografie-ArchitekturFigure4  Cryptography architecture

Basis-CSP-und Smartcard-KSP-Eigenschaften in WindowsBase CSP and smart card KSP properties in Windows

Die folgenden Eigenschaften werden in Windows-Versionen unterstützt, die in der Liste " gilt für " am Anfang dieses Themas angegeben sind.The following properties are supported in versions of Windows designated in the Applies To list at the beginning of this topic.

**** Hinweis die API-Definitionen befinden sich in Wincrypt. h und winscard. h.Note  The API definitions are located in WinCrypt.h and WinSCard.h.

EigenschaftProperty BeschreibungDescription
PP_USER_CERTSTOREPP_USER_CERTSTORE – Wird verwendet, um eine HCERTSTORE zurückzugeben, die alle Benutzerzertifikate auf der Smartcard enthält.- Used to return an HCERTSTORE that contains all user certificates on the smart card
-Schreibgeschützt (nur von CryptGetProvParam verwendet)- Read-only (used only by CryptGetProvParam)
-Anrufer, der für das Schließen des Zertifikatspeichers verantwortlich ist- Caller responsible for closing the certificate store
– Mit PKCS_7_ASN_ENCODING oder X509_ASN_ENCODING codiertes Zertifikat- Certificate encoded using PKCS_7_ASN_ENCODING or X509_ASN_ENCODING
-CSP sollte KEY_PROV_INFO für Zertifikate einrichten- CSP should set KEY_PROV_INFO on certificates
– Der Zertifikatspeicher sollte als speicherresidenter Speicher angesehen werden.- Certificate store should be assumed to be an in-memory store
– Zertifikate sollten über ein gültiges CRYPT_KEY_PROV_INFO als Eigenschaft verfügen- Certificates should have a valid CRYPT_KEY_PROV_INFO as a property
PP_ROOT_CERTSTOREPP_ROOT_CERTSTORE – Lesen und schreiben (wird von CryptGetProvParam und CryptSetProvParam verwendet)- Read and Write (used by CryptGetProvParam and CryptSetProvParam)
– Wird verwendet, um eine Sammlung von Stammzertifikaten auf die Smartcard zu schreiben oder HCERTSTORE zurückzugeben, das Stammzertifikate von der Smartcard enthält.- Used to write a collection of root certificates to the smart card or return HCERTSTORE, which contains root certificates from the smart card
– Wird in erster Linie für die Teilnahme an einer Domäne mithilfe einer Smartcard verwendet- Used primarily for joining a domain by using a smart card
-Anrufer, der für das Schließen des Zertifikatspeichers verantwortlich ist- Caller responsible for closing the certificate store
PP_SMARTCARD_READERPP_SMARTCARD_READER -Schreibgeschützt (nur von CryptGetProvParam verwendet)- Read-only (used only by CryptGetProvParam)
– Gibt den Namen des Smartcard-Readers als ANSI-Zeichenfolge zurück, die zum Erstellen eines vollqualifizierten Container namens verwendet wird (also ein Smartcard-Lesegerät und ein Container).- Returns the smart card reader name as an ANSI string that is used to construct a fully qualified container name (that is, a smart card reader plus a container)
PP_SMARTCARD_GUIDPP_SMARTCARD_GUID -Zurückgeben der Smartcard-GUID (auch als fortlaufende Nummer bezeichnet), die für jede Smartcard eindeutig sein sollte- Return smart card GUID (also known as a serial number), which should be unique for each smart card
-Wird vom Certificate Propagation Service verwendet, um die Quelle eines Stammzertifikats zu überwachen- Used by the certificate propagation service to track the source of a root certificate
PP_UI_PROMPTPP_UI_PROMPT – Wird verwendet, um die Suchzeichenfolge für das Dialogfeld "SCardUIDlgSelectCard-Karten Einfügung" einzustellen.- Used to set the search string for the SCardUIDlgSelectCard card insertion dialog box
-Persistent für den gesamten Prozess, wenn er eingerichtet ist- Persistent for the entire process when it is set
-Schreibgeschützt (nur von CryptSetProvParam verwendet)- Write-only (used only by CryptSetProvParam)

Auswirkungen auf Kryptografiedienstanbieter in WindowsImplications for CSPs in Windows

Kryptografiedienstanbieter (Cryptographic Service Providers, LSP), einschließlich benutzerdefinierter Smartcard-Kryptografiedienstanbieter, werden weiterhin unterstützt, aber dieser Ansatz wird nicht empfohlen.Cryptographic Service Providers (CSPs), including custom smart card CSPs, continue to be supported but this approach is not recommended. Die Verwendung des vorhandenen Basis-CSP und der Smartcard KSP mit dem Smartcard-Mini Driver-Modell für Smartcards bietet beträchtliche Vorteile in Bezug auf die Leistung sowie die Zwischenspeicherung von Pins und Daten.Using the existing Base CSP and smart card KSP with the smart card minidriver model for smart cards provides significant benefits in terms of performance, and PIN and data caching. Ein Mini Driver kann für die Arbeit unter CryptoAPI-und CNG-Ebenen konfiguriert werden.One minidriver can be configured to work under CryptoAPI and CNG layers. Dies bietet Vorteile von erweiterter kryptografischer Unterstützung, einschließlich elliptischer Kurvenverschlüsselung und AES.This provides benefits from enhanced cryptographic support, including elliptic curve cryptography and AES.

Wenn eine Smartcard von einem CSP und einer Smartcard-Mini Driver registriert wurde, wird die zuletzt installierte Version für die Kommunikation mit der Smartcard verwendet.If a smart card is registered by a CSP and a smart card minidriver, the one that was installed most recently will be used to communicate with the smart card.

Schreiben einer Smartcard-Mini Driver,-CSP oder-KSPWrite a smart card minidriver, CSP, or KSP

Kryptografiedienstanbieter und KSPs sollten nur geschrieben werden, wenn bestimmte Funktionen in der aktuellen Smartcard-Mini Driver-Architektur nicht zur Verfügung stehen.CSPs and KSPs are meant to be written only if specific functionality is not available in the current smart card minidriver architecture. Beispielsweise unterstützt die Smartcard-Mini Driver-Architektur Hardwaresicherheitsmodule, sodass ein Mini Driver für ein Hardwaresicherheitsmodul geschrieben werden kann und ein CSP oder KSP möglicherweise nicht erforderlich ist, es sei denn, dies ist erforderlich, um Algorithmen zu unterstützen, die nicht in der Basis implementiert sind. CSP oder Smartcard KSP.For example, the smart card minidriver architecture supports hardware security modules, so a minidriver could be written for a hardware security module, and a CSP or KSP may not be required unless it is needed to support algorithms that are not implemented in the Base CSP or smart card KSP.

Weitere Informationen zum Schreiben einer Smartcard-Mini Driver,-CSP oder-KSP finden Sie unter Smartcard-Minitreiber.For more information about how to write a smart card minidriver, CSP, or KSP, see Smart Card Minidrivers.