IBM Cloud Docs
암호화 오퍼레이션: PKCS #11 API

암호화 오퍼레이션: PKCS #11 API

IBM Cloud® Hyper Protect Crypto Services 는 클라우드의 HSM(Hardware Security Module)A physical appliance that provides on-demand encryption, key management, and key storage as a managed service. 에서 실행되는 암호화 기능 세트를 제공합니다. PKCS #11 표준에 작성된 PKCS #11 라이브러리에 액세스하여 암호화 오퍼레이션을 수행할 수 있습니다. PKCS #11은 암호화 정보를 보유하고 암호화 기능을 수행하는 디바이스에 대해 Cryptoki라고 하는 API(Application Programming Interface)를 지정하는 표준입니다.

PKCS #11에 대한 자세한 정보는 PKCS #11 소개를 참조하십시오.

PKCS #11 라이브러리 설치 및 구성

PKCS #11 API 호출을 수행하려면 먼저 PKCS #11 라이브러리를 설치한 후 PKCS #11 사용자 유형을 설정 해야 합니다.

라이브러리 파일 이름에서는 pkcs11-grep11-<**platform**>.so.<**version**> 이름 지정 규칙을 사용합니다. 플랫폼은 amd64 또는 s390x이고 버전은 표준 major.minor.build 구문입니다. 라이브러리를 다운로드한 후에는 해당 라이브러리를 애플리케이션에서 액세스할 수 있는 폴더로 이동하십시오. 예를 들어 Linux®에서 애플리케이션을 실행하는 경우 라이브러리를 /usr/local/lib, /usr/local/lib64 또는 /usr/lib(으)로 이동할 수 있습니다.

PKCS #11 API에 액세스하려면 grep11client.yaml 구성 파일에서 API 엔드포인트 및 API키를 설정하여 PKCS #11 라이브러리를 구성하십시오. 그런 다음 라이브러리를 초기화하십시오. 자세한 지시사항은 PKCS #11 API로 암호화 오퍼레이션 수행을 참조하십시오.

IBM Z (s390x) 플랫폼에서 SunPKCS11 제공자를 사용하여 Java PKCS #11 애플리케이션을 실행 중인 경우, 애플리케이션을 시작할 때 최신 IBM Semeru JVM을 사용하고 -Xjit:noResumableTrapHandler Java 옵션을 지정해야 합니다. IBM Semeru 런타임 다운로드 페이지에서 아키텍처 필터 필드를 s390x 로 변경하여 IBM Semeru JVM의 최신 s390x 버전을 다운로드할 수 있습니다.

오류 처리

Hyper Protect Crypto Services 의 PKCS #11 API는 오류 처리를 위해 PKCS #11 암호화 토큰 인터페이스의 표준 메소드 를 따릅니다.

암호화 장치에서 키가 보호되는지 검증

PKCS #11 API는 IBM Cloud의 원격 키 저장소에서 저장, 업데이트 및 검색할 수 있는 생성된 키 오브젝트와 함께 작동합니다. 보호 레벨을 추가하기 위해 IBM Cloud에 저장된 키 오브젝트를 검사하여 변경이 발생하지 않는지 확인할 수도 있습니다.

생성, 파생 또는 랩핑 해제된 모든 대칭 키에는 CKA_CHECK_VALUE라는 키 속성에 저장된 디지털 지문이 포함되어 있습니다. 이 속성은 키 오브젝트 자체에 대한 3바이트 체크섬입니다.

키 오브젝트를 생성, 파생 또는 랩핑 해제한 후에는 키 오브젝트의 고유 ID와 함께 초기 체크섬 값(CKA_CHECK_VALUE 속성의 컨텐츠) 을 개별적으로 저장하는 것이 좋습니다. 그런 다음 개별적으로 저장된 체크섬을 사용하여 키가 변경되었는지 여부를 검증할 수 있습니다.

키를 검증하려면 검증할 키를 사용하여 널(0x00)바이트의 단일 블록에 대한 전자 코드북(ECB) 암호화 조작을 수행하십시오. 결과 암호의 첫 3바이트가 동일한 키에 대해 로컬로 저장된 CKA_CHECK_VALUE 키 속성의 값과 동일한 경우 키 오브젝트가 변경되지 않았음을 나타냅니다. CKA_CHECK_VALUE 키 속성은 키 값의 일부를 얻기 위해 사용할 수 없습니다.

