문제

나는 Crytoapi를 이해하려고 MSDN을보고 있습니다. 아래는 일이 어떻게 작동하는지에 대한 몇 가지 질문과 추측입니다. 내 추측에 대한 답변이나 확인 또는 반박은 대단히 감사합니다.

내가 찾은 메모에 따르면 http://msdn.microsoft.com/en-us/library/ms867086.aspx, CSP는 세션간에 공개 개인 키 쌍을 유지합니다.

* Does that mean they are kept indefinitely? If so, whatever signature or exchange key pairs are extant when the CSP is closed remain. 
* Of what value are these containers and any key pairs they contain?  I guess they could be used to sign things without obtaining a handle to a key pair. 
* Is there any way to get a handle to one of the key pairs?

키 컨테이너에 포함 할 수있는 것처럼 보입니다.

* 1 signature key pair
* 1 key exchange key pair
* any number of PUBLIC keys of either signature or key_exchange type
* any number of session keys

이 올바른지? 컨테이너가 닫힐 때 비 페어 키가 파괴됩니까?

키 컨테이너를 만들/명명하는 일반적인 방법은 무엇입니까? 다른 애플리케이션 컨테이너를 어떻게 밟지 않도록 하는가? 공개/개인 키가있는 컨테이너가 필요하므로 cryptacquirecontext의 비고 섹션에 언급 된 임시 컨테이너가 적용되지 않습니다. 일부 고정 부분과 시퀀스 번호로 구성된 생성 이름을 사용할 수 있습니다. 완료되면 컨테이너를 삭제할 수 있습니다.

CryptSignhash는 서명 또는 키 교환 개인 키가 해시에 서명하는 데 사용되는 것을 지정합니다. 이것은 CryptSignkey가 적절한 alg_id parmeter (calg_rsa_keyx 또는 calg_rsa_sign)로 cryptsygen이 만든 개인 키를 찾을 것임을 의미합니다.

키를 내보내면 키 블로브에 어떤 종류의 키인지 알려주는 정보가 포함되어 있습니까?

공공 키 블로브를 내보내고 다른 환경으로 전송하는 경우. 서명을 확인하기 위해 사용하기 전에 새로운 환경에서 해당 블로브를 가져와야합니까? cryptverifysignature는 키에 대한 핸들이 필요하므로 먼저 가져와야합니다. Public Keyblob 가져 오기가 현존하는 공개/개인 키 쌍의 공개 키를 대체합니까? 나는 그렇지 않다고 가정한다.

도움이 되었습니까?

해결책

그것은 많은 질문이었습니다. 대답하려고하겠습니다.

CSP는 세션간에 공개 개인 키 쌍을 유지합니다. 그것은 그들이 무기한으로 유지된다는 것을 의미합니까?

예, crypt_deletekeyset 플래그로 cryptacquirecontext를 호출하여 명시 적으로 삭제 될 때까지.

이 컨테이너와 키 쌍은 어떤 가치가 포함되어 있습니까?

재사용 할 수있는 지속적인 키입니다. 개인 키에 대한 인증서를 받으면 개인 키를 유지하려면 개인 키를 피할 수있는 경우 개인 키를 내보내지 않으려 고합니다. CSP는 최대보다 키를 훨씬 더 잘 보호 할 수 있습니다.

키 쌍 중 하나를 처리 할 수있는 방법이 있습니까?

cryptacquirecontext 다음 cryptgetUserkey.

키 컨테이너에 1 개의 서명 키 쌍, 1 개의 키 교환 키 쌍, 서명 또는 key_exchange 유형의 공개 키, 여러 세션 키가 포함 된 것처럼 보입니다. 이 올바른지?

예 그리고 아니오. 가져온 공개 키와 세션 키는 특정 키 컨테이너에 논리적이지 않습니다.

컨테이너가 닫힐 때 비 페어 키가 파괴됩니까?

예.

키 컨테이너를 만들/명명하는 일반적인 방법은 무엇입니까? 다른 애플리케이션 컨테이너를 어떻게 밟지 않도록 하는가?

대부분의 응용 프로그램은 Guid를 사용합니다.

즉, CryptSignkey는 적절한 alg_id parmeter (calg_rsa_keyx 또는 calg_rsa_sign 값)로 cryptkeygen이 만든 개인 키를 찾을 수 있습니다.

예.

키를 내보내면 키 블로브에 어떤 종류의 키인지 알려주는 정보가 포함되어 있습니까?

선택한 블로브 유형에 따라 다르지만 대부분의 키 블로브는 Blobheader 핵심 유형이 포함되어 있습니다.

공공 키 블로브를 내보내고 다른 환경으로 전송하는 경우. 서명을 확인하기 위해 사용하기 전에 새로운 환경에서 해당 블로브를 가져와야합니까?

예.

Public Keyblob 가져 오기가 현존하는 공개/개인 키 쌍의 공개 키를 대체합니까?

아니.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top