Udostępnij przez


Pseudoujścia algorytmu CNG

Począwszy od systemu Windows 10, CNG (Cryptography API: Next Generation) udostępnia wstępnie zdefiniowane algorytmy do obsługi operacji kryptograficznych. Ten algorytm upraszcza programowanie, eliminując konieczność ręcznego tworzenia dojść dla typowych algorytmów kryptograficznych, w tym funkcji skrótu, algorytmów szyfrowania, podpisów cyfrowych i funkcji wyprowadzania kluczy.

Algorytmy uwierzytelniania skrótów i komunikatów (MAC)

Stały Opis Standards
BCRYPT_MD2_ALG_HANDLE
0x00000001
Uchwyt algorytmu skrótu MD2. RFC 1319
BCRYPT_MD4_ALG_HANDLE
0x00000011
Uchwyt algorytmu skrótu MD4. RFC 1320
BCRYPT_MD5_ALG_HANDLE
0x00000021
Uchwyt algorytmu skrótu MD5. RFC 1321
BCRYPT_SHA1_ALG_HANDLE
0x00000031
Uchwyt dla algorytmu 160-bitowego bezpiecznego skrótu. FIPS 180-4
BCRYPT_SHA256_ALG_HANDLE
0x00000041
Uchwyt dla 256-bitowego algorytmu bezpiecznego skrótu. FIPS 180-4
BCRYPT_SHA384_ALG_HANDLE
0x00000051
Uchwyt dla algorytmu 384-bitowego bezpiecznego skrótu. FIPS 180-4
BCRYPT_SHA512_ALG_HANDLE
0x00000061
Uchwyt dla algorytmu 512-bitowego bezpiecznego skrótu. FIPS 180-4
BCRYPT_HMAC_SHA1_ALG_HANDLE
0x000000A1
Dojście do kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu 160-bitowego bezpiecznego skrótu. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA256_ALG_HANDLE
0x000000B1
Dojście do kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu 256-bitowego algorytmu bezpiecznego skrótu. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA384_ALG_HANDLE
0x000000C1
Dojście dla kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu 384-bitowego bezpiecznego skrótu. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA512_ALG_HANDLE
0x000000D1
Dojście dla kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu 512-bitowego bezpiecznego skrótu. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_MD2_ALG_HANDLE
0x00000121
Dojście dla kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu skrótu MD2. RFC 1319, RFC 2104
BCRYPT_HMAC_MD4_ALG_HANDLE
0x00000131
Dojście do kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu skrótu MD4. RFC 1320, RFC 2104
BCRYPT_HMAC_MD5_ALG_HANDLE
0x00000091
Dojście do kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu skrótu MD4. RFC 1321, RFC 2104
Dostępne w systemie Windows 11 w wersji 23H2
BCRYPT_SHA3_256_ALG_HANDLE
0x000003B1
Uchwyt algorytmu wyznaczania skrótu SHA3 256-bitowego. FIPS 202
BCRYPT_SHA3_384_ALG_HANDLE
0x000003C1
Uchwyt algorytmu wyznaczania skrótu SHA3 384-bitowego. FIPS 202
BCRYPT_SHA3_512_ALG_HANDLE
0x000003D1
Uchwyt algorytmu wyznaczania skrótu SHA3 512-bitowego. FIPS 202
BCRYPT_HMAC_SHA3_256_ALG_HANDLE
0x000003E1
Dojście do kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu sha3 256-bitowego bezpiecznego skrótu. FIPS 202, FIPS 198-1
BCRYPT_HMAC_SHA3_384_ALG_HANDLE
0x000003F1
Dojście dla kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu sha3 384-bitowego bezpiecznego skrótu. FIPS 202, FIPS 198-1
BCRYPT_HMAC_SHA3_512_ALG_HANDLE
0x00000401
Dojście do kodu uwierzytelniania komunikatów opartego na skrótach przy użyciu algorytmu sha3 512-bitowego bezpiecznego skrótu. FIPS 202, FIPS 198-1
BCRYPT_CSHAKE128_ALG_HANDLE
0x00000411
Uchwyt algorytmu wyznaczania wartości skrótu CSHAKE 128-bitowego XOF (funkcji rozszerzalnej-wyjściowej). SP 800-185
BCRYPT_CSHAKE256_ALG_HANDLE
0x00000421
Uchwyt algorytmu wyznaczania wartości skrótu skrótu CSHAKE 256-bitowego XOF (funkcji rozszerzalnej-wyjściowej). SP 800-185
BCRYPT_KMAC128_ALG_HANDLE
0x00000431
Uchwyt dla pochodnego kodu uwierzytelniania komunikatów Keccak (KMAC) oparty na cSHAKE128. SP 800-185
BCRYPT_KMAC256_ALG_HANDLE
0x00000441
Uchwyt dla pochodnego kodu uwierzytelniania komunikatów Keccak (KMAC) oparty na cSHAKE256. SP 800-185