키 체크섬의 검증과 함께 AES, DES2및 DES3 키에 대한 체크섬 값을 검색하는 방법의 예는 여기에서 찾을 수 있습니다.

PKCS #11 함수 목록

PKCS #11 표준은 Cryptoki라고 하는 API를 정의합니다. 다음 표에는 PKCS #11 Cryptoki API 함수 및 설명이 나열되어 있습니다.

모든 PKCS #11 함수가 Hyper Protect Crypto Services에 의해 구현되는 것은 아닙니다. 구현되는 함수는 표에서 Yes로 표시됩니다.

표 1. 서비스 백엔드별로 구현된 PKCS #11 기능을 설명합니다.
범주 PKCS #11 함수 구현 여부 (예 또는 아니오) 설명
일반 용도 C_Initialize Cryptoki를 초기화합니다.
일반 용도 C_Finalize 기타 Cryptoki 관련 리소스를 정리합니다.
일반 용도 C_GetInfo Cryptoki에 대한 일반 정보를 가져옵니다.
일반 용도 C_GetFunctionList Cryptoki 라이브러리 함수의 시작점을 가져옵니다.
슬롯 및 토큰 관리 C_GetSlotList 시스템에서 슬롯의 목록을 가져옵니다.
슬롯 및 토큰 관리 C_GetSlotInfo 특정 슬롯에 대한 정보를 가져옵니다.
슬롯 및 토큰 관리 C_GetTokenInfo 특정 토큰에 대한 정보를 가져옵니다.
슬롯 및 토큰 관리 C_WaitForSlotEvent 아니오 슬롯 이벤트(토큰 삽입, 제거 등)가 발생할 때까지 대기하십시오.
슬롯 및 토큰 관리 C_GetMechanismList 토큰에서 지원되는 메커니즘의 목록을 가져오십시오.
슬롯 및 토큰 관리 C_GetMechanismInfo 특정 메커니즘에 대한 정보를 가져옵니다.
슬롯 및 토큰 관리 C_InitToken 토큰을 초기화합니다.
슬롯 및 토큰 관리 C_InitPIN 일반 사용자의 PIN을 초기화합니다.
슬롯 및 토큰 관리 C_SetPIN 현재 사용자의 PIN을 수정합니다.
세션 관리 C_OpenSession 애플리케이션과 특정 토큰 간의 연결을 열고 토큰 삽입을 위해 애플리케이션 콜백을 설정합니다.
세션 관리 C_CloseSession 세션을 닫습니다.
세션 관리 C_CloseAllSessions 토큰이 있는 모든 세션을 닫습니다.
세션 관리 C_GetSessionInfo 세션에 대한 정보를 가져옵니다.
세션 관리 C_GetOperationState 세션의 암호화 오퍼레이션 상태를 가져옵니다.
세션 관리 C_SetOperationState 세션의 암호화 오퍼레이션 상태를 설정합니다.
세션 관리 C_Login 토큰에 로그인합니다.
세션 관리 C_Logout 토큰에서 로그아웃합니다.
오브젝트 관리 C_CreateObject 1 오브젝트를 작성합니다.
오브젝트 관리 C_CopyObject 오브젝트 사본을 작성합니다.
오브젝트 관리 C_DestroyObject 오브젝트를 영구 삭제합니다.
오브젝트 관리 C_GetObjectSize 오브젝트 크기(바이트)를 가져옵니다.
오브젝트 관리 C_GetAttributeValue 오브젝트의 속성 값을 가져옵니다.
오브젝트 관리 C_SetAttributeValue 오브젝트의 속성 값을 수정합니다. 부울 속성만 수정할 수 있습니다.
오브젝트 관리 C_FindObjectsInit 오브젝트 검색 오퍼레이션을 초기화합니다.
오브젝트 관리 C_FindObjects 오브젝트 검색 오퍼레이션을 계속합니다.
오브젝트 관리 C_FindObjectsFinal 오브젝트 검색 오퍼레이션을 완료합니다.
암호화 C_EncryptInit 암호화 오퍼레이션을 초기화합니다.
암호화 C_Encrypt 단일 파트의 데이터를 암호화합니다.
암호화 C_EncryptUpdate 다중 파트의 암호화 오퍼레이션을 계속합니다.
암호화 C_EncryptFinal 다중 파트의 암호화 오퍼레이션을 완료합니다.
복호화 C_DecryptInit 복호화 오퍼레이션을 초기화합니다.
복호화 C_Decrypt 단일 파트의 암호화된 데이터를 복호화합니다.
복호화 C_DecryptUpdate 다중 파트의 복호화 오퍼레이션을 계속합니다.
복호화 C_DecryptFinal 다중 파트의 복호화 오퍼레이션을 완료합니다.
메시지 요약 C_DigestInit 메시지 요약 오퍼레이션을 초기화합니다.
메시지 요약 C_Digest 단일 파트 데이터를 요약합니다. 입력 데이터의 길이가 0이 되어서는 안되며, 입력 데이터 위치를 지시하는 포인터가 널이 되어서는 안됩니다.
메시지 요약 C_DigestUpdate 다중 파트의 요약 오퍼레이션을 계속합니다. 입력 데이터의 길이가 0이 되어서는 안되며, 입력 데이터 위치를 지시하는 포인터가 널이 되어서는 안됩니다.
메시지 요약 C_DigestKey 아니오 키를 요약합니다.
메시지 요약 C_DigestFinal 다중 파트의 요약 오퍼레이션을 완료합니다.
서명 및 MACing C_SignInit 서명 오퍼레이션을 초기화합니다.
서명 및 MACing C_Sign 단일 파트의 데이터를 서명합니다.
서명 및 MACing C_SignUpdate 다중 파트의 서명 오퍼레이션을 계속합니다.
서명 및 MACing C_SignFinal 다중 파트의 서명 오퍼레이션을 완료합니다.
서명 및 MACing C_SignRecoverInit 아니오 서명 오퍼레이션을 초기화합니다. 여기서, 서명으로부터 데이터를 복구합니다.
서명 및 MACing C_SignRecover 아니오 단일 파트 데이터를 서명합니다. 여기서, 서명으로부터 데이터를 복구합니다.
서명 및 MAC 확인 C_VerifyInit 확인 오퍼레이션을 초기화합니다.
서명 및 MAC 확인 C_Verify 단일 파트 데이터의 서명을 확인합니다.
서명 및 MAC 확인 C_VerifyUpdate 다중 파트의 확인 오퍼레이션을 계속합니다.
서명 및 MAC 확인 C_VerifyFinal 다중 파트의 확인 오퍼레이션을 완료합니다.
서명 및 MAC 확인 C_VerifyRecoverInit 아니오 확인 오퍼레이션을 초기화합니다. 여기서, 서명으로부터 데이터가 복구됩니다.
서명 및 MAC 확인 C_VerifyRecover 아니오 단일 파트 데이터의 서명을 확인합니다. 여기서, 서명으로부터 데이터가 복구됩니다.
이중 목적 암호화 기능 C_DigestEncryptUpdate 동시에 다중 파트 요약 및 암호화 오퍼레이션을 계속합니다.
이중 목적 암호화 기능 C_DecryptDigestUpdate 동시에 다중 파트 복호화 및 요약 오퍼레이션을 계속합니다.
이중 목적 암호화 기능 C_SignEncryptUpdate 동시에 다중 파트 서명 및 암호화 오퍼레이션을 계속합니다.
이중 목적 암호화 기능 C_DecryptVerifyUpdate 동시에 다중 파트 복호화 및 확인 오퍼레이션을 계속합니다.
키 관리 C_GenerateKey 비밀 키를 생성합니다.
키 관리 C_GenerateKeyPair 공개 및 개인 키 쌍을 생성합니다.
키 관리 C_WrapKey 키를 랩핑(암호화)합니다.
키 관리 C_UnwrapKey 키를 랩핑 해제(복호화)합니다.
키 관리 C_DeriveKey 기본 키에서 키를 파생시킵니다.
난수 생성 C_SeedRandom 아니오 난수 생성기에 시드 자료를 추가합니다.
난수 생성 C_GenerateRandom 랜덤 데이터를 생성합니다. 랜덤 데이터의 길이가 0이 되어서는 안되며 랜덤 데이터 위치를 지시하는 포인터가 널이 되어서는 안됩니다.
병렬 기능 관리 C_GetFunctionStatus 아니오 항상 CKR_FUNCTION_NOT_PARALLEL을 리턴하는 레거시 함수입니다.
병렬 기능 관리 C_CancelFunction 아니오 항상 CKR_FUNCTION_NOT_PARALLEL을 리턴하는 레거시 함수입니다.

