다음을 통해 공유


CNG 알고리즘 의사 핸들

Windows 10부터 CNG(암호화 API: 차세대)는 암호화 작업에 대해 미리 정의된 알고리즘 핸들을 제공합니다. 이러한 알고리즘 핸들은 해시 함수, 암호화 알고리즘, 디지털 서명 및 키 파생 함수를 비롯한 일반적인 암호화 알고리즘에 대한 핸들을 수동으로 만들 필요가 없도록 하여 개발을 간소화합니다.

MAC(해시 및 메시지 인증 코드) 알고리즘

상수 묘사 표준
BCRYPT_MD2_ALG_HANDLE
0x00000001
MD2 해시 알고리즘에 대한 핸들입니다. RFC 1319
BCRYPT_MD4_ALG_HANDLE
0x00000011
MD4 해시 알고리즘에 대한 핸들입니다. RFC 1320
BCRYPT_MD5_ALG_HANDLE
0x00000021
MD5 해시 알고리즘에 대한 핸들입니다. RFC 1321
BCRYPT_SHA1_ALG_HANDLE
0x00000031
160비트 보안 해시 알고리즘에 대한 핸들입니다. FIPS 180-4
BCRYPT_SHA256_ALG_HANDLE
0x00000041
256비트 보안 해시 알고리즘에 대한 핸들입니다. FIPS 180-4
BCRYPT_SHA384_ALG_HANDLE
0x00000051
384비트 보안 해시 알고리즘에 대한 핸들입니다. FIPS 180-4
BCRYPT_SHA512_ALG_HANDLE
0x00000061
512비트 보안 해시 알고리즘에 대한 핸들입니다. FIPS 180-4
BCRYPT_HMAC_SHA1_ALG_HANDLE
0x000000A1
160비트 보안 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA256_ALG_HANDLE
0x000000B1
256비트 보안 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA384_ALG_HANDLE
0x000000C1
384비트 보안 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA512_ALG_HANDLE
0x000000D1
512비트 보안 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_MD2_ALG_HANDLE
0x00000121
MD2 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. RFC 1319, RFC 2104
BCRYPT_HMAC_MD4_ALG_HANDLE
0x00000131
MD4 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. RFC 1320, RFC 2104
BCRYPT_HMAC_MD5_ALG_HANDLE
0x00000091
MD4 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. RFC 1321, RFC 2104
Windows 11 버전 23H2에서 사용 가능
BCRYPT_SHA3_256_ALG_HANDLE
0x000003B1
SHA3 256비트 보안 해시 알고리즘에 대한 핸들입니다. FIPS 202
BCRYPT_SHA3_384_ALG_HANDLE
0x000003C1
SHA3 384비트 보안 해시 알고리즘에 대한 핸들입니다. FIPS 202
BCRYPT_SHA3_512_ALG_HANDLE
0x000003D1
SHA3 512비트 보안 해시 알고리즘에 대한 핸들입니다. FIPS 202
BCRYPT_HMAC_SHA3_256_ALG_HANDLE
0x000003E1
SHA3 256비트 보안 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. FIPS 202, FIPS 198-1
BCRYPT_HMAC_SHA3_384_ALG_HANDLE
0x000003F1
SHA3 384비트 보안 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. FIPS 202, FIPS 198-1
BCRYPT_HMAC_SHA3_512_ALG_HANDLE
0x00000401
SHA3 512비트 보안 해시 알고리즘을 사용하는 해시 기반 메시지 인증 코드에 대한 핸들입니다. FIPS 202, FIPS 198-1
BCRYPT_CSHAKE128_ALG_HANDLE
0x00000411
SHA3 파생 cSHAKE 128비트 XOF(extendable-output 함수) 해시 알고리즘에 대한 핸들입니다. SP 800-185
BCRYPT_CSHAKE256_ALG_HANDLE
0x00000421
SHA3 파생 cSHAKE 256비트 XOF(extendable-output 함수) 해시 알고리즘에 대한 핸들입니다. SP 800-185
BCRYPT_KMAC128_ALG_HANDLE
0x00000431
cSHAKE128을 기반으로 하는 SHA3 파생 KMAC(Keccak 메시지 인증 코드)에 대한 핸들입니다. SP 800-185
BCRYPT_KMAC256_ALG_HANDLE
0x00000441
cSHAKE256을 기반으로 하는 SHA3 파생 KMAC(Keccak 메시지 인증 코드)에 대한 핸들입니다. SP 800-185

PQ 디지털 서명 알고리즘

비고

이 섹션의 PQDSA 핸들은 상용 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다. 이 섹션에 설명된 기능은 Windows Insider Preview의 시험판 버전에서 사용할 수 있습니다.