Algorytmy podpisu cyfrowego PQ

Uwaga / Notatka

Dojścia PQDSA w tej sekcji odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, wyraźnych ani domniemanych, w odniesieniu do podanych tutaj informacji. Funkcja opisana w tej sekcji jest dostępna w wersjach wstępnych niejawnych testów systemu Windows Preview.

Stały Opis Standards
BCRYPT_LMS_ALG_HANDLE Dojście do algorytmu Leighton-Micali Hash-Based Signature (LMS). RFC 8554
BCRYPT_MLDSA_ALG_HANDLE Dojście do modułu —Lattice-Based algorytmu podpisu cyfrowego (ML-DSA). FIPS 204
BCRYPT_SLHDSA_ALG_HANDLE Dojście do bezstanowego algorytmu podpisu cyfrowego opartego na skrótach (SLH-DSA). FIPS 205
BCRYPT_XMSS_ALG_HANDLE Dojście do algorytmu eXtended Merkle Signature Scheme (XMSS) opartego na skrótach stanowych. RFC 8391

Algorytmy szyfrowania strumienia

Stały Opis Standards
BCRYPT_RC4_ALG_HANDLE
0x00000071
Uchwyt algorytmu szyfrowania strumienia RC4. Różne

Algorytmy generatora liczb losowych

Stały Opis Standards
BCRYPT_RNG_ALG_HANDLE
0x00000081
Uchwyt algorytmu generatora liczb losowych. Począwszy od systemu Windows 10: Używany algorytm RNG jest CTR_DRBG AES zdefiniowany w sp 800-90A.

Algorytmy funkcji wyprowadzania kluczy (KDF)

Stały Opis
BCRYPT_CAPI_KDF_ALG_HANDLE
0x00000321
Dojście do algorytmu funkcji wyprowadzania klucza interfejsu API kryptograficznego (CAPI). Używane przez funkcje BCryptKeyDerivation i NCryptKeyDerivation .
BCRYPT_PBKDF2_ALG_HANDLE
0x00000331
Uchwyt algorytmu wyprowadzania klucza opartego na hasłach 2 (PBKDF2). Używane przez funkcje BCryptKeyDerivation i NCryptKeyDerivation .
BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE
0x00000341
Dojście do trybu Licznik, algorytm funkcji funkcji wyprowadzania klucza uwierzytelniania komunikatów oparty na skrótach (HMAC). Używane przez funkcje BCryptKeyDerivation i NCryptKeyDerivation .
BCRYPT_SP80056A_CONCAT_ALG_HANDLE
0x00000351
Dojście do algorytmu funkcji wyprowadzania klucza SP800-56A. Używane przez funkcje BCryptKeyDerivation i NCryptKeyDerivation .
BCRYPT_HKDF_ALG_HANDLE
0x00000391
Dojście do funkcji wyprowadzania kluczy opartych na protokole HMAC i rozwiń. Używane przez funkcje BCryptKeyDerivation i NCryptKeyDerivation .

