Primitive crittografiche
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 CNG Cryptographic Primitive Functions.
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 verranno collegate 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 algoritmo | 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 contratto segreto, ad esempio Diffie-Hellman (DH) e curva ellittica Diffie-Hellman (ECDH). |
La figura seguente illustra la progettazione e la funzione delle primitive crittografiche CNG.
Il file di intestazione Bcrypt.h definisce la costante MS_PRIMITIVE_PROVIDER come "Provider primitivo Microsoft". Per usare il provider primitivo Microsoft, passare questo valore a BCryptOpenAlgorithmProvider.