1: C_CreateObject 함수의 현재 구현은 비밀 키 오브젝트, 개인 키 오브젝트, 공개 키 오브젝트, 데이터 오브젝트, X.509 공개 키 인증서 오브젝트, WTLS 공개 키 인증서 오브젝트 및 X.509 속성 인증서 오브젝트를 지원합니다.

지원되는 메커니즘

메커니즘은 암호화 오퍼레이션을 구현하는 프로세스라고도 합니다. 암호화 카드의 펌웨어 레벨에 따라 다를 수 있습니다. 다음 표에서는 지원되는 메커니즘 및 해당 메커니즘이 공통 Cryptoki 함수 카테고리와 연관되는 방식을 보여줍니다.

표 2. 지원되는 PKCS #11 메커니즘을 설명합니다.
함수 그룹 지원되는 메커니즘
암호화 및 복호화 CKM_RSA_PKCS1, CKM_RSA_PKCS_OAEP1, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
서명 및 확인 CKM_RSA_PKCS1, CKM_RSA_PKCS_PSS1, CKM_RSA_X9_311, CKM_SHA1_RSA_PKCS, CKM_SHA256_RSA_PKCS, CKM_SHA224_RSA_PKCS, CKM_SHA384_RSA_PKCS, CKM_SHA512_RSA_PKCS, CKM_SHA1_RSA_PKCS_PSS, CKM_SHA224_RSA_PKCS_PSS, CKM_SHA256_RSA_PKCS_PSS, CKM_SHA384_RSA_PKCS_PSS, CKM_SHA512_RSA_PKCS_PSS, CKM_SHA1_RSA_X9_31, CKM_DSA1, CKM_DSA_SHA1, CKM_ECDSA1, CKM_ECDSA_SHA1, CKM_ECDSA_SHA224, CKM_ECDSA_SHA256, CKM_ECDSA_SHA384, CKM_ECDSA_SHA512, CKM_SHA1_HMAC, CKM_SHA256_HMAC, CKM_SHA384_HMAC, CKM_SHA512_HMAC, CKM_SHA512_224_HMAC, CKM_SHA512_256_HMAC, CKM_IBM_ED25519_SHA512, CKM_IBM_ED448_SHA3, CKM_IBM_DI리튬2
요약. CKM_SHA_1, CKM_SHA224, CKM_SHA256, CKM_SHA384, CKM_SHA512, CKM_SHA512_224, CKM_SHA512_256
키를 생성하거나 키 쌍을 생성합니다. CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_RSA_X9_31_KEY_PAIR_GEN, CKM_DSA_KEY_PAIR_GEN, CKM_DSA_PARAMETER_GEN, CKM_EC_KEY_PAIR_GEN (CKM_ECDSA_KEY_PAIR_GEN), CKM_DH_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_PARAMETER_GEN, CKM_GENERIC_SECRET_KEY_GEN, CKM_AES_KEY_GEN, CKM_DES2_KEY_GEN, CKM_DES3_KEY_GEN, CKM_IBM_DILITHIUM
랩핑 및 랩핑 해제. CKM_RSA_PKCS, CKM_RSA_PKCS_OAEP, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
파생. CKM_ECDH1_DERIVE, CKM_DH_PKCS_DERIVE, CKM_DES3_ECB_ENCRYPT_DATA, CKM_SHA1_KEY_DERIVATION, CKM_SHA224_KEY_DERIVATION, CKM_SHA256_KEY_DERIVATION, CKM_SHA384_KEY_DERIVATION, CKM_SHA512_KEY_DERIVATION, CKM_IBM_BTC_DERIVE

