IBM Cloud Docs
暗号操作: PKCS #11 の API

暗号操作: 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と記載しています。

表 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 ある 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 関数の分類の関係を示しています。

表 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_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_EncryptUpdateC_DecryptUpdateC_DigestUpdate などの Update Cryptotoki 機能を使用できないシングルパート操作のみをサポートします。

2: このメカニズムは、IBM 4768 暗号カードではサポートされておらず、C_SignUpdateおよびC_VerifyUpdateの操作には使用できません。

サポートされる属性と鍵タイプ

PKCS #11 の属性で定義するオブジェクトの特性によって、オブジェクトの使用方法とアクセス方法がセットアップされます。 以下の表に、サポートされている属性と、サポートされているさまざまな鍵タイプの関係を示します。

表 3. サポートされる属性と鍵タイプ
属性 説明 サポート対象キー・タイプ
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 を取得できます。

表 4。 EC 鍵の生成でサポートされる曲線タイプ
PKCS #11 のメカニズム サポートされる曲線タイプ サポートされる曲線名
CKM_EC_KEY_PAIR_GEN 米国連邦情報・技術局(NIST)曲線
  • 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 Standards for Efficient Cryptography(SEC)曲線
  • secp256k1
CKM_EC_KEY_PAIR_GEN エドワーズ曲線
  • Ed25519
CKM_EC_KEY_PAIR_GEN エドワーズ曲線
  • Ed448

デジタル資産を暗号化し、デジタル署名を生成するためにサポートされる曲線

デジタル資産およびデジタル署名に関連するメカニズムでは、以下の曲線がサポートされます。

表 5. デジタル資産および署名の暗号化でサポートされる曲線タイプ
標準またはスキーム PKCS #11 のメカニズム サポートされる曲線タイプ サポートされる曲線名
BIP32/BIP44 CKM_IBM_BTC_DERIVE Standards for Efficient Cryptography(SEC)曲線
  • secp256k1
SLIP10 CKM_IBM_BTC_DERIVE 米国連邦情報・技術局(NIST)曲線
  • P-256( secp256r1 および prime256v1 とも呼ばれる)
SLIP10 CKM_IBM_BTC_DERIVE Standards for Efficient Cryptography(SEC)曲線
  • secp256k1
SLIP10 CKM_IBM_BTC_DERIVE エドワーズ曲線
  • Ed25519
EdDSA CKM_IBM_ED25519_SHA512 エドワーズ曲線
  • Ed25519
Schnorr その他の CKM_IBM_ECDSA_OTHER Standards for Efficient Cryptography(SEC)曲線
  • secp256k1
Schnorr その他の CKM_IBM_ECDSA_OTHER 米国連邦情報・技術局(NIST)曲線
  • P-256( secp256r1 および prime256v1 とも呼ばれる)
Schnorr その他の CKM_IBM_ECDSA_OTHER 通常の脳プール(BP)曲線
  • BP-256R( brainpoolP256r1 とも呼ばれる)
Schnorr その他の CKM_IBM_ECDSA_OTHER ツイステッド・ブレイン・プール(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 標準の資料については、以下を参照してください。