Algorytmy mechanizmu hermetyzacji kluczy (KEM)

Uwaga / Notatka

Dojścia ML-KEM w tej sekcji odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, wyraźnych ani domniemanych, w odniesieniu do podanych tutaj informacji. Funkcja opisana w tej sekcji jest dostępna w wersjach wstępnych niejawnych testów systemu Windows Preview.

Stały Opis Standards
BCRYPT_MLKEM_ALG_HANDLE Dojście do algorytmu Module-Lattice-Based Key Encapsulation Mechanism (ML-KEM). FIPS 203

Algorytmy asymetryczne

Stały Opis Standards
BCRYPT_DH_ALG_HANDLE
0x00000281
Dojście do algorytmu wymiany kluczy Diffie-Hellman. PKCS #3
BCRYPT_DSA_ALG_HANDLE
0x000002D1
Dojście do algorytmu podpisu cyfrowego (DSA, Digital Signature Algorithm). FIPS 186-2
Począwszy od systemu Windows 8: Ten algorytm obsługuje standard FIPS 186-3. Klucze mniejsze niż lub równe 1024 bitom są zgodne ze standardem FIPS 186-2 i kluczami większymi niż 1024 do standardu FIPS 186-3.
BCRYPT_ECDH_ALG_HANDLE
0x00000291
Uchwyt do ogólnej krzywej wielokropka podstawowego Diffie-Hellman algorytm wymiany kluczy. SP 800-56A
BCRYPT_ECDH_P256_ALG_HANDLE
0x000002A1
Uchwyt do 256-bitowej krzywej wielokropka podstawowego Diffie-Hellman algorytm wymiany kluczy. SP 800-56A
BCRYPT_ECDH_P384_ALG_HANDLE
0x000002B1
Uchwyt do 384-bitowej krzywej eliptycznej Diffie-Hellman algorytm wymiany kluczy. SP 800-56A
BCRYPT_ECDH_P521_ALG_HANDLE
0x000002C1
Uchwyt do 521-bitowej krzywej eliptycznej Diffie-Hellman algorytm wymiany kluczy. SP 800-56A
BCRYPT_ECDSA_ALG_HANDLE
0x000000F1
Uchwyt do ogólnego algorytmu podpisu cyfrowego krzywej eliptycznej. ANSI X9.62
BCRYPT_ECDSA_P256_ALG_HANDLE
0x000002E1
Uchwyt do 256-bitowego algorytmu podpisu cyfrowego krzywej wielokropka. FIPS 186-2, X9.62
BCRYPT_ECDSA_P384_ALG_HANDLE
0x000002F1
Uchwyt do 384-bitowego algorytmu podpisu cyfrowego krzywej eliptycznej. FIPS 186-2, X9.62
BCRYPT_ECDSA_P521_ALG_HANDLE
0x00000301
Uchwyt do 521-bitowego algorytmu podpisu cyfrowego krzywej wielokropka. FIPS 186-2, X9.62
BCRYPT_RSA_ALG_HANDLE
0x000000E1
Dojście do algorytmu klucza publicznego RSA. PKCS #1 w wersji 1.5 i 2.0
BCRYPT_RSA_SIGN_ALG_HANDLE
0x00000311
Uchwyt algorytmu podpisu RSA. Ten algorytm nie jest obecnie obsługiwany. Algorytm BCRYPT_RSA_ALG_HANDLE umożliwia wykonywanie operacji podpisywania RSA. PKCS #1 w wersji 1.5 i 2.0.

Blokuj algorytmy kodu uwierzytelniania komunikatów oparte na szyfrach i szyfrach