1: 이 메커니즘에서는 C_EncryptUpdate, C_DecryptUpdateC_DigestUpdate과(와) 같이 업데이트 Cryptotoki 함수를 활용할 수 없는 단일 파트 조작만 지원됩니다.

2: 이 메커니즘은 IBM 4768 암호화 카드에서 지원되지 않으며 C_SignUpdateC_VerifyUpdate 조작에 사용할 수 없습니다.

지원되는 속성 및 키 유형

PKCS #11 속성은 오브젝트가 사용되고 액세스될 수 있는 방법을 설정하는 오브젝트 특성을 정의합니다. 다음 표는 지원되는 속성 및 지원되는 여러 가지 키 유형과의 관계를 보여줍니다.

표 3. 지원되는 속성 및 키 유형
속성 설명 지원되는 키 유형
KA_BASE DSA 도메인 매개변수이며 C_CreateObject에 사용됩니다. 기본 g. DSA 개인용 키, DSA 공용 키
CA 인증 범주 저장된 인증서가 토큰 ("토큰 사용자"), CA 인증서 ("권한") 에서 해당 개인 키를 사용할 수 있는 사용자 인증서인지 여부를 표시하는 데 사용됩니다.또는 다른 엔드-엔티티 인증서 ("기타 엔티티") 를 포함할 수 있습니다. 기본값은 CK_CERTIFICATE_CATEGORY_UNSPECIFIED입니다. 해당사항 없음
스택 인증_유형 인증서 오브젝트가 C_CreateObject로 작성될 때 지정되어야 합니다. 인증서 유형은 X.509 공개 키, WTLS 공개 키 인증서 및 X.509 속성 인증서입니다. 해당사항 없음
CKA_CHECK_VALUE 키 또는 인증서의 체크섬입니다. AES 키, DES 키
CKA_CLASS 오브젝트 클래스(유형)이며 모든 오브젝트에 공통입니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
스택 계수 C_CreatObject에 사용됩니다. RSA 개인 키
CKA_복사 가능 CKA_TRUE로 설정되면 C_CopyObject를 사용하여 오브젝트를 복사할 수 있습니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_DECRYPT 키가 복호화를 지원하는 경우에는 CK_TRUE입니다. EC 개인 키, RSA 개인 키, DH 개인 키, DSA 개인 키, AES 키, DES 키, 일반 키
CKA_DERIVE 키가 키 파생을 지원하는 경우에는 CK_TRUE입니다(기타 키는 이 키에서 파생될 수 있음). 기본값은 CK_FALSE입니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_EC_PARAMS(CKA_ECDSA_PARAMS) ANSI X9.62 매개변수 값의 DER 인코딩입니다. EC 개인 키, EC 공개 키
CKA_EC_POINT ANSI X9.62 ECPoint 값 Q의 DER 인코딩입니다. EC 공개 키
CKA_ENCRYPT 키가 암호화를 지원하는 경우에는 CK_TRUE입니다. EC 공개 키, RSA 공개 키, DH 공개 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_END_DATE 인증서 또는 키의 종료 날짜입니다. 기본값은 비어 있습니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_EXTRACTABLE 키가 추출 가능하고 랩핑될 수 있는 경우에는 CK_TRUE입니다. EC 개인 키, RSA 개인 키, DH 개인 키, DSA 개인 키, AES 키, DES 키, 일반 키
CKA_EXPONENT_1 C_CreateObject에 사용합니다. 비밀 지수 d 모듈로 q-1. RSA 개인 키
CKA_EXPONENT_2 C_CreateObject에 사용합니다. CRT 계수 q-1 mod p. RSA 개인 키
발행_공용 키의 스택 해시 인증서에 대한 발행자 공개 키의 해시입니다. 기본값은 비어 있습니다. 해당사항 없음
공개 키의 스택 해시 인증서에 대한 주제 공개 키의 해시입니다. 기본값은 비어 있습니다. 해당사항 없음
CKA_IBM_PQC_PARAMS 포스트 양자 암호화 메커니즘의 매개변수를 지원합니다. Dilithium 메커니즘 CKM_IBM_DILITHIUM의 경우 사용할 Dilithium 알고리즘의 강도를 나타내는 마샬링된 오브젝트 식별자(OID)를 제공합니다. 현재 Di리튬 4라운드 2 의 강도만 지원됩니다. Dilithium 키
CKA_IBM_USE_AS_DATA 오브젝트가 CK_TRUE일 때 해싱 또는 키 파생 조작에 사용됩니다. EC 개인 키, EC 공개 키
CKA_ID 공개 또는 개인 키 쌍이나 키의 키 ID입니다. 기본값은 비어 있습니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
발행자 스택 인증서 발행자 이름의 DER 인코딩입니다. 기본값은 비어 있습니다. 해당사항 없음
CKA_JAVA_MIDP_SECURITY_DOMAIN Java 인증서에 대한 MIDP 보안 도메인입니다. 기본값은 CK_SECURITY_DOMAIN_UNSPECIFIED입니다. 해당사항 없음
CKA_KEY_TYPE 키 유형입니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_LABEL 오브젝트에 대한 설명입니다. 기본값은 비어 있습니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_LOCAL 키가 C_GenerateKey 또는 C_GenerateKeyPair 호출을 사용하여 로컬로(토큰에) 생성되거나 C_CopyObject 호출을 사용하여 CKA_LOCAL 속성이 CK_TRUE로 설정된 키의 사본으로 작성된 경우에만 CK_TRUE입니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
수정 가능한 스택 오브젝트를 수정할 수 있는 경우 CK_TRUE로 설정하십시오. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_MODULUS 모듈러스 n입니다. RSA 개인 키
CKA_MODULUS_BITS 모듈러스 n의 길이(비트)입니다. RSA 공개 키
CKA_NAME_HASH_ALGORITHM 인증서에 대한 주제 및 발행자 공개 키의 해시를 계산하는 데 사용되는 메커니즘을 정의합니다. 기본값은 SHA-1입니다. 해당사항 없음
스택 프라임 DSA 도메인 매개변수이며 C_CreateObject에 사용됩니다. 프라임 p (64비트의 단계에서 512-2048비트). DSA 개인용 키, DSA 공용 키
CKA_PRIME_1 C_CreateObject에 사용됩니다. 프라임 q. RSA 개인 키
CKA_PRIME_2 C_CreateObject에 사용됩니다. 비밀 지수 d 모듈로 p-1. RSA 개인 키
CKA_PRIVATE 오브젝트가 개인용 오브젝트인 경우에는 CK_TRUE이고, 오브젝트가 공용 오브젝트인 경우에는 CK_FALSE입니다. 기본값은 토큰에 따라 다르며 오브젝트의 다른 속성 값에 따라 달라질 수 있습니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_PRIVATE_EXPONENT C_CreateObject에 사용됩니다. 프라임 p. RSA 개인 키
CKA_PUBLIC_EXPONENT 공개 지수 e입니다. RSA 개인 키, RSA 공개 키
CKA_PUBLIC_KEY_INFO 공개 키에 대한 SubjectPublicKeyInfo 의 DER 인코딩입니다. 값은 기본 공개 키 데이터에서 파생되며 기본적으로 비어 있습니다. RSA 공개 키, EC 공개 키, Di리튬 공개 키
CKA_SENSITIVE 키가 민감한 경우에는 CK_TRUE입니다. EC 개인 키, RSA 개인 키, DH 개인 키, DSA 개인 키, AES 키, DES 키, 일반 키
스택 일련 번호 인증서 일련 번호의 DER 인코딩입니다. 기본값은 비어 있습니다. 해당사항 없음
CKA_SIGN 키가 서명을 지원하는 경우에는 CK_TRUE입니다. 여기서, 서명은 데이터에 대한 부록입니다. EC 개인 키, RSA 개인 키, DH 개인 키, DSA 개인 키, AES 키, DES 키, 일반 키
CKA_START_DATE 인증서 또는 키의 시작 날짜입니다. 기본값은 비어 있습니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_SUBJECT 인증 또는 키 주제 이름의 DER 인코딩입니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키
서브프라임 DSA 도메인 매개변수이며 C_CreateObject에 사용됩니다. Subprime q (160 bits for p <= 1024 bits, 224 bits, or 256 bits for p > 1024 bits). DSA 개인용 키, DSA 공용 키
CKA_TOKEN 오브젝트가 토큰 오브젝트인 경우에는 CK_TRUE이고, 오브젝트가 세션 오브젝트인 경우에는 CK_FALSE입니다. EC 개인 키, EC 공개 키, RSA 개인 키, RSA 공개 키, DH 개인 키, DH 공개 키, DSA 개인 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_TRUSTED 작성된 애플리케이션에 대해 인증서 또는 키를 신뢰할 수 있습니다. EC 공개 키, RSA 공개 키, DH 공개 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_UNWRAP 키가 랩핑 해제를 지원하는 경우에는 CK_TRUE입니다(다른 키를 랩핑 해제하는 데 사용될 수 있음). EC 개인 키, RSA 개인 키, DH 개인 키, DSA 개인 키, AES 키, DES 키, 일반 키
KA_URL 전체 인증서를 얻을 수 있는 URL입니다. 기본값은 비어 있습니다. 해당사항 없음
CKA_값 C_CreateObject사용 시 인코딩된 인증서 바이트 또는 키 바이트입니다. EC 개인용 키, DSA 공용 키, DSA 개인용 키, ED25519 개인용 키, ED448 개인용 키, AES키, DES 키
CKA_VALUE_LEN 키 값의 길이(바이트)입니다. AES 키
CKA_VERIFY 키가 확인을 지원하는 경우에는 CK_TRUE입니다. 여기서, 서명은 데이터에 대한 부록입니다. EC 공개 키, RSA 공개 키, DH 공개 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_WRAP 키가 랩핑을 지원하는 경우에는 CK_TRUE입니다(다른 키를 랩핑하는 데 사용될 수 있음). EC 공개 키, RSA 공개 키, DH 공개 키, DSA 공개 키, AES 키, DES 키, 일반 키
CKA_WRAP_WITH_TRUSTED CKA_TRUSTED가 CK_TRUE로 설정된 랩핑 키로만 키를 랩핑될 수 있는 경우에는 CK_TRUE입니다. 기본값은 CK_FALSE입니다. EC 개인 키, RSA 개인 키, DH 개인 키, DSA 개인 키, AES 키, DES 키, 일반 키
애플리케이션 스택 오브젝트를 관리하는 애플리케이션에 대한 설명 (기본값은 비어 있음) 해당사항 없음
스택 오브젝트 ID DER-데이터 오브젝트 유형을 표시하는 오브젝트 ID의 인코딩 (기본값은 비어 있음) 해당사항 없음
소유자 선택 DER 형식으로 인코딩된 속성 인증서의 소유자 필드입니다. ASN.1 구문 및 인코딩이 다르므로 CKC_X_509 인증서에 포함된 CKA_SUBJECT 속성과는 다릅니다. 해당사항 없음
액세스 발행자 스택 DER 형식으로 인코딩된 속성 인증서의 발행자 필드입니다(기본적으로 비어 있음). 이는 CKC_X_509 인증서에 포함된 CKA_ISSUER 속성과 구별됩니다. ASN.1 구문과 인코딩이 다르기 때문입니다. (기본적으로 비어 있음) 해당사항 없음
스택 속성 유형 인증서에 포함된 속성 유형에 해당하는 BER 형식으로 인코딩된 오브젝트 ID 값의 시퀀스입니다. 이 필드가 있는 경우 애플리케이션이 인증서 자체를 페치하고 구문 분석하지 않고 특정 속성 인증서를 검색할 수 있는 기회를 제공합니다. (기본적으로 비어 있음) 해당사항 없음

