다음을 통해 공유


RSA/Schannel 키

RSA/Schannel 키 생성 및 검색

Rsa/Schannel 키는 CryptGenKey 함수를 호출하여 생성할 수 있습니다. CryptGenKey를 호출하려면 Algid 매개 변수에 전달된 AT_KEYEXCHANGE 알고리즘 식별자가 필요합니다.

RSA/Schannel 퍼블릭/프라이빗 키 쌍을 생성하려면

  1. CryptAcquireContext 함수를 호출하여 Microsoft RSA/Schannel 암호화 공급자에 대한 핸들을 가져옵니다.
  2. CryptGenKey 함수를 호출하여 키를 생성합니다. algid 매개 변수에 대해 AT_KEYEXCHANGE 전달해야 하며 dwFlags 매개 변수의 상위 16비트 를 원하는 키 크기(512비트)로 설정해야 합니다. HCRYPTKEY 구조체 핸들은 hKey 매개 변수에 반환됩니다.

이전에 생성된 RSA/Schannel 사용자 키에 대한 포인터를 검색하려면

  1. CryptAcquireContext 함수를 호출하여 Microsoft RSA/Schannel 암호화 공급자에 대한 핸들을 가져옵니다.
  2. dwKeySpec 매개 변수를 AT_KEYEXCHANGE 설정하여 CryptGetUserKey 함수를 호출합니다.

RSA/Schannel 키 내보내기

마스터 키를 간단한 키 BLOB 구조로 내보낼 수 있습니다. 단순 키 BLOB에 설명된 대로 일반 RC4 또는 DES(데이터 암호화 표준) 대량 암호화 키의 내보내기와 동일한 방식으로 구현해야 합니다. PUBLICKEYSTRUC 구조체의 aiKeyAlg 멤버는 master 키의 알고리즘 식별자(CALG_PCT1_MASTER, CALG_SSL2_MASTER, CALG_SSL3_MASTER 또는 CALG_TLS1_MASTER)로 설정됩니다.

CPExportKey 함수가 SSL2 master 키를 내보내고 CRYPT_SSL2_FALLBACK 플래그가 설정된 경우 버전 롤백 공격을 방지하려면 암호화 블록 패딩의 처음 8바이트를 임의 데이터가 아닌 0x03 설정합니다.

CPExportKey 함수의 dwFlags 매개 변수에 CRYPT_DESTROYKEY 상수를 지정하면 CSP는 키를 내보낸 후 키 또는 키 핸들을 삭제합니다. 이 플래그는 불투명 BLOB에서만 사용하기 위한 것입니다.