상수 묘사 표준
BCRYPT_LMS_ALG_HANDLE Leighton-Micali Hash-Based 서명(LMS) 알고리즘에 대한 핸들입니다. RFC 8554
BCRYPT_MLDSA_ALG_HANDLE 모듈Lattice-Based 디지털 서명 알고리즘(ML-DSA)에 대한 핸들입니다. FIPS 204
BCRYPT_SLHDSA_ALG_HANDLE 상태 비스테이션 해시 기반 디지털 서명 알고리즘(SLH-DSA)에 대한 핸들입니다. FIPS 205
BCRYPT_XMSS_ALG_HANDLE eXtended Merkle Signature Scheme(XMSS) 상태 저장 해시 기반 알고리즘에 대한 핸들입니다. RFC 8391

암호화 알고리즘 스트리밍

상수 묘사 표준
BCRYPT_RC4_ALG_HANDLE
0x00000071
RC4 스트림 암호 알고리즘에 대한 핸들입니다. 다양한

난수 생성기 알고리즘

상수 묘사 표준
BCRYPT_RNG_ALG_HANDLE
0x00000081
난수 생성기 알고리즘에 대한 핸들입니다. Windows 10부터: 사용되는 RNG 알고리즘은 SP 800-90A에 정의된 AES CTR_DRBG.

KDF(키 파생 함수) 알고리즘

상수 묘사
BCRYPT_CAPI_KDF_ALG_HANDLE
0x00000321
CAPI(Crypto API) 키 파생 함수 알고리즘에 대한 핸들입니다. BCryptKeyDerivationNCryptKeyDerivation 함수에서 사용됩니다.
BCRYPT_PBKDF2_ALG_HANDLE
0x00000331
PBKDF2(암호 기반 키 파생 함수 2) 알고리즘에 대한 핸들입니다. BCryptKeyDerivationNCryptKeyDerivation 함수에서 사용됩니다.
BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE
0x00000341
카운터 모드, HMAC(해시 기반 메시지 인증 코드) 키 파생 함수 알고리즘에 대한 핸들입니다. BCryptKeyDerivationNCryptKeyDerivation 함수에서 사용됩니다.
BCRYPT_SP80056A_CONCAT_ALG_HANDLE
0x00000351
SP800-56A 키 파생 함수 알고리즘에 대한 핸들입니다. BCryptKeyDerivationNCryptKeyDerivation 함수에서 사용됩니다.
BCRYPT_HKDF_ALG_HANDLE
0x00000391
HMAC 기반 추출 및 확장 키 파생 함수에 대한 핸들입니다. BCryptKeyDerivationNCryptKeyDerivation 함수에서 사용됩니다.

KEM(키 캡슐화 메커니즘) 알고리즘

비고

이 섹션의 ML-KEM 핸들은 상용 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다. 이 섹션에 설명된 기능은 Windows Insider Preview의 시험판 버전에서 사용할 수 있습니다.

상수 묘사 표준
BCRYPT_MLKEM_ALG_HANDLE 모듈Lattice-Based 키 캡슐화 메커니즘(ML-KEM) 알고리즘에 대한 핸들입니다. FIPS 203

비대칭 알고리즘

상수 묘사 표준
BCRYPT_DH_ALG_HANDLE
0x00000281
Diffie-Hellman 키 교환 알고리즘에 대한 핸들입니다. PKCS #3
BCRYPT_DSA_ALG_HANDLE
0x000002D1
DSA(디지털 서명 알고리즘) 디지털 서명 알고리즘에 대한 핸들입니다. FIPS 186-2
Windows 8부터: 이 알고리즘은 FIPS 186-3을 지원합니다. 1024비트 이하의 키는 FIPS 186-2 를 준수하고 1024보다 큰 키는 FIPS 186-3을 준수합니다.
BCRYPT_ECDH_ALG_HANDLE
0x00000291
제네릭 소수 타원 곡선 Diffie-Hellman 키 교환 알고리즘에 대한 핸들입니다. SP 800-56A
BCRYPT_ECDH_P256_ALG_HANDLE
0x000002A1
키 교환 알고리즘을 Diffie-Hellman 256비트 소수 타원 곡선에 대한 핸들입니다. SP 800-56A
BCRYPT_ECDH_P384_ALG_HANDLE
0x000002B1
키 교환 알고리즘을 Diffie-Hellman 384비트 소수 타원 곡선에 대한 핸들입니다. SP 800-56A
BCRYPT_ECDH_P521_ALG_HANDLE
0x000002C1
키 교환 알고리즘을 Diffie-Hellman 521비트 소수 타원 곡선에 대한 핸들입니다. SP 800-56A
BCRYPT_ECDSA_ALG_HANDLE
0x000000F1
제네릭 소수 타원 곡선 디지털 서명 알고리즘에 대한 핸들입니다. ANSI X9.62
BCRYPT_ECDSA_P256_ALG_HANDLE
0x000002E1
256비트 소수 타원 곡선 디지털 서명 알고리즘에 대한 핸들입니다. FIPS 186-2, X9.62
BCRYPT_ECDSA_P384_ALG_HANDLE
0x000002F1
384비트 소수 타원 곡선 디지털 서명 알고리즘에 대한 핸들입니다. FIPS 186-2, X9.62
BCRYPT_ECDSA_P521_ALG_HANDLE
0x00000301
521비트 소수 타원 곡선 디지털 서명 알고리즘에 대한 핸들입니다. FIPS 186-2, X9.62
BCRYPT_RSA_ALG_HANDLE
0x000000E1
RSA 공개 키 알고리즘에 대한 핸들입니다. PKCS #1 v1.5 및 v2.0
BCRYPT_RSA_SIGN_ALG_HANDLE
0x00000311
RSA 서명 알고리즘에 대한 핸들입니다. 이 알고리즘은 현재 지원되지 않습니다. BCRYPT_RSA_ALG_HANDLE 알고리즘을 사용하여 RSA 서명 작업을 수행할 수 있습니다. PKCS #1 v1.5 및 v2.0.

