pkcs11_softtoken - ソフトウェアの OASIS PKCS#11 ソフトトークン
/usr/lib/security/pkcs11_softtoken.so /usr/lib/security/64/pkcs11_softtoken.so
pkcs11_softtoken.so オブジェクトは、OASIS PKCS#11 暗号化トークンインタフェース (Cryptoki) v2.40 仕様をソフトウェアに実装します。この PKCS#11 の実装により、トークンオブジェクトの永続的ストレージが提供されます。
pkcs11_softtoken プロバイダは Oracle Solaris の必要な部分であるため、cryptoadm(8) を使用して無効にしてはいけません。
暗号化アルゴリズムの中には、ハードウェアで高速化されるものがあります。管理者は、次のコマンドを実行してシステムのこのリストを特定し、その出力内の HW 列を調べることができます。
# cryptoadm list -vm provider='/usr/lib/security/$ISA/pkcs11_softtoken.so'
開発者に対しては、ハードウェアで高速化される PKCS#11 メカニズムの CK_MECHANISM_INFO 構造体の CKF_HW フラグが設定されます。
アプリケーション開発者は、pkcs11_softtoken.so に直接リンクするのではなく、libpkcs11.so にリンクするようにしてください。libpkcs11(3LIB) を参照してください。
実装されている暗号化アルゴリズムは、DES、3DES、AES、Blowfish、RC4、MD5、SHA1、SHA224、SHA256、SHA384、SHA512、RSA、DSA、DH、ECC、および Camellia です。RC4 は復号化にのみ使用できることに注意してください。
libpkcs11 (3LIB) のリストに示されている標準の PKCS#11 関数は、次のものを除きすべて実装されています。
C_GetObjectSize C_InitPIN C_WaitForSlotEvent
これらの関数を呼び出すと、CKR_FUNCTION_NOT_SUPPORTED が返されます。
次の OASIS PKCS#11 v2.40 メカニズムがサポートされています。
CKM_RSA_PKCS_KEY_PAIR_GEN CKM_RSA_PKCS CKM_RSA_X_509 CKM_DSA_KEY_PAIR_GEN CKM_DSA CKM_DSA_SHA1 CKM_DH_PKCS_KEY_PAIR_GEN CKM_DH_PKCS_DERIVE CKM_EC_KEY_PAIR_GEN CKM_ECDSA CKM_ECDSA_SHA1 CKM_ECDH1_DERIVE CKM_DES_KEY_GEN CKM_DES_ECB CKM_DES_CBC CKM_DES_CBC_PAD CKM_DES3_KEY_GEN CKM_DES3_ECB CKM_DES3_CBC CKM_DES3_CBC_PAD CKM_AES_KEY_GEN CKM_AES_ECB CKM_AES_CBC CKM_AES_CBC_PAD CKM_AES_CTR CKM_AES_XCBC_MAC CKM_AES_XCBC_MAC_96 CKM_AES_GMAC CKM_AES_GCM CKM_AES_CCM CKM_AES_CFB128 CKM_BLOWFISH_KEY_GEN CKM_BLOWFISH_CBC CKM_CAMELLIA_KEY_GEN CKM_CAMELLIA_ECB CKM_CAMELLIA_CBC CKM_RC4_KEY_GEN CKM_RC4 (usable for decryption only) CKM_MD5_RSA_PKCS CKM_SHA1_RSA_PKCS CKM_SHA224_RSA_PKCS CKM_SHA256_RSA_PKCS CKM_SHA384_RSA_PKCS CKM_SHA512_RSA_PKCS CKM_MD5 CKM_SHA_1 CKM_SHA224 CKM_SHA256 CKM_SHA384 CKM_SHA512 CKM_SHA512_224 CKM_SHA512_256 CKM_SHA512_T CKM_MD5_HMAC CKM_MD5_HMAC_GENERAL CKM_SHA_1_HMAC CKM_SHA_1_HMAC_GENERAL CKM_SHA224_HMAC CKM_SHA256_HMAC CKM_SHA224_HMAC_GENERAL CKM_SHA512_224_HMAC_GENERAL CKM_SHA512_256_HMAC_GENERAL CKM_SHA512_T_HMAC_GENERAL CKM_SHA512_224_HMAC CKM_SHA512_256_HMAC CKM_SHA512_T_HMAC CKM_SHA256_HMAC_GENERAL CKM_SHA384_HMAC CKM_SHA384_HMAC_GENERAL CKM_MD5_KEY_DERIVATION CKM_SHA1_KEY_DERIVATION CKM_SHA224_KEY_DERIVATION CKM_SHA256_KEY_DERIVATION CKM_SHA384_KEY_DERIVATION CKM_SHA512_KEY_DERIVATION CKM_SHA512_224_KEY_DERIVATION CKM_SHA512_256_KEY_DERIVATION CKM_SHA512_T_KEY_DERIVATION CKM_SSL3_PRE_MASTER_KEY_GEN CKM_SSL3_MASTER_KEY_DERIVE CKM_SSL3_KEY_AND_MAC_DERIVE CKM_SSL3_MASTER_KEY_DERIVE_DH CKM_TLS_PRE_MASTER_KEY_GEN CKM_TLS_MASTER_KEY_DERIVE CKM_TLS_KEY_AND_MAC_DERIVE CKM_TLS_MASTER_KEY_DERIVE_DH CKM_TLS12_MASTER_KEY_DERIVE CKM_TLS12_MASTER_KEY_DERIVE_DH CKM_TLS12_KEY_AND_MAC_DERIVE CKM_TLS12_KEY_SAFE_DERIVE CKM_TLS_KDF CKM_TLS_MAC
次に示す各タイプの鍵オブジェクトには、トークン固有の属性がいくつかあります。これらは、オブジェクトの作成、鍵/鍵ペアの生成、および鍵の派生の結果として、デフォルトで true に設定されます。
CKA_ENCRYPT、CKA_VERIFY、 CKA_VERIFY_RECOVER
CKA_DECRYPT、CKA_SIGN、 CKA_SIGN_RECOVER、CKA_EXTRACTABLE
CKA_ENCRYPT、CKA_DECRYPT、 CKA_SIGN、CKA_VERIFY、CKA_EXTRACTABLE
サポートされている証明書オブジェクトは次のとおりです。
CKC_X_509 証明書オブジェクトでサポートされている属性は、CKA_SUBJECT、CKA_VALUE 、CKA_LABEL、CKA_ID、CKA_ISSUER 、CKA_SERIAL_NUMBER、および CKA_CERTIFICATE_TYPE です。
CKC_X_509_ATTR_CERT 証明書オブジェクトでサポートされている属性は、CKA_OWNER、CKA_VALUE、CKA_LABEL、CKA_SERIAL_NUMBER、CKA_AC_ISSUER 、CKA_ATTR_TYPES、および CKA_CERTIFICATE_TYPE です。
テンプレートに一致するオブジェクトの検索操作は C_FindObjectsInit で実行されます。一致したオブジェクトは、以降の C_FindObjects 操作のためにキャッシュされます。
pkcs11_softtoken.so オブジェクトにより、トークンオブジェクトを保存するためのファイルシステムベースの永続的なトークンオブジェクトストアが提供されます。トークンオブジェクトストアのデフォルトの場所は /var/user/$USERNAME/pkcs11_softtoken です。ユーザーは ${SOFTTOKEN_DIR} 環境変数を使用すると、デフォルトの場所を変更できます。
トークンオブジェクトストアが一度も初期化されていない場合、C_Login () 関数は CKR_OK を返すことがありますが、ユーザーは非公開のトークンオブジェクトの作成、生成、派生、または検索を行うことはできず、CKR_PIN_EXPIRED が返されます。
ユーザーは、新しいパスフレーズまたは既存のパスフレーズを指定して pktool inittoken コマンドを使用することで、トークンオブジェクトストアの初期化または再初期化をそれぞれ行うようにしてください。softtoken 用のユーザー定義のトークンラベルを設定または変更できます。さらに重要なことには、トークンオブジェクトストア内のオブジェクトはすべて破棄されます。そのあと、ユーザーは pktool setpin コマンドを使用して、トークンオブジェクトストアのパスフレーズを変更できます。
ユーザーは pktool setpin コマンドで設定した新しいパスフレーズを使用してオブジェクトストアにログインしたあと、この新しく作成されたオブジェクトストアに非公開のトークンオブジェクトを作成して保存できます。トークンオブジェクトストアが setpin によって初期化されるまで、C_Login() 関数は許可されますが、ユーザーがプライベートトークンオブジェクトを作成、生成、派生、または検索しようとしても、すべて CKR_PIN_EXPIRED エラーで失敗します。
C_Login() 関数と C_SetPIN() 関数に指定する PIN には、長さが 1 から 256 までで、空文字を含まない、任意の文字列を使用できます。
実装されている各関数の戻り値は、OASIS PKCS#11 v2.40 仕様で定義および一覧表示されています。See https://www.oasis-open.org/committees/pkcs11/
ユーザーのデフォルトのトークンオブジェクトストア
トークンオブジェクトストアの代替の場所
属性についての詳細は、attributes(7) を参照してください。
|
pktool(1)、cryptoadm(8)、libpkcs11(3LIB)、attributes(7)