手册页部分 5: 标准、环境和宏

退出打印视图

更新时间: 2014 年 7 月
 
 

pkcs11_softtoken (5)

名称

pkcs11_softtoken - 软件 RSA PKCS#11 的软令牌

用法概要

/usr/lib/security/pkcs11_softtoken.so
/usr/lib/security/64/pkcs11_softtoken.so

描述

pkcs11_softtoken.so 对象在软件中实现了 RSA Security Inc. PKCS#11 加密令牌接口 (Cryptographic Token Interface, Cryptoki) v2.20 规范。令牌对象的持久性存储由此 PKCS#11 实现提供。

应用程序开发者应链接到 libpkcs11.so 而不是直接链接到 pkcs11_softtoken.so。请参见 libpkcs11(3LIB)

实现了以下加密算法:DES、3DES、AES、Blowfish、RC4、MD5、SHA1、SHA224、SHA256、SHA384、SHA512、RSA、DSA、DH、ECC 和 Camellia。

除以下函数之外,实现了 libpkcs11(3LIB) 中列出的所有标准 PKCS#11 函数:

C_GetObjectSize
C_InitPIN
C_WaitForSlotEvent

对这些函数的调用将返回 CKR_FUNCTION_NOT_SUPPORTED

支持以下 RSA PKCS#11 v2.20 机制:

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_BLOWFISH_KEY_GEN
CKM_BLOWFISH_CBC

CKM_CAMELLIA_KEY_GEN
CKM_CAMELLIA_ECB
CKM_CAMELLIA_CBC

CKM_RC4_KEY_GEN
CKM_RC4

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_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_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_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

以下每种类型的密钥对象都具有令牌特定的某些属性,缺省情况下,这些属性将因创建对象、生成密钥/密钥对以及派生密钥而设置为 true。

公钥对象

CKA_ENCRYPTCKA_VERIFYCKA_VERIFY_RECOVER

私钥对象

CKA_DECRYPTCKA_SIGNCKA_SIGN_RECOVERCKA_EXTRACTABLE

密钥对象

CKA_ENCRYPTCKA_DECRYPTCKA_SIGNCKA_VERIFYCKA_EXTRACTABLE

支持以下证书对象:

CKC_X_509

对于 CKC_X_509 证书对象,支持以下属性:CKA_SUBJECTCKA_VALUECKA_LABELCKA_IDCKA_ISSUERCKA_SERIAL_NUMBER CKA_CERTIFICATE_TYPE

CKC_X_509_ATTR_CERT

对于 CKC_X_509_ATTR_CERT 证书对象,支持以下属性:CKA_OWNERCKA_VALUE, CKA_LABELCKA_SERIAL_NUMBERCKA_AC_ISSUERCKA_ATTR_TYPESCKA_CERTIFICATE_TYPE

C_FindObjectsInit 中执行匹配模板的对象搜索操作。匹配的对象将进行缓存以供后续 C_FindObjects 操作使用。

pkcs11_softtoken.so 对象提供了一个基于文件系统的持久性令牌对象存储,用来存储令牌对象。令牌对象存储的缺省位置是 /var/user/$USERNAME/pkcs11_softtoken。用户可以使用 ${SOFTTOKEN_DIR} 环境变量覆盖该缺省位置。

如果令牌对象存储从未经过初始化,C_Login() 函数可能会返回 CKR_OK,但用户无法创建、生成、派生或查找任何专用令牌对象并会收到 CKR_PIN_EXPIRED

用户必须使用 pktool(1) setpin 命令(其缺省口令短语 "changeme" 是旧口令短语)更改对象存储的口令短语。在初始化新创建的令牌对象存储并为其设置口令短语时,需要执行此操作。

在使用 pktool setpin 命令所设置的新口令短语登录到对象存储后,用户即可在此新创建的对象存储中创建和存储专用令牌对象。在 setpin 初始化令牌对象存储之前,允许使用 C_Login() 函数,但用户创建、生成、派生或查找任何专用令牌对象的所有尝试都会失败并会显示 CKR_PIN_EXPIRED 错误。

C_Login()C_SetPIN() 函数提供的 PIN 可以是长度介于 1 到 256 之间且不带嵌入空字符的任何字符串。

返回值

每个已实现函数的返回值都在 RSA PKCS#11 v2.20 规范中定义和列出。请参见 http://www.rsasecurity.com

文件

/var/user/$USERNAME/pkcs11_softtoken

用户的缺省令牌对象存储

${SOFTTOKEN_DIR}/pkcs11_softtoken

令牌对象存储的备用位置

属性

有关以下属性的说明,请参见 attributes(5)

属性类型
属性值
接口稳定性
Committed(已确定)
MT 级别
MT-Safe with exceptions(多线程安全,但存在异常)。请参见 RSA PKCS#11 v2.20 的第 6.6.2 节。
标准
PKCS#11 v2.20

另请参见

pktool(1)cryptoadm(1M)libpkcs11(3LIB)attributes(5)pkcs11_kernel(5)

RSA PKCS#11 v2.20 http://www.rsasecurity.com