Freigeben über


CSPs und der Kryptografieprozess

CryptoAPI-Funktionen verwenden Kryptografiedienstanbieter (Crypto Service Provider , CSPs), um Verschlüsselung und Entschlüsselung durchzuführen und Schlüsselspeicher und -sicherheit bereitzustellen. Diese CSPs sind unabhängige Module. Im Idealfall werden CSPs so geschrieben, dass sie unabhängig von einer bestimmten Anwendung sind, sodass jede Anwendung mit einer Vielzahl von CSPs ausgeführt wird. In der Realität haben jedoch einige Anwendungen spezifische Anforderungen, die einen angepassten CSP erfordern. Dies ist mit dem Windows GDI-Modell vergleichbar. CSPs sind analog zu Grafikgerätetreibern.

Die Qualität des Schutzes für Schlüssel innerhalb des Systems ist ein Entwurfsparameter des CSP und nicht des Systems als Ganzes. Dadurch kann eine Anwendung in einer Vielzahl von Sicherheitskontexten ohne Änderungen ausgeführt werden.

Der Zugriff von Anwendungen auf die kryptografischen Internes wird sorgfältig eingeschränkt. Dies erleichtert die sichere und portable Anwendungsentwicklung.

Es gelten die folgenden drei Entwurfsregeln:

  • Anwendungen können nicht direkt auf Schlüsselmaterial zugreifen. Da das gesamte Schlüsselmaterial innerhalb des CSP generiert und von der Anwendung über undurchsichtige Handles verwendet wird, besteht kein Risiko, dass eine Anwendung oder die zugehörigen DLLs entweder Schlüsselmaterial preisgibt oder Schlüsselmaterial aus schlechten Zufallsquellen wählt.
  • Anwendungen können die Details von kryptografischen Vorgängen nicht angeben. Die CSP-Schnittstelle ermöglicht es einer Anwendung, einen Verschlüsselungs- oder Signaturalgorithmus auszuwählen, aber die Implementierung jedes kryptografischen Vorgangs erfolgt durch den CSP.
  • Anwendungen verarbeiten keine Benutzeranmeldeinformationen oder andere Benutzerauthentifizierungsdaten. Die Benutzerauthentifizierung wird vom CSP durchgeführt. Daher funktionieren zukünftige CSPs mit erweiterten Authentifizierungsfunktionen, z. B. biometrische Eingaben, ohne das Authentifizierungsmodell der Anwendung ändern zu müssen.

Ein CSP besteht mindestens aus einer DLL (Dynamic Link Library) und einer Signaturdatei. Die Signaturdatei ist erforderlich, um sicherzustellen, dass die CryptoAPI den CSP erkennt. CryptoAPI überprüft diese Signatur in regelmäßigen Abständen, um sicherzustellen, dass Manipulationen am CSP erkannt werden.

Einige CSPs können einen Bruchteil ihrer Funktionalität in einem adresstrennten Dienst implementieren, der über lokales RPC oder in Hardware aufgerufen wird, die über einen Systemgerätetreiber aufgerufen wird. Durch das Isolieren von globalen Schlüsselstatus- und zentralen kryptografischen Vorgängen in einem adresstrennten Dienst oder in Hardware werden Schlüssel und Vorgänge vor Manipulationen innerhalb eines Anwendungsdatenbereichs geschützt.

Es ist für Anwendungen unklug, Attribute für einen bestimmten CSP zu nutzen. Beispielsweise unterstützt der Microsoft Base Cryptographic Provider (mit CryptoAPI bereitgestellt) 40-Bit-Sitzungsschlüssel und öffentliche 512-Bit-Schlüssel. Anwendungen, die diese Schlüssel bearbeiten, müssen Annahmen über die Menge an Arbeitsspeicher vermeiden, die zum Speichern dieser Schlüssel benötigt wird, da die Anwendung wahrscheinlich fehlschlägt, wenn ein anderer CSP verwendet wird. Gut geschriebene Anwendungen müssen mit einer Vielzahl von CSPs funktionieren.

Ausführliche Informationen zu Kryptografieanbietertypen und vordefinierten CSPs, die mit CryptoAPI verwendet werden können, finden Sie unter Kryptografieanbietertypen und Microsoft Cryptographic Service Providers.