Stały Opis Standards
BCRYPT_AES_CMAC_ALG_HANDLE
0x00000101
Dojście dla algorytmu szyfrowania komunikatów opartych na szyfrowaniu (CMAC) w standardzie Advanced Encryption Standard (AES). SP 800-38B
BCRYPT_AES_GMAC_ALG_HANDLE
0x00000111
Dojście dla algorytmu szyfrowania symetrycznego GMAC (Advanced Encryption Standard, AES) Galois message authentication code (GMAC). SP800-38D
BCRYPT_3DES_CBC_ALG_HANDLE
0x00000141
Uchwyt dla algorytmu triple Data Encryption Standard przy użyciu trybu łańcucha bloków szyfrowania (CBC). SP 800-67, SP 800-38A
BCRYPT_3DES_ECB_ALG_HANDLE
0x00000151
Uchwyt dla potrójnego algorytmu standardowego szyfrowania danych przy użyciu trybu elektronicznego podręcznika (EBC). SP 800-67, SP 800-38A
BCRYPT_3DES_CFB_ALG_HANDLE
0x00000161
Uchwyt dla algorytmu triple Data Encryption Standard przy użyciu trybu szyfrowania opinii (CFB). SP 800-67, SP 800-38A
BCRYPT_3DES_112_CBC_ALG_HANDLE
0x00000171
Uchwyt dla 112-bitowego algorytmu standardowego szyfrowania danych przy użyciu trybu łańcucha bloków szyfrowania (CBC). SP 800-67, SP 800-38A
BCRYPT_3DES_112_ECB_ALG_HANDLE
0x00000181
Uchwyt dla 112-bitowego algorytmu standardowego szyfrowania danych przy użyciu elektronicznego trybu podręcznika (EBC). SP 800-67, SP 800-38A
BCRYPT_3DES_112_CFB_ALG_HANDLE
0x00000191
Uchwyt dla 112-bitowego algorytmu standardowego szyfrowania danych przy użyciu trybu szyfrowania opinii (CFB). SP 800-67, SP 800-38A
BCRYPT_AES_CBC_ALG_HANDLE
0x000001A1
Dojście dla algorytmu Advanced Encryption Standard (AES) przy użyciu trybu łańcucha bloków szyfrowania (CBC). FIPS 197
BCRYPT_AES_ECB_ALG_HANDLE
0x000001B1
Dojście dla algorytmu Advanced Encryption Standard (AES) przy użyciu elektronicznego trybu podręcznika (EBC). FIPS 197
BCRYPT_AES_CFB_ALG_HANDLE
0x000001C1
Dojście dla algorytmu Advanced Encryption Standard (AES) przy użyciu trybu szyfrowania opinii (CFB). FIPS 197
BCRYPT_AES_CCM_ALG_HANDLE
0x000001D1
Dojście dla algorytmu Advanced Encryption Standard (AES) przy użyciu licznika z trybem CBC-MAC (CCM). FIPS 197
BCRYPT_AES_GCM_ALG_HANDLE
0x000001E1
Dojście dla algorytmu Advanced Encryption Standard (AES) przy użyciu trybu licznika Galois (GCM). FIPS 197
BCRYPT_DES_CBC_ALG_HANDLE
0x000001F1
Dojście dla algorytmu DES (Data Encryption Standard) przy użyciu trybu łańcucha bloków szyfrowania (GCM). FIPS 46-3, FIPS 81
BCRYPT_DES_ECB_ALG_HANDLE
0x00000201
Dojście dla algorytmu Szyfrowania Danych Standard (DES) przy użyciu trybu elektronicznego książki kodowej (EBC). FIPS 46-3, FIPS 81
BCRYPT_DES_CFB_ALG_HANDLE
0x00000211
Dojście dla algorytmu DES (Data Encryption Standard) przy użyciu trybu szyfrowania opinii (CFB). FIPS 46-3, FIPS 81

Uwagi

Można użyć tych dojść w dowolnej sytuacji, która wymaga uchwytu algorytmu. Jednak każde wywołanie elementu BCryptSetProperty kończy się niepowodzeniem, ponieważ uchwyt algorytmu jest współużytkowany i nie można go modyfikować. Ponadto nie można używać tych dojść w IRQL=DISPATCH trybie jądra.