Primitive di crittografia
L'API CNG fornisce un set di funzioni che eseguono operazioni di crittografia di base, ad esempio la creazione di hash o la crittografia e la decrittografia dei dati. Per altre informazioni su queste funzioni, vedere Funzioni primitive di crittografia CNG.
CNG implementa numerosi algoritmi di crittografia. Ogni algoritmo o classe di algoritmi espone la propria API primitiva. È possibile installare più implementazioni di un determinato algoritmo contemporaneamente; Tuttavia, solo un'implementazione sarà l'impostazione predefinita in qualsiasi momento.
Ogni classe di algoritmo in CNG è rappresentata da un router primitivo. Le applicazioni che usano le funzioni primitive CNG si collegeranno al file binario del router Bcrypt.dll in modalità utente o Ksecdd.sys in modalità kernel prima di chiamare le funzioni. Varie routine router gestiscono tutte le primitive dell'algoritmo. Questi router tengono traccia di ogni implementazione dell'algoritmo installata nel sistema e instradano ogni chiamata di funzione al modulo del provider primitivo appropriato.
CNG fornisce primitive per le classi di algoritmi seguenti.
Classe algorithm | Descrizione |
---|---|
Generatore di numeri casuali |
Generazione di numeri casuali collegabili (RNG). |
Hash |
Algoritmi usati per l'hashing, ad esempio SHA1 e SHA2. |
Crittografia simmetrica |
Algoritmi usati per la crittografia simmetrica, ad esempio AES, 3DES e RC4. |
Crittografia asimmetrica |
Algoritmi asimmetrici (chiave pubblica) che supportano la crittografia, ad esempio RSA. |
Firma |
Algoritmi di firma come DSA ed ECDSA. Questa classe può essere usata anche con RSA. |
Contratto segreto |
Algoritmi di accordo segreto, ad esempio Diffie-Hellman (DH) e curva ellittica Diffie-Hellman (ECDH). |
La figura seguente illustra la progettazione e la funzione delle primitive di crittografia CNG.
Il file di intestazione Bcrypt.h definisce la costante MS_PRIMITIVE_PROVIDER come "Microsoft Primitive Provider". Per usare microsoft Primitive Provider, passare questo valore a BCryptOpenAlgorithmProvider.