지원되는 곡선

특정한 메커니즘의 경우 PKCS #11 라이브러리에서 제한적인 유형의 곡선이 지원됩니다. 다음 표에는 다양한 메커니즘에 대해 지원되는 곡선 이름이 나열되어 있습니다. 곡선 이름의 숫자는 지원되는 기본 비트 수를 의미합니다.

타원 곡선(EC) 키를 생성하기 위해 지원되는 곡선

CKM_EC_KEY_PAIR_GEN 함수를 호출하여 타원 곡선(EC) 키를 생성하는 경우 C_GenerateKeyPair 매커니즘이 지원됩니다. CKA_EC_PARAMS를 사용하여 곡선 이름 매개변수를 오브젝트 ID(OID)로 지정해야 합니다. OID 저장소에서 곡선 이름을 검색하여 OID를 가져올 수 있습니다.

표 4. EC키 생성을 위해 지원되는 곡선 유형
PKCS #11 메커니즘 지원되는 곡선 유형 지원되는 곡선 이름
CKM_EC_KEY_PAIR_GEN NIST(National Institute of Standards and Technology)곡선
  • P-192(secp192r1 및 prime192v1이라고도 함)
  • P-224(secp224r1이라고도 함)
  • P-256(secp256r1 및 prime256v1 이라고도 함)
  • P-384(secp384r1이라고도 함).
  • P-521(secp521r이라고도 함)