암호 및 암호 기반 메시지 인증 코드 알고리즘 차단

상수 묘사 표준
BCRYPT_AES_CMAC_ALG_HANDLE
0x00000101
AES(Advanced Encryption Standard) 암호화 기반 CMAC(메시지 인증 코드) 대칭 암호화 알고리즘에 대한 핸들입니다. SP 800-38B
BCRYPT_AES_GMAC_ALG_HANDLE
0x00000111
AES(Advanced Encryption Standard) GMAC(Galois 메시지 인증 코드) 대칭 암호화 알고리즘에 대한 핸들입니다. SP800-38D
BCRYPT_3DES_CBC_ALG_HANDLE
0x00000141
CBC(암호 블록 체인 모드)를 사용하는 삼중 데이터 암호화 표준 알고리즘에 대한 핸들입니다. SP 800-67, SP 800-38A
BCRYPT_3DES_ECB_ALG_HANDLE
0x00000151
ECB(전자 코드북 모드)를 사용하는 삼중 데이터 암호화 표준 알고리즘에 대한 핸들입니다. SP 800-67, SP 800-38A
BCRYPT_3DES_CFB_ALG_HANDLE
0x00000161
CFB(암호 피드백 모드)를 사용하는 삼중 데이터 암호화 표준 알고리즘에 대한 핸들입니다. SP 800-67, SP 800-38A
BCRYPT_3DES_112_CBC_ALG_HANDLE
0x00000171
CBC(암호화 블록 체인 모드)를 사용하는 112비트 삼중 데이터 암호화 표준 알고리즘에 대한 핸들입니다. SP 800-67, SP 800-38A
BCRYPT_3DES_112_ECB_ALG_HANDLE
0x00000181
ECB(전자 코드북 모드)를 사용하는 112비트 삼중 데이터 암호화 표준 알고리즘에 대한 핸들입니다. SP 800-67, SP 800-38A
BCRYPT_3DES_112_CFB_ALG_HANDLE
0x00000191
CFB(암호 피드백 모드)를 사용하는 112비트 삼중 데이터 암호화 표준 알고리즘에 대한 핸들입니다. SP 800-67, SP 800-38A
BCRYPT_AES_CBC_ALG_HANDLE
0x000001A1
CBC(암호화 블록 체인 모드)를 사용하는 AES(Advanced Encryption Standard) 알고리즘에 대한 핸들입니다. FIPS 197
BCRYPT_AES_ECB_ALG_HANDLE
0x000001B1
ECB(전자 코드북 모드)를 사용하는 AES(Advanced Encryption Standard) 알고리즘에 대한 핸들입니다. FIPS 197
BCRYPT_AES_CFB_ALG_HANDLE
0x000001C1
CFB(암호 피드백 모드)를 사용하는 AES(Advanced Encryption Standard) 알고리즘에 대한 핸들입니다. FIPS 197
BCRYPT_AES_CCM_ALG_HANDLE
0x000001D1
CCM(CBC-MAC 모드)에서 Counter를 사용하는 AES(Advanced Encryption Standard) 알고리즘에 대한 핸들입니다. FIPS 197
BCRYPT_AES_GCM_ALG_HANDLE
0x000001E1
GCM(Galois 카운터 모드)을 사용하는 AES(Advanced Encryption Standard) 알고리즘에 대한 핸들입니다. FIPS 197
BCRYPT_DES_CBC_ALG_HANDLE
0x000001F1
GCM(암호화 블록 체인 모드)을 사용하는 DES(데이터 암호화 표준) 알고리즘에 대한 핸들입니다. FIPS 46-3, FIPS 81
BCRYPT_DES_ECB_ALG_HANDLE
0x00000201
ECB(전자 코드북 모드)를 사용하는 DES(데이터 암호화 표준) 알고리즘에 대한 핸들입니다. FIPS 46-3, FIPS 81
BCRYPT_DES_CFB_ALG_HANDLE
0x00000211
CFB(암호 피드백 모드)를 사용하는 DES(데이터 암호화 표준) 알고리즘에 대한 핸들입니다. FIPS 46-3, FIPS 81

발언

알고리즘 핸들이 필요한 모든 상황에서 이러한 핸들을 사용할 수 있습니다. 그러나 알고리즘 핸들이 공유되고 수정할 수 없으므로 BCryptSetProperty 에 대한 호출이 실패합니다. 또한 커널 모드에서는 IRQL=DISPATCH 이러한 핸들을 사용할 수 없습니다.