View a markdown version of this page

AWS CloudHSM 클라이언트 SDK 5용 PKCS #11 라이브러리를 사용하여 속성 검색 - AWS CloudHSM

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS CloudHSM 클라이언트 SDK 5용 PKCS #11 라이브러리를 사용하여 속성 검색

애플리케이션이 키 또는 인증서 객체에서 속성을 읽을 때 PKCS #11 라이브러리는 각 C_GetAttributeValue 호출에 대해 하나의 요청을 클러스터로 보냅니다. 템플릿의 속성 수는 요청 수를 변경하지 않습니다. 10개의 속성을 요청하는 하나의 호출은 하나의 요청을 보냅니다. 각 요청마다 하나의 속성이 10개의 요청을 보내는 10개의 호출입니다.

각 호출은 한 번의 요청으로 클러스터에서 객체의 속성을 읽은 다음 템플릿이 요청하는 값을 복사합니다. PKCS #11 라이브러리는 값을 캐싱하지 않으므로 모든 호출은 새 요청을 보냅니다.

애플리케이션이 보내는 요청 수를 줄이려면 다음 권장 사항을 따르세요.

  • 하나의 템플릿에 필요한 모든 속성을 요청합니다. 원하는 모든 속성이 포함된 단일 템플릿을 빌드하고 한 번의 C_GetAttributeValue 호출로 전달합니다. 다음 예제에서는 한 번의 호출로 키의 세 가지 속성을 읽습니다.

    CK_OBJECT_CLASS obj_class; CK_BYTE label[128]; CK_BYTE id[128]; CK_ATTRIBUTE attrs[] = { {CKA_CLASS, &obj_class, sizeof(obj_class)}, {CKA_LABEL, label, sizeof(label)}, {CKA_ID, id, sizeof(id)}, }; rv = funcs->C_GetAttributeValue(session, object, attrs, sizeof(attrs) / sizeof(CK_ATTRIBUTE));

    자세한 내용은 GitHub 웹 사이트의 키 속성 나열을 참조하세요.

  • 객체가 지원하고 읽을 수 있는 속성만 요청합니다. 템플릿이 객체에 없는 속성의 이름을 지정할 때는 해당 속성에 CK_UNAVAILABLE_INFORMATION 대해를 ulValueLen로 C_GetAttributeValue 설정하고를 반환합니다CKR_ATTRIBUTE_TYPE_INVALID. 민감한 속성은 동일한 방식으로 동작하고를 반환합니다CKR_ATTRIBUTE_SENSITIVE. 두 경우 모두 템플릿의 다른 속성은 여전히 해당 값을 수신합니다. 호출의 반환 값만 확인하는 대신 ulValueLen 각 속성을 확인합니다. 각 객체 유형이 지원하는 속성과 민감한 속성은 섹션을 참조하세요AWS CloudHSM 클라이언트 SDK 5용 PKCS #11 라이브러리 속성 테이블.

  • 언어 바인딩이 수행하는 호출 수를 확인합니다. Python 또는 Java와 같은 언어에 대한 PKCS #11 바인딩은 전송하는 C_GetAttributeValue 호출 수를 결정합니다. 일부 바인딩은 각 속성에 대해 하나의 호출을 보내고 일부는 두 개의 호출을 보냅니다. 바인딩이 여러 속성을 한 번에 읽을 수 있도록 제공하는 인터페이스를 사용하고 애플리케이션이 보내는 호출을 측정합니다.

  • 애플리케이션의 속성 값을 캐시합니다. 객체의 속성을 한 번 읽고 애플리케이션에 필요한 값을 저장합니다. 객체가 변경될 때까지 캐시된 값을 재사용할 수 있습니다. 다른 애플리케이션 또는 사용자가 객체를 수정할 수 있는 경우 수정 후 캐시를 새로 고칩니다.

  • 속성을 읽기 전에 버퍼를 할당합니다. PKCS #11 표준은 가변 길이의 값에 대한 2패스 패턴을 설명합니다. 애플리케이션은를 C_GetAttributeValue로 pValue 설정NULL_PTR하여 길이를 학습한 다음를 다시 호출하여 값을 읽습니다. 두 호출 모두 요청을 보냅니다. 예상한 값을 포함하는 버퍼 크기를 알고 있는 경우 먼저 버퍼를 할당하고 한 번의 호출로 값을 읽습니다.

    버퍼가 너무 작으면 해당 속성에 CKR_BUFFER_TOO_SMALL 대해가 반환되고 호출은 여전히 요청을 보냅니다. 예상한 값에 충분히 적합한 버퍼 크기를 선택합니다. 와 같은 템플릿을 포함하는 속성에는 CKA_WRAP_TEMPLATE여전히 2-pass 패턴이 필요합니다.

참고

이러한 권장 사항은 키 객체와 인증서 객체 모두에 적용되며 각각에 다른 제한이 적용됩니다. 인증서 스토리지에는 고정 읽기 속도 제한이 있으며 인증서 객체에 대한 각 C_GetAttributeValue 호출은 해당 객체에서 하나의 읽기 작업을 사용합니다. 키 객체의 경우 HSMs 고정된 속도가 아닌 용량에 도달하면 속성 읽기를 조절합니다. PKCS #11 라이브러리는 이러한 요청을 자동으로 재시도합니다. 더 적은 수의 요청을 보내면 애플리케이션이 두 제한 이내를 유지하는 데 도움이 됩니다. 자세한 내용은 인증서 스토리지 제한 및 HSM 스로틀링 섹션을 참조하세요.