다음을 통해 공유


기본 공급자 키 BLOB

기본 공급자 및 확장 공급자는 동일한 키 BLOB사용합니다.

공개 키 BLOB

공개 키 BLOBpublicKEYBLOB 형식은 CSP(암호화 서비스 공급자) 외부에공개 키를 저장하는 데 사용됩니다. 기본 공급자 공개 키 BLOB의 형식은 다음과 같습니다.

PUBLICKEYSTRUC  publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];

다음 표에서는 각 공개 키 구성 요소에 대해 설명합니다. 모든 값은 little-endian 형식입니다.

묘사
계수 공개 키 모듈러스 데이터는 RSAPUBKEY 구조 바로 뒤의 위치에 있습니다. 이 데이터의 크기는 공개 키의 크기에 따라 달라집니다. 바이트 수는 RSAPUBKEY bitlen 필드의 값을 8로 나누어 확인할 수 있습니다.
publickeystruc PUBLICKEYSTRUC 구조체입니다.
rsapubkey RSAPUBKEY 구조체입니다. 매직 멤버는 0x31415352 설정해야 합니다. 이 16진수 값은 RSA1의 ASCII 인코딩입니다.

 

메모

공개 키 BLOB은 암호화되지 않습니다. 공용 키는 일반 텍스트 형식으로 포함되어 있습니다.

 

프라이빗 키 BLOB

privateKEYBLOB 형식인 프라이빗 키 BLOBCSP 외부에프라이빗 키를 저장하는 데 사용됩니다. 기본 공급자 프라이빗 키 BLOB의 형식은 다음과 같습니다.

PUBLICKEYSTRUC  publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
BYTE prime1[rsapubkey.bitlen/16];
BYTE prime2[rsapubkey.bitlen/16];
BYTE exponent1[rsapubkey.bitlen/16];
BYTE exponent2[rsapubkey.bitlen/16];
BYTE coefficient[rsapubkey.bitlen/16];
BYTE privateExponent[rsapubkey.bitlen/8];

다음 표에서는 프라이빗 키 BLOB 구성 요소에 대해 설명합니다.

메모

이러한 필드는 PKCS(공개 키 암호화 표준) #1섹션 7.2에 설명된 필드에 해당합니다.

 

묘사
계수 계수. 이 값의 숫자 값은 (q의 역) mod p입니다.
exponent1 지수 1. 숫자 값은 d mod(p – 1)입니다.
exponent2 지수 2. 숫자 값은 d mod(q – 1)입니다.
계수 모듈러스입니다. 이 값은 Prime1×Prime2 값이며 종종 n으로 알려져 있습니다.
prime1 소수 1, 종종 p로 알려진.
prime2 소수 2, 종종 q로 알려진.
privateExponent 프라이빗 지수(d라고도 함)
publickeystruc PUBLICKEYSTRUC 구조체입니다.
rsapubkey RSAPUBKEY 구조체입니다. 매직 멤버는 0x32415352 설정해야 합니다. 이 16진수 값은 RSA2의 ASCII 인코딩입니다.

 

메모

프라이빗 키 BLOB은 암호화되지 않습니다. 일반 텍스트 형식의 프라이빗 키가 포함됩니다.

 

CryptExportKey호출할 때 개발자는 키를 암호화할지 여부를 선택할 수 있습니다. hExpKey 매개 변수에 세션 키에 대한 유효한 핸들이 포함된 경우 PRIVATEKEYBLOB 암호화됩니다. BLOB의 PUBLICKEYSTRUC 부분을 제외한 모든 항목이 암호화됩니다.

메모

암호화 알고리즘 및 암호화 키 매개 변수는 프라이빗 키 BLOB과 함께 저장되지 않습니다. 애플리케이션은 이 정보를 관리하고 저장해야 합니다. hExpKey대해 0이 전달되면 프라이빗 키가 암호화 없이 내보내집니다.

 

주의

암호화 없이 프라이빗 키를 내보내는 것은 무단 엔터티의 가로채기 및 사용에 취약하기 때문에 위험합니다.

 

단순 키 BLOB

SIMPLEBLOB 형식인 단순 키 BLOBCSP 외부에 세션 키를 저장하고 전송하는 데 사용됩니다. 기본 공급자 단순 키 BLOB은 항상 키 교환 공개 키사용하여 암호화됩니다. SIMPLEBLOBpbData 멤버는 다음 형식의 바이트 시퀀스입니다.

PUBLICKEYSTRUC  publickeystruc;
ALG_ID algid;
BYTE encryptedkey[rsapubkey.bitlen/8];

다음 표에서는 SIMPLEBLOBpbData 멤버의 각 구성 요소에 대해 설명합니다.

묘사
algid 세션 키 데이터를 암호화하는 데 사용되는 암호화 알고리즘을 지정하는 ALG_ID 구조체입니다. 일반적으로 CALG_RSA_KEYX 값이 있습니다. 이는 세션 키 데이터가 RSA 공개 키 알고리즘사용하여 키 교환 공개 키로 암호화되었음을 나타냅니다.
encryptedkey 암호화된 세션 키 데이터를 PKCS #1 형식의 2 암호화 블록 형식으로 나타내는 BYTE 시퀀스입니다. 이 데이터 형식에 대한 자세한 내용은 RSA Data Security, Inc.에서 게시한 PKCS(공개 키 암호화 표준) #1을 참조하세요. 이 데이터는 항상 공개 키의 모듈러스와 같은 크기입니다. 예를 들어 Microsoft RSA 기본 공급자가 생성한 공개 키는 길이가 512비트(64바이트)일 수 있으므로 암호화된 세션 키 데이터도 항상 512비트(64바이트)입니다.
publickeystruc PUBLICKEYSTRUC 구조체입니다.