CKM_EC_KEY_PAIR_GEN 일반 브레인 풀(BP)곡선
  • BP-160R(brainpoolP160r1이라고도 함)
  • BP-192R(brainpoolP192r1이라고도 함)
  • BP-224R(brainpoolP224r1이라고도 함)
  • BP-256R(brainpoolP256r1이라고도 함)
  • BP-320R(brainpoolP320r1이라고도 함)
  • BP-384R(brainpoolP384r1이라고도 함)
  • BP-512R(brainpoolP512r1이라고도 함)
CKM_EC_KEY_PAIR_GEN 트위스트 브레인 풀(BP)곡선
  • BP-160T(brainpoolP160t1이라고도 함)
  • BP-192T(brainpoolP192t1이라고도 함)
  • BP-224T(brainpoolP224t1이라고도 함)
  • BP-256T(brainpoolP256t1이라도 함)
  • BP-320T(brainpoolP320t1이라고도 함)
  • BP-384T(brainpoolP384t1이라고도 함)
  • BP-512T(brainpoolP512t1이라고도 함)
CKM_EC_KEY_PAIR_GEN 효율적인 암호화(SEC)곡선에 대한 표준
  • secp256k1
CKM_EC_KEY_PAIR_GEN Edwards 곡선
  • Ed25519
CKM_EC_KEY_PAIR_GEN Edwards 곡선
  • Ed448

디지털 자산 암호화 및 디지털 서명 생성을 위해 지원되는 곡선

디지털 자산 및 디지털 서명과 관련된 메커니즘에 대해 다음 곡선이 지원됩니다.

표 5. 디지털 자산 및 서명을 암호화하기 위해 지원되는 곡선 유형
표준 또는 스킴 PKCS #11 메커니즘 지원되는 곡선 유형 지원되는 곡선 이름
BIP32/BIP44 CKM_IBM_BTC_DERIVE 효율적인 암호화(SEC)곡선에 대한 표준
  • secp256k1
SLIP10 CKM_IBM_BTC_DERIVE NIST(National Institute of Standards and Technology)곡선
  • P-256( secp256r1 및 prime256v1 이라고도 함)
SLIP10 CKM_IBM_BTC_DERIVE 효율적인 암호화(SEC)곡선에 대한 표준
  • secp256k1
SLIP10 CKM_IBM_BTC_DERIVE Edwards 곡선
  • Ed25519
EdDSA CKM_IBM_ED25519_SHA512 Edwards 곡선
  • Ed25519
Schnorr CKM_IBM_ECDSA_기타 효율적인 암호화(SEC)곡선에 대한 표준
  • secp256k1
Schnorr CKM_IBM_ECDSA_기타 NIST(National Institute of Standards and Technology)곡선
  • P-256( secp256r1 및 prime256v1 이라고도 함)
Schnorr CKM_IBM_ECDSA_기타 일반 브레인 풀(BP)곡선
  • BP-256R( brainpoolP256r1 이라고도 함)
Schnorr CKM_IBM_ECDSA_기타 트위스트 브레인 풀(BP)곡선
  • BP-256T( brainpoolP256t1 이라고도 함)
Schnorr ECSG_IBM_ECSDSA_S256
  • secp256r1
  • secp256k1
  • BP-256R( brainpoolP256r1 이라고도 함)
  • BP-256T( brainpoolP256t1 이라고도 함)
슈노르-질리카 Ecsg_ibm_ecsdsa_compr_multi
  • secp256r1
  • secp256k1
  • BP-256R( brainpoolP256r1 이라고도 함)
  • BP-256T( brainpoolP256t1 이라고도 함)

표준 PKCS #11 API 참조

PKCS #11 표준 문서를 검토하려면 다음을 참조하십시오.