암호화 오퍼레이션: 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
로 표시됩니다.
범주 | 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 함수 카테고리와 연관되는 방식을 보여줍니다.
함수 그룹 | 지원되는 메커니즘 |
---|---|
암호화 및 복호화 | 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_DecryptUpdate
및 C_DigestUpdate
과(와) 같이 업데이트 Cryptotoki 함수를 활용할 수 없는 단일 파트 조작만 지원됩니다.
2: 이 메커니즘은 IBM 4768 암호화 카드에서 지원되지 않으며 C_SignUpdate
및 C_VerifyUpdate
조작에 사용할 수 없습니다.
지원되는 속성 및 키 유형
PKCS #11 속성은 오브젝트가 사용되고 액세스될 수 있는 방법을 설정하는 오브젝트 특성을 정의합니다. 다음 표는 지원되는 속성 및 지원되는 여러 가지 키 유형과의 관계를 보여줍니다.
속성 | 설명 | 지원되는 키 유형 |
---|---|---|
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를 가져올 수 있습니다.
PKCS #11 메커니즘 | 지원되는 곡선 유형 | 지원되는 곡선 이름 |
---|---|---|
CKM_EC_KEY_PAIR_GEN | NIST(National Institute of Standards and Technology)곡선 |
|
CKM_EC_KEY_PAIR_GEN | 일반 브레인 풀(BP)곡선 |
|
CKM_EC_KEY_PAIR_GEN | 트위스트 브레인 풀(BP)곡선 |
|
CKM_EC_KEY_PAIR_GEN | 효율적인 암호화(SEC)곡선에 대한 표준 |
|
CKM_EC_KEY_PAIR_GEN | Edwards 곡선 |
|
CKM_EC_KEY_PAIR_GEN | Edwards 곡선 |
|
디지털 자산 암호화 및 디지털 서명 생성을 위해 지원되는 곡선
디지털 자산 및 디지털 서명과 관련된 메커니즘에 대해 다음 곡선이 지원됩니다.
표준 또는 스킴 | PKCS #11 메커니즘 | 지원되는 곡선 유형 | 지원되는 곡선 이름 |
---|---|---|---|
BIP32/BIP44 | CKM_IBM_BTC_DERIVE | 효율적인 암호화(SEC)곡선에 대한 표준 |
|
SLIP10 | CKM_IBM_BTC_DERIVE | NIST(National Institute of Standards and Technology)곡선 |
|
SLIP10 | CKM_IBM_BTC_DERIVE | 효율적인 암호화(SEC)곡선에 대한 표준 |
|
SLIP10 | CKM_IBM_BTC_DERIVE | Edwards 곡선 |
|
EdDSA | CKM_IBM_ED25519_SHA512 | Edwards 곡선 |
|
Schnorr | CKM_IBM_ECDSA_기타 | 효율적인 암호화(SEC)곡선에 대한 표준 |
|
Schnorr | CKM_IBM_ECDSA_기타 | NIST(National Institute of Standards and Technology)곡선 |
|
Schnorr | CKM_IBM_ECDSA_기타 | 일반 브레인 풀(BP)곡선 |
|
Schnorr | CKM_IBM_ECDSA_기타 | 트위스트 브레인 풀(BP)곡선 |
|
Schnorr | ECSG_IBM_ECSDSA_S256 |
|
|
슈노르-질리카 | Ecsg_ibm_ecsdsa_compr_multi |
|
표준 PKCS #11 API 참조
PKCS #11 표준 문서를 검토하려면 다음을 참조하십시오.