暗号操作: PKCS #11 の API
IBM Cloud® Hyper Protect Crypto Services は、クラウドの ハードウェア・セキュリティー・モジュール(HSM)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) を規定した標準です。
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 Runtime Downloads ページで 「Architecture」 フィルター・フィールドを s390x に変更することにより、 IBM Semeru JVM の最新バージョンである s390x をダウンロードできます。
エラー処理
Hyper Protect Crypto Services の PKCS #11 API は、エラー処理のために PKCS #11 Cryptographic Token Interface の標準方式 に従います。
鍵が暗号装置によって保護されていることの確認
PKCS #11 の API は、IBM Cloud 上のリモート鍵ストアに保管、更新、および取得できる生成済み鍵オブジェクトを処理します。 追加レベルの保護として、改ざんが行われないように、IBM Cloud に保管されている鍵オブジェクトを検査することもできます。
生成、導出、またはアンラップされるすべての対称鍵には、CKA_CHECK_VALUE と呼ばれる鍵属性に保管されるデジタル指紋が含まれます。 この属性は、鍵オブジェクト自体の 3 バイトのチェックサムです。
鍵オブジェクトを生成、導出、またはアンラップした後、初期チェックサム値 (CKA_CHECK_VALUE 属性の内容) と鍵オブジェクトの固有 ID を別個に保管することをお勧めします。 その後、別個に保管されたチェックサムを使用して、鍵が改ざんされているかどうかを検証できます。
鍵を検証するには、検証する鍵を使用して、ヌル (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 | ある | 1 部構成のデータを暗号化します。 |
暗号化 | C_EncryptUpdate | ある | 複数部構成の暗号化操作を続行します。 |
暗号化 | C_EncryptFinal | ある | 複数部構成の暗号化操作を終了します。 |
復号 | C_DecryptInit | ある | 復号操作を初期化します。 |
復号 | C_Decrypt | ある | 1 部構成の暗号化されたデータを復号します。 |
復号 | C_DecryptUpdate | ある | 複数部構成の復号操作を続行します。 |
復号 | C_DecryptFinal | ある | 複数部構成の復号操作を終了します。 |
メッセージ・ダイジェスト | C_DigestInit | ある | メッセージ・ダイジェスト生成操作を初期化します。 |
メッセージ・ダイジェスト | C_Digest | ある | シングルパート・データのダイジェストを生成します。 入力データの長さをゼロにすることはできません。入力データの場所を指すポインターを NULL にすることもできません。 |
メッセージ・ダイジェスト | C_DigestUpdate | ある | 複数部構成のダイジェスト生成操作を続行します。 入力データの長さをゼロにすることはできません。入力データの場所を指すポインターを NULL にすることもできません。 |
メッセージ・ダイジェスト | C_DigestKey | いいえ | 鍵のダイジェストを生成します。 |
メッセージ・ダイジェスト | C_DigestFinal | ある | 複数部構成のダイジェスト生成操作を終了します。 |
署名と MAC 署名 | C_SignInit | ある | 署名操作を初期化します。 |
署名と MAC 署名 | C_Sign | ある | 1 部構成のデータに署名します。 |
署名と MAC 署名 | C_SignUpdate | ある | 複数部構成の署名操作を続行します。 |
署名と MAC 署名 | C_SignFinal | ある | 複数部構成の署名操作を終了します。 |
署名と MAC 署名 | C_SignRecoverInit | いいえ | 署名操作を初期化します。データが署名から復元されます。 |
署名と MAC 署名 | C_SignRecover | いいえ | 1 部構成のデータに署名します。データが署名から復元されます。 |
署名と MAC の検証 | C_VerifyInit | ある | 検証操作を初期化します。 |
署名と MAC の検証 | C_Verify | ある | 1 部構成のデータの署名を検証します。 |
署名と MAC の検証 | C_VerifyUpdate | ある | 複数部構成の検証操作を続行します。 |
署名と MAC の検証 | C_VerifyFinal | ある | 複数部構成の検証操作を終了します。 |
署名と MAC の検証 | C_VerifyRecoverInit | いいえ | 検証操作を初期化します。検証操作ではデータが署名から復元されます。 |
署名と MAC の検証 | C_VerifyRecover | いいえ | 1 部構成のデータの署名を検証します。検証操作ではデータが署名から復元されます。 |
二重目的暗号関数 | C_DigestEncryptUpdate | ある | 連続して行う複数部構成のダイジェスト生成 & 暗号化操作を続行します。 |
二重目的暗号関数 | C_DecryptDigestUpdate | ある | 連続して行う複数部構成の復号 & ダイジェスト操作を続行します。 |
二重目的暗号関数 | C_SignEncryptUpdate | ある | 連続して行う複数部構成の署名 & 暗号化操作を続行します。 |
二重目的暗号関数 | C_DecryptVerifyUpdate | ある | 連続して行う複数部構成の復号 & 検証操作を続行します。 |
鍵管理 | C_GenerateKey | ある | 共通鍵を生成します。 |
鍵管理 | C_GenerateKeyPair | ある | 公開鍵または秘密鍵のペアを生成します。 |
鍵管理 | C_WrapKey | ある | 鍵をラップ (暗号化) します。 |
鍵管理 | C_UnwrapKey | ある | 鍵をアンラップ (復号) します。 |
鍵管理 | C_DeriveKey | ある | 基本鍵から鍵を導出します。 |
乱数の生成 | C_SeedRandom | いいえ | 乱数発生ルーチンにシード素材を追加します。 |
乱数の生成 | C_GenerateRandom | ある | ランダム・データを生成します。 ランダム・データの長さをゼロにすることはできません。ランダム・データの場所を指すポインターを NULL にすることもできません。 |
並列機能管理 | 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_DILITHIUM2 |
ダイジェスト。 | 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
などの Update Cryptotoki 機能を使用できないシングルパート操作のみをサポートします。
2: このメカニズムは、IBM 4768 暗号カードではサポートされておらず、C_SignUpdate
およびC_VerifyUpdate
の操作には使用できません。
サポートされる属性と鍵タイプ
PKCS #11 の属性で定義するオブジェクトの特性によって、オブジェクトの使用方法とアクセス方法がセットアップされます。 以下の表に、サポートされている属性と、サポートされているさまざまな鍵タイプの関係を示します。
属性 | 説明 | サポート対象キー・タイプ |
---|---|---|
CKA 基本 | DSA ドメイン・パラメーター。C_CreateObjectに使用されます。 基数 g。 | DSA 秘密鍵、DSA 公開鍵 |
CKA_CERTIFICATE_CATEGORY | 保管された証明書が、対応する秘密鍵がトークン (「トークン・ユーザー」)、CA 証明書 (「認証局」) で使用可能なユーザー証明書であるかどうかを示すために使用されます。、または別のエンド・エンティティー証明書 (「その他のエンティティー」)。 デフォルト値は CK_CERTIFICATE_CATEGORY_UNSPECIFIED です。 | 適用外 |
CKA_CERTIFICATE_TYPE | C_CreateObjectを使用して証明書オブジェクトを作成するときに指定する必要があります。 証明書タイプは、 X.509 公開鍵、WTLS 公開鍵証明書、および X.509 属性証明書です。 | 適用外 |
CKA_CHECK_VALUE | 鍵または証明書のチェックサムです。 | AES 鍵、DES 鍵 |
CKA_CLASS | オブジェクト・クラス (タイプ)。すべてのオブジェクトで共通です。 | EC 秘密鍵、EC 公開鍵、RSA 秘密鍵、RSA 公開鍵、DH 秘密鍵、DH 公開鍵、DSA 秘密鍵、DSA 公開鍵、AES 鍵、DES 鍵、汎用鍵 |
CKA_COEFFICIENT | C_CreatObjectに使用されます。 | RSA プライベート・キー |
コピー可能 CKA_COPYABLE | 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 モジュロ p。 | RSA プライベート・キー |
CA_Hash_of_issuer_public_key | 証明書の発行者公開鍵のハッシュ。 デフォルトは空です。 | 適用外 |
CA_Hash_of_subject_public_key | 証明書のサブジェクト公開鍵のハッシュ。 デフォルトは空です。 | 適用外 |
CKA_IBM_PQC_PARAMS | ポスト量子暗号化後のメカニズムのサポート・パラメーター。 Dilithium メカニズムCKM_IBM_DILITHIUM の場合は、使用する Dilithium アルゴリズムの強度を表す、マーシャル・オブジェクト ID (OID) を提供します。 現在は、 Dilithium 4 round 2 の強度のみがサポートされています。 |
Dilithium キー |
CKA_IBM_USE_AS_DATA | CK_TRUE の場合、オブジェクトはハッシュ操作または鍵導出操作に使用されます。 | EC 秘密鍵、EC 公開鍵 |
CKA_ID | 公開鍵または秘密鍵のペアまたは鍵の鍵 ID (デフォルトは空)。 デフォルトは空です。 | EC 秘密鍵、EC 公開鍵、RSA 秘密鍵、RSA 公開鍵、DH 秘密鍵、DH 公開鍵、DSA 秘密鍵、DSA 公開鍵、AES 鍵、DES 鍵、汎用鍵 |
CKA_ISSUER | 証明書発行者名の 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 鍵、汎用鍵 |
CKA_MODIFIABLE | オブジェクトを変更できる場合は、CK_TRUE に設定します。 | EC 秘密鍵、EC 公開鍵、RSA 秘密鍵、RSA 公開鍵、DH 秘密鍵、DH 公開鍵、DSA 秘密鍵、DSA 公開鍵、AES 鍵、DES 鍵、汎用鍵 |
CKA_MODULUS | Modulus n. | RSA プライベート・キー |
CKA_MODULUS_BITS | 係数 n の長さ (ビット単位)。 | RSA パブリック・キー |
スタック名ハッシュ・アルゴリズム (CKA_NAME_HASH_ALGORITHM) | 証明書のサブジェクトおよび発行者の公開鍵のハッシュを計算するために使用されるメカニズムを定義します。 デフォルトは SHA-1です。 | 適用外 |
CKA_PRIME | 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 (CKA_PRIVATE_EXPON | C_CreateObjectに使用されます。 プライム p。 | RSA プライベート・キー |
CKA_PUBLIC_EXPONENT | パブリック指数 e。 | RSA 秘密鍵、RSA 公開鍵 |
CKA_PUBLIC_KEY_INFO | 公開鍵に対する SubjectPublicKeyInfo の DER エンコード。 この値は、基礎となる公開鍵データから派生し、デフォルトでは空です。 | RSA 公開鍵、EC 公開鍵、Dilithium 公開鍵 |
CKA_SENSITIVE | 鍵の機密性が高い場合は CK_TRUE。 | EC 秘密鍵、RSA 秘密鍵、DH 秘密鍵、DSA 秘密鍵、AES 鍵、DES 鍵、汎用鍵 |
シリアル番号 (CKA_SERIAL_NUMBER) | 証明書シリアル番号の 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 公開鍵 |
CA_サブプライム | DSA ドメイン・パラメーター。C_CreateObjectに使用されます。 サブプライム q (p < = 1024 ビット、224 ビット、または p> 1024 ビットの場合は 256 ビット)。 | 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 鍵、汎用鍵 |
CKA_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 鍵、汎用鍵 |
アプリケーションの CKA_APPLICATION | オブジェクトを管理するアプリケーションの説明 (デフォルトは空) | 適用外 |
オブジェクト ID (CKA_OBJECT_ID) | データ・オブジェクト・タイプを示すオブジェクト ID の DER エンコード (デフォルトは空) | 適用外 |
所有者の CKA_OWNER | 属性の証明書所有者フィールドの DER エンコード。 これは、CKC_X_509 証明書に含まれている CKA_SUBJECT 属性とは異なります。ASN.1 構文とエンコードは異なるためです。 | 適用外 |
CKA_AC_ISSUER | 属性の証明書発行者フィールドの DER エンコード。 これは、 CKC_X_509 証明書に含まれる CKA_ISSUER 属性とは異なります。これは、 ASN.1 構文とエンコードが異なるためです。 (デフォルトは空) | 適用外 |
CKA_ATTR_TYPE | 証明書に含まれる属性タイプに対応する オブジェクト ID 値のシーケンスの BERエンコード。 このフィールドが存在する場合、アプリケーションは、証明書自体を取り出して構文解析することなく、特定の属性証明書を検索することができます。 (デフォルトは空) | 適用外 |
サポートされる曲線
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)曲線 |
|
CKM_EC_KEY_PAIR_GEN | 通常の脳プール(BP)曲線 |
|
CKM_EC_KEY_PAIR_GEN | ツイステッド・ブレイン・プール(BP)曲線 |
|
CKM_EC_KEY_PAIR_GEN | Standards for Efficient Cryptography(SEC)曲線 |
|
CKM_EC_KEY_PAIR_GEN | エドワーズ曲線 |
|
CKM_EC_KEY_PAIR_GEN | エドワーズ曲線 |
|
デジタル資産を暗号化し、デジタル署名を生成するためにサポートされる曲線
デジタル資産およびデジタル署名に関連するメカニズムでは、以下の曲線がサポートされます。
標準またはスキーム | PKCS #11 のメカニズム | サポートされる曲線タイプ | サポートされる曲線名 |
---|---|---|---|
BIP32/BIP44 | CKM_IBM_BTC_DERIVE | Standards for Efficient Cryptography(SEC)曲線 |
|
SLIP10 | CKM_IBM_BTC_DERIVE | 米国連邦情報・技術局(NIST)曲線 |
|
SLIP10 | CKM_IBM_BTC_DERIVE | Standards for Efficient Cryptography(SEC)曲線 |
|
SLIP10 | CKM_IBM_BTC_DERIVE | エドワーズ曲線 |
|
EdDSA | CKM_IBM_ED25519_SHA512 | エドワーズ曲線 |
|
Schnorr | その他の CKM_IBM_ECDSA_OTHER | Standards for Efficient Cryptography(SEC)曲線 |
|
Schnorr | その他の CKM_IBM_ECDSA_OTHER | 米国連邦情報・技術局(NIST)曲線 |
|
Schnorr | その他の CKM_IBM_ECDSA_OTHER | 通常の脳プール(BP)曲線 |
|
Schnorr | その他の CKM_IBM_ECDSA_OTHER | ツイステッド・ブレイン・プール(BP)曲線 |
|
Schnorr | ECSG_IBM_ECSDSA_S256 |
|
|
シュノル = ジリカ | ECSG_IBM_ECSDSA_COMPR_MULTI |
|
標準 PKCS #11 の API リファレンス
PKCS #11 標準の資料については、以下を参照してください。