2014-02-14 6 views
0

나는 PKCS # 11 라이브러리를 사용하는 데있어 매우 익숙하기 때문에 더 많은 경험을 가진 사람이 일을 정리할 수 있습니다. (PC에 생성 된) HSM 기존의 RSA 공개 키공용 RSA 키를 HSM에 업로드하는 방법 (PKCS # 11 라이브러리 사용)?

  1. 업로드
  2. 나중에 이것이 HSM에 생성 된 대칭 키를 래핑하는 키를 업로드 사용

    나는 다음을 수행합니다.

대칭 키를 생성하는 방법은 알고 있지만 기존 RSA 공개 키를 업로드하는 방법은 알고 있습니까?

PKCS # 11 라이브러리를 사용해도 가능합니까?

Wrap a secret key with a public key using PKCS#11에 비슷한 질문이있는 것 같지만 HSM에서 생성 된 RSA 키 쌍을 사용합니다. RSA 공개 키를 직접 HSM에 업로드해야합니다.

+0

물론 가능합니다. "공용 키"유형의 새 오브젝트를 작성합니다. 세부 정보는 사용하려는 API에 따라 다릅니다. –

+0

하지만 임의의 HSM이 공용 키 가져 오기를 허용한다고 명시 할 수 있습니까? – divanov

+0

API는 PKCS # 11입니다. 이 API를 사용하여 공개 키를 만드는 방법은 무엇입니까? GenerateKey? – JonasJnz

답변

0

PKCS # 11의 C_CreateObject 기능을 사용하여 공개 키를 HSM으로 가져올 수 있습니다. 이것은

RSA PKCS#11 기능에서 찾을 수 있습니다 -> 개체 관리 기능 -> C_CreateObject

부하 공개 키의 예도 있습니다. 그러나 cryptoki 라이브러리에서 공개 키를로드하려면 토큰의 을 지원해야합니다.

CK_SESSION_HANDLE hSession; 
CK_OBJECT_HANDLE hKey; 
CK_OBJECT_CLASS keyClass = CKO_PUBLIC_KEY; 
CK_KEY_TYPE keyType = CKK_RSA; 
CK_BYTE modulus[] = {... }; 
CK_BYTE exponent[] = {... }; 
CK_ATTRIBUTE keyTemplate[] = { 
    {CKA_CLASS, &keyClass, sizeof(keyClass)} 
    , 
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)} 
    , 
    {CKA_WRAP, &true, sizeof(true)} 
    , 
    {CKA_MODULUS, modulus, sizeof(modulus)} 
    , 
    {CKA_PUBLIC_EXPONENT, exponent, sizeof(exponent)} 
}; 

CK_RV rv; 

/* Create an RSA public key object */ 
rv = C_CreateObject(hSession, &keyTemplate, 5, &hKey); 
if (rv == CKR_OK) { 
. 
. 
} 
관련 문제