Partilhar via


Pseudo-alças do algoritmo CNG

A partir do Windows 10, o CNG (Cryptography API: Next Generation) fornece identificadores de algoritmo predefinidos para operações criptográficas. Esses manipuladores de algoritmo simplificam o desenvolvimento, eliminando a necessidade de criar manualmente identificadores para algoritmos criptográficos comuns, incluindo funções de hash, algoritmos de criptografia, assinaturas digitais e funções de derivação de chave.

Algoritmos MAC (Hash and Message Authentication Code)

Constante Descrição Standards
BCRYPT_MD2_ALG_HANDLE
0x00000001
Um identificador para o algoritmo de hash MD2. RFC 1319 [en]
BCRYPT_MD4_ALG_HANDLE
0x00000011
Um identificador para o algoritmo de hash MD4. RFC 1320 [en]
BCRYPT_MD5_ALG_HANDLE
0x00000021
Um identificador para o algoritmo de hash MD5. RFC 1321 [en]
BCRYPT_SHA1_ALG_HANDLE
0x00000031
Um identificador para o algoritmo de hash seguro de 160 bits. FIPS 180-4
BCRYPT_SHA256_ALG_HANDLE
0x00000041
Um identificador para o algoritmo de hash seguro de 256 bits. FIPS 180-4
BCRYPT_SHA384_ALG_HANDLE
0x00000051
Um identificador para o algoritmo de hash seguro de 384 bits. FIPS 180-4
BCRYPT_SHA512_ALG_HANDLE
0x00000061
Um identificador para o algoritmo de hash seguro de 512 bits. FIPS 180-4
BCRYPT_HMAC_SHA1_ALG_HANDLE
0x000000A1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro de 160 bits. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA256_ALG_HANDLE
0x000000B1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro de 256 bits. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA384_ALG_HANDLE
0x000000C1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro de 384 bits. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA512_ALG_HANDLE
0x000000D1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro de 512 bits. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_MD2_ALG_HANDLE
0x00000121
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash MD2. RFC 1319, RFC 2104
BCRYPT_HMAC_MD4_ALG_HANDLE
0x00000131
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash MD4. RFC 1320, RFC 2104
BCRYPT_HMAC_MD5_ALG_HANDLE
0x00000091
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash MD4. RFC 1321, RFC 2104
Disponível no Windows 11, versão 23H2
BCRYPT_SHA3_256_ALG_HANDLE
0x000003B1
Um identificador para o algoritmo de hash seguro SHA3 de 256 bits. FIPS 202
BCRYPT_SHA3_384_ALG_HANDLE
0x000003C1
Um identificador para o algoritmo de hash seguro SHA3 de 384 bits. FIPS 202
BCRYPT_SHA3_512_ALG_HANDLE
0x000003D1
Um identificador para o algoritmo de hash seguro SHA3 de 512 bits. FIPS 202
BCRYPT_HMAC_SHA3_256_ALG_HANDLE
0x000003E1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro SHA3 de 256 bits. FIPS 202, FIPS 198-1
BCRYPT_HMAC_SHA3_384_ALG_HANDLE
0x000003F1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro SHA3 de 384 bits. FIPS 202, FIPS 198-1
BCRYPT_HMAC_SHA3_512_ALG_HANDLE
0x00000401
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro SHA3 de 512 bits. FIPS 202, FIPS 198-1
BCRYPT_CSHAKE128_ALG_HANDLE
0x00000411
Um identificador para o algoritmo de hash cSHAKE de 128 bits XOF (função de saída extensível) derivado de SHA3. SP 800-185
BCRYPT_CSHAKE256_ALG_HANDLE
0x00000421
Um identificador para o algoritmo de hash cSHAKE de 256 bits XOF (função de saída extensível) derivado de SHA3. SP 800-185
BCRYPT_KMAC128_ALG_HANDLE
0x00000431
Um identificador para o código de autenticação de mensagem Keccak (KMAC) derivado de SHA3 criado em cSHAKE128. SP 800-185
BCRYPT_KMAC256_ALG_HANDLE
0x00000441
Um identificador para o código de autenticação de mensagem Keccak (KMAC) derivado de SHA3 criado em cSHAKE256. SP 800-185

Algoritmos de assinatura digital PQ

Observação

Os identificadores PQDSA nesta seção referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui. O recurso descrito nesta seção está disponível em versões de pré-lançamento do Windows Insider Preview.

Constante Descrição Standards
BCRYPT_LMS_ALG_HANDLE Um identificador para o algoritmo Leighton-Micali Hash-Based Signature (LMS). RFC 8554
BCRYPT_MLDSA_ALG_HANDLE Um identificador para o Module-Lattice-Based Digital Signature Algorithm (ML-DSA). FIPS 204
BCRYPT_SLHDSA_ALG_HANDLE Um identificador para o algoritmo de assinatura digital baseado em hash apátrida (SLH-DSA). FIPS 205
BCRYPT_XMSS_ALG_HANDLE Um identificador para o algoritmo baseado em hash stateful eXtended Merkle Signature Scheme (XMSS). RFC 8391

Algoritmos de cifra de fluxo

Constante Descrição Standards
BCRYPT_RC4_ALG_HANDLE
0x00000071
Um identificador para o algoritmo de cifra de fluxo RC4. Vários

Algoritmos de gerador de números aleatórios

Constante Descrição Standards
BCRYPT_RNG_ALG_HANDLE
0x00000081
Um identificador para o algoritmo do gerador de números aleatórios. A partir do Windows 10: O algoritmo RNG utilizado é o AES CTR_DRBG, definido no SP 800-90A.

Algoritmos de função de derivação de chave (KDF)

Constante Descrição
BCRYPT_CAPI_KDF_ALG_HANDLE
0x00000321
Um identificador para o algoritmo de função de derivação de chave Crypto API (CAPI). Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .
BCRYPT_PBKDF2_ALG_HANDLE
0x00000331
Um identificador para o algoritmo PBKDF2 (função de derivação de chave baseada em senha 2). Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .
BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE
0x00000341
Um identificador para o modo Contador, algoritmo de função de derivação de chave de código de autenticação de mensagem baseado em hash (HMAC). Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .
BCRYPT_SP80056A_CONCAT_ALG_HANDLE
0x00000351
Um identificador para o algoritmo da função de derivação de chave SP800-56A. Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .
BCRYPT_HKDF_ALG_HANDLE
0x00000391
Um identificador para a função de derivação de chave Extract-and-Expand baseada em HMAC. Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .

Algoritmos de mecanismo de encapsulamento de chave (KEM)

Observação

Os identificadores de ML-KEM nesta seção referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui. O recurso descrito nesta seção está disponível em versões de pré-lançamento do Windows Insider Preview.

Constante Descrição Standards
BCRYPT_MLKEM_ALG_HANDLE Um identificador para o algoritmo Module-Lattice-Based Key Encapsulation Mechanism (ML-KEM). FIPS 203

Algoritmos assimétricos

Constante Descrição Standards
BCRYPT_DH_ALG_HANDLE
0x00000281
Um identificador para o algoritmo de troca de chaves Diffie-Hellman. PKCS #3
BCRYPT_DSA_ALG_HANDLE
0x000002D1
Um identificador para o algoritmo de assinatura digital DSA (Digital Signature Algorithm). FIPS 186-2
A partir do Windows 8: Este algoritmo suporta FIPS 186-3. As chaves menores ou iguais a 1024 bits aderem ao FIPS 186-2 e as chaves maiores que 1024 ao FIPS 186-3.
BCRYPT_ECDH_ALG_HANDLE
0x00000291
Um identificador para a curva elíptica prime genérica Diffie-Hellman algoritmo de troca de chaves. SP 800-56A
BCRYPT_ECDH_P256_ALG_HANDLE
0x000002A1
Um identificador para a curva elíptica prime de 256 bits Diffie-Hellman algoritmo de troca de chaves. SP 800-56A
BCRYPT_ECDH_P384_ALG_HANDLE
0x000002B1
Um identificador para a curva elíptica prime de 384 bits Diffie-Hellman algoritmo de troca de chaves. SP 800-56A
BCRYPT_ECDH_P521_ALG_HANDLE
0x000002C1
Um identificador para a curva elíptica prime de 521 bits Diffie-Hellman algoritmo de troca de chaves. SP 800-56A
BCRYPT_ECDSA_ALG_HANDLE
0x000000F1
Um identificador para o algoritmo genérico de assinatura digital de curva elíptica prime. ANSI X9,62
BCRYPT_ECDSA_P256_ALG_HANDLE
0x000002E1
Um identificador para o algoritmo de assinatura digital de curva elíptica prime de 256 bits. FIPS 186-2, X9,62
BCRYPT_ECDSA_P384_ALG_HANDLE
0x000002F1
Um identificador para o algoritmo de assinatura digital de curva elíptica prime de 384 bits. FIPS 186-2, X9,62
BCRYPT_ECDSA_P521_ALG_HANDLE
0x00000301
Um identificador para o algoritmo de assinatura digital de curva elíptica prime de 521 bits. FIPS 186-2, X9,62
BCRYPT_RSA_ALG_HANDLE
0x000000E1
Um identificador para o algoritmo de chave pública RSA. PKCS #1 v1.5 e v2.0
BCRYPT_RSA_SIGN_ALG_HANDLE
0x00000311
Um identificador para o algoritmo de assinatura RSA. Este algoritmo não é suportado atualmente. Você pode usar o algoritmo BCRYPT_RSA_ALG_HANDLE para executar operações de assinatura RSA. PKCS #1 v1.5 e v2.0.

Bloquear algoritmos de código de autenticação de mensagens com base em cifra e cifra

Constante Descrição Standards
BCRYPT_AES_CMAC_ALG_HANDLE
0x00000101
Um identificador para o algoritmo de encriptação simétrica baseado em código de autenticação de mensagem (CMAC) baseado em cifra AES (Advanced Encryption Standard). SP 800-38B
BCRYPT_AES_GMAC_ALG_HANDLE
0x00000111
Um identificador para o algoritmo de encriptação simétrica Advanced Encryption Standard (AES) Galois message authentication code (GMAC). SP800-38D
BCRYPT_3DES_CBC_ALG_HANDLE
0x00000141
Um identificador para o algoritmo triplo Data Encryption Standard usando o modo Cipher Block Chaining (CBC). SP 800-67, SP 800-38A
BCRYPT_3DES_ECB_ALG_HANDLE
0x00000151
Um identificador para o algoritmo triplo Data Encryption Standard usando o modo Electronic Codebook (ECB). SP 800-67, SP 800-38A
BCRYPT_3DES_CFB_ALG_HANDLE
0x00000161
Um identificador para o algoritmo triplo Data Encryption Standard usando o modo Cipher Feedback (CFB). SP 800-67, SP 800-38A
BCRYPT_3DES_112_CBC_ALG_HANDLE
0x00000171
Um identificador para o algoritmo padrão de criptografia de dados triplo de 112 bits usando o modo de encadeamento de blocos de codificação (CBC). SP 800-67, SP 800-38A
BCRYPT_3DES_112_ECB_ALG_HANDLE
0x00000181
Um identificador para o algoritmo triplo de 112 bits Data Encryption Standard usando o modo Electronic Codebook (ECB). SP 800-67, SP 800-38A
BCRYPT_3DES_112_CFB_ALG_HANDLE
0x00000191
Um identificador para o algoritmo Padrão de Criptografia de Dados triplo de 112 bits usando o modo CFB (Cipher Feedback). SP 800-67, SP 800-38A
BCRYPT_AES_CBC_ALG_HANDLE
0x000001A1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o Modo de Encadeamento de Blocos de Codificação (CBC). FIPS 197
BCRYPT_AES_ECB_ALG_HANDLE
0x000001B1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o Modo de Livro de Código Eletrônico (ECB). FIPS 197
BCRYPT_AES_CFB_ALG_HANDLE
0x000001C1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o Modo de Feedback de Cifra (CFB). FIPS 197
BCRYPT_AES_CCM_ALG_HANDLE
0x000001D1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o contador com modo CBC-MAC (CCM). FIPS 197
BCRYPT_AES_GCM_ALG_HANDLE
0x000001E1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o Galois Counter Mode (GCM). FIPS 197
BCRYPT_DES_CBC_ALG_HANDLE
0x000001F1
Um identificador para o algoritmo DES (Data Encryption Standard) usando o GCM (Cipher Block Chaining Mode). FIPS 46-3, FIPS 81
BCRYPT_DES_ECB_ALG_HANDLE
0x00000201
Um identificador para o algoritmo Data Encryption Standard (DES) usando o Electronic Codebook Mode (ECB). FIPS 46-3, FIPS 81
BCRYPT_DES_CFB_ALG_HANDLE
0x00000211
Um identificador para o algoritmo Data Encryption Standard (DES) usando o Cipher Feedback Mode (CFB). FIPS 46-3, FIPS 81

Comentários

Você pode usar essas alças em qualquer situação que exija uma alça de algoritmo. No entanto, qualquer chamada para BCryptSetProperty falha porque o identificador de algoritmo é compartilhado e não pode ser modificado. Além disso, esses identificadores não podem ser usados no IRQL=DISPATCH modo kernel.