Cryptografie-API: Volgende generatie

Doel

Cryptografie-API: Next Generation (CNG) is de langetermijnvervanging voor de CryptoAPI. CNG is zo ontworpen dat het op meerdere niveaus uitbreidbaar is en in zijn werking onafhankelijk van cryptografie.

Doelgroep voor ontwikkelaars

CNG is bedoeld voor gebruik door ontwikkelaars van toepassingen waarmee gebruikers documenten en andere gegevens in een beveiligde omgeving kunnen maken en uitwisselen, met name via onbeveiligde media zoals internet. Ontwikkelaars moeten bekend zijn met de programmeertalen C en C++ en de windows-programmeeromgeving. Hoewel dit niet vereist is, wordt een goed begrip van cryptografie- of beveiligingsgerelateerde onderwerpen aanbevolen.

Als u een cryptografische CNG-algoritmeprovider of sleutelopslagprovider ontwikkelt, moet u de Cryptographic Provider Development Kit van Microsoft downloaden.

Vereisten voor uitvoering

CNG wordt ondersteund vanaf Windows Server 2008 en Windows Vista. Zie de sectie Vereisten van de referentiepagina voor dat element voor informatie over runtimevereisten voor een bepaald programmeerelement.

In deze sectie

De volgende onderwerpen bevatten informatie over CNG en hoe u deze kunt gebruiken in uw toepassingen:

Onderwerp Beschrijving
Over CNG Beschrijft CNG-functies, cryptografische primitieven en sleutelopslag, ophalen, importeren en exporteren.
CNG gebruiken Hierin wordt uitgelegd hoe u de cryptografieconfiguratiefuncties van CNG en typische CNG-programmering gebruikt.
CNG-referentie Gedetailleerde beschrijvingen van de CNG-programmeerelementen. Deze pagina's bevatten referentiebeschrijvingen van de API voor het werken met CNG.

Wanneer gebruikt u CNG?

Gebruik CNG wanneer u directe controle nodig hebt over cryptografische bewerkingen in Windows toepassingen. De volgende richtlijnen helpen u bij het kiezen van de juiste API:

Scenario Aanbevolen API
Symmetrische versleuteling/ontsleuteling (AES, ChaCha20-Poly1305) CNG (BCryptEncrypt / BCryptDecrypt)
Hashing (SHA-256, SHA-384, SHA-512) CNG (BCryptCreateHash)
Asymmetrische bewerkingen (RSA, ECDSA, ML-DSA) CNG (BCryptSignHash, BCryptVerifySignature)
Opgeslagen gebruikersgegevens beveiligen (op gebruikers- of machineniveau) DPAPI (eenvoudiger, geen sleutelbeheer vereist)
Gegevens beveiligen die toegankelijk zijn voor meerdere gebruikers of computers DPAPI-NG (NCryptProtectSecret)
TLS/SSL-verbindingen Schannel (maakt intern gebruik van CNG)
Verouderde code die al gebruikmaakt van CryptoAPI Ga verder met CryptoAPI voor onderhoud, maar plan de migratie naar CNG voor nieuwe functies

Warning

Veelvoorkomende cryptografische valkuilen om te voorkomen:

  • Gebruik de ECB-blokversleutelingsmodus niet — die lekt plattekstpatronen. Gebruik CBC met een willekeurige IV of bij voorkeur een geverifieerde modus zoals GCM.
  • Versleutelingssleutels in broncode niet hardcoderen. Gebruik sleutelopslagproviders of DPAPI voor sleutelbeveiliging.
  • Gebruik MD5 of SHA-1 niet voor integriteits- of beveiligingsdoeleinden. Gebruik SHA-256 of sterker.
  • Valideer altijd retourcodes van CNG-functies. Een mislukte cryptografische bewerking die op de achtergrond wordt genegeerd, kan ertoe leiden dat gegevens niet-versleuteld worden opgeslagen.

Development Kit voor cryptografische providers

CryptoAPI