Kryptografie-API: Nächste Generation

Zweck

Kryptografie-API: Next Generation (CNG) ist der langfristige Ersatz für die CryptoAPI. CNG ist auf vielen Ebenen erweiterbar und kryptografisch agnostisch im Verhalten.

Entwicklergruppe

CNG ist für die Verwendung durch Entwickler von Anwendungen vorgesehen, mit denen Benutzer Dokumente und andere Daten in einer sicheren Umgebung erstellen und austauschen können, insbesondere über nicht unsichere Medien wie das Internet. Entwickler sollten mit den Programmiersprachen C und C++ und der Windows-basierten Programmierumgebung vertraut sein. Obwohl nicht erforderlich, wird ein Verständnis von Kryptografie oder sicherheitsbezogenen Themen empfohlen.

Wenn Sie einen CNG-Kryptografiealgorithmusanbieter oder Schlüsselspeicheranbieter entwickeln, müssen Sie das Cryptographic Provider Development Kit von Microsoft herunterladen.

Laufzeitanforderungen

CNG wird ab Windows Server 2008 und Windows Vista unterstützt. Informationen zu Laufzeitanforderungen für ein bestimmtes Programmierelement finden Sie im Abschnitt "Anforderungen " der Referenzseite für dieses Element.

In diesem Abschnitt

Die folgenden Themen enthalten Informationen zu CNG und deren Verwendung in Ihren Anwendungen:

Thema Beschreibung
Über CNG Beschreibt CNG-Features, kryptografische Grundtypen und Schlüsselspeicher, Abruf, Import und Export.
Verwenden von CNG- Erläutert die Verwendung der Kryptografiekonfigurationsfeatures von CNG und der typischen CNG-Programmierung.
CNG-Referenz Detaillierte Beschreibungen der CNG-Programmierelemente. Diese Seiten enthalten Referenzbeschreibungen der API für die Arbeit mit CNG.

Wann CNG verwendet werden sollte

Verwenden Sie CNG, wenn Sie direkte Kontrolle über kryptografische Vorgänge in Windows Anwendungen benötigen. Die folgenden Anleitungen helfen Ihnen bei der Auswahl der geeigneten API:

Szenario Empfohlene API
Symmetrische Verschlüsselung/Entschlüsselung (AES, ChaCha20-Poly1305) CNG (BCryptEncrypt / BCryptDecrypt)
Hashing (SHA-256, SHA-384, SHA-512) CNG (BCryptCreateHash)
Asymmetrische Vorgänge (RSA, ECDSA, ML-DSA) CNG (BCryptSignHash, BCryptVerifySignature)
Schützen ruhender Benutzerdaten (pro Benutzer oder Computerumfang) DPAPI (einfacher, keine Schlüsselverwaltung erforderlich)
Schutz von Daten, auf die mehrere Benutzer oder Computer zugreifen können DPAPI-NG (NCryptProtectSecret)
TLS/SSL-Verbindungen Schannel (verwendet CNG intern)
Legacycode, der CryptoAPI bereits verwendet Fahren Sie mit CryptoAPI zur Wartung fort, planen Sie jedoch die Migration zu CNG für neue Features.

Warnung

Häufige kryptografische Fallstricke, um Folgendes zu vermeiden:

  • Verwenden Sie den ECB-Blockchiffremodus nicht – es werden Nur-Text-Muster geleert. Verwenden Sie CBC mit einem zufälligen IV oder vorzugsweise einem authentifizierten Modus wie GCM.
  • Verschlüsselungsschlüssel im Quellcode nicht hartcodieren. Verwenden Sie Schlüsselspeicheranbieter oder DPAPI zum Schutz von Schlüsseln.
  • Verwenden Sie MD5 oder SHA-1 nicht für Integritäts- oder Sicherheitszwecke. Verwenden Sie SHA-256 oder stärker.
  • Überprüfen Sie immer Rückgabecodes von CNG-Funktionen. Ein fehlgeschlagener kryptografischer Vorgang, der im Hintergrund ignoriert wird, kann dazu führen, dass Daten unverschlüsselt gespeichert werden.

Development Kit für kryptografische Anbieter

CryptoAPI