2011-03-11 1 views
0

다른 컴퓨터에서 암호화 된 세션 유형 키 - 블롭을 가져올 때 CryptImportKey 함수가 hPubKey 0 (해독 키 핸들)을 허용하는 이유를 설명 할 수 있습니까?CryptoAPI의 CryptImportKey가 0의 hPubKey를 받아 들여 암호화 된 세션 키를 가져옵니다.

는 # 1

PC 을 : 로컬 키 용기 내의 키 교환 키 쌍 (공개/비공개) (AT_KEYEXCHANGE/w CryptGenKey)를 생성은, 다음 PUBLICKEYBLOB로 공용 부 수출

환경이있다 PC# 2로 보냅니다.

PC# 2 : PC# 1에서 공개 키 - 블롭을 가져 와서 로컬 키 - 컨테이너로 가져옵니다. 동일한 로컬 키 컨테이너에 세션 키를 만듭니다. 클라이언트의 키 블로 브에서 가져온 공개 키 (세션 키를 암호화하는 데 사용됨)를 사용하여 로컬 키 컨테이너 세션 키를 SIMPLEBLOB (CryptExportKey)로 내 보냅니다.

PC# 1 : 로컬 키 컨테이너 hProv, 키 블록 버퍼 포인터 및 길이, hPubKey 및 플래그에 0 (영), HCRYPTKEY 핸들에 대한 포인터.

위의 작업을 수행 한 후에 올바른 핸들을 얻었고 돌아온 핸들을 사용하여 CryptEncryptCryptDecrypt을 호출 할 수 있습니다. 예, CryptImportKey에 PC# 1에서 위의 첫 번째 단계에서 생성 된 키 교환 키 쌍의 핸들을 지정하면 잘 작동합니다. 나는 왜 hPubKey가 작동하는지 이해하지 못한다. 마치 CryptoAPI가 개인 키가 데이터를 암호화하는 것을 "아는"것처럼 보인다.

감사합니다.

답변

0

내가 생각할 수있는 유일한 점은 세션 (컨텍스트가 있으므로 개인 키를 알고 있음) 내에서 또는 데이터를 실제로 암호화하지 않는다는 것입니다. 모듈러스를 고유 키로 사용하여 개인 키를 조회하는 것은 실제로 가능하지만 사용자에게 알리지 않고 이러한 메서드를 사용한다는 것을 짐작할 수 없습니다.

추석 죄송합니다. 질문에 직접 (아직) 답변을 드릴 수 없으므로 오랜 시간의 이유로 게시했습니다.