跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:安全服务 Oracle Solaris 11 Information Library (简体中文) |
本节介绍如何管理加密框架中的软件提供者和硬件提供者。如果需要,可以禁用软件提供者和硬件提供者。例如,可以禁用某个软件提供者的算法实现。然后,可以强制系统使用其他软件提供者的算法。
以下任务列表列出了管理加密框架中的软件和硬件提供者的过程。
|
加密框架可为多种类型的使用者提供算法:
用户级提供者为与 libpkcs11 库相链接的应用程序提供 PKCS #11 加密接口
内核软件提供者为 IPsec、Kerberos 及其他 Oracle Solaris 内核组件提供算法
内核硬件提供者通过 pkcs11_kernel 库提供内核使用者和应用程序可用的算法
注 - 不同的 Oracle Solaris 发行版中提供者列表的内容和格式会有所不同。在您的系统上运行 cryptoadm list 命令可查看系统支持的提供者。
一般用户只能使用用户级机制。
% cryptoadm list User-level providers: Provider: /usr/lib/security/$ISA/pkcs11_kernel.so Provider: /usr/lib/security/$ISA/pkcs11_softtoken.so Provider: /usr/lib/security/$ISA/pkcs11_tpm.so Kernel software providers: des aes arcfour blowfish ecc sha1 sha2 md4 md5 rsa swrand Kernel hardware providers: ncp/0
以下输出中列出了所有机制。但是,所列出的一些机制可能无法使用。要仅列出管理员已批准使用的机制,请参见示例 12-20。
为了便于显示,输出将被截断。
% cryptoadm list -m User-level providers: ===================== Provider: /usr/lib/security/$ISA/pkcs11_kernel.so /usr/lib/security/$ISA/pkcs11_kernel.so: no slots presented. Provider: /usr/lib/security/$ISA/pkcs11_softtoken.so Mechanisms: CKM_DES_CBC CKM_DES_CBC_PAD CKM_DES_ECB CKM_DES_KEY_GEN CKM_DES_MAC_GENERAL ... CKM_ECDSA_SHA1 CKM_ECDH1_DERIVE Provider: /usr/lib/security/$ISA/pkcs11_tpm.so /usr/lib/security/$ISA/pkcs11_tpm.so: no slots presented. Kernel software providers: ========================== des: CKM_DES_ECB,CKM_DES_CBC,CKM_DES3_ECB,CKM_DES3_CBC aes: CKM_AES_ECB,CKM_AES_CBC,CKM_AES_CTR,CKM_AES_CCM,CKM_AES_GCM,CKM_AES_GMAC arcfour: CKM_RC4 blowfish: CKM_BLOWFISH_ECB,CKM_BLOWFISH_CBC ecc: CKM_EC_KEY_PAIR_GEN,CKM_ECDH1_DERIVE,CKM_ECDSA,CKM_ECDSA_SHA1 sha1: CKM_SHA_1,CKM_SHA_1_HMAC,CKM_SHA_1_HMAC_GENERAL sha2: CKM_SHA256,CKM_SHA256_HMAC,CKM_SHA256_HMAC_GENERAL,CKM_SHA384,CKM_SHA384_HMAC, CKM_SHA384_HMAC_GENERAL,CKM_SHA512,CKM_SHA512_HMAC,CKM_SHA512_HMAC_GENERAL md4: CKM_MD4 md5: CKM_MD5,CKM_MD5_HMAC,CKM_MD5_HMAC_GENERAL rsa: CKM_RSA_PKCS,CKM_RSA_X_509,CKM_MD5_RSA_PKCS,CKM_SHA1_RSA_PKCS, CKM_SHA256_RSA_PKCS,CKM_SHA384_RSA_PKCS,CKM_SHA512_RSA_PKCS swrand: No mechanisms presented. Kernel hardware providers: ========================== ncp/0: CKM_DSA,CKM_RSA_X_509,CKM_RSA_PKCS,CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_KEY_PAIR_GEN,CKM_DH_PKCS_DERIVE,CKM_EC_KEY_PAIR_GEN, CKM_ECDH1_DERIVE,CKM_ECDSA
示例 12-19 查找现有加密机制
在下面的示例中,列出了用户级库 pkcs11_softtoken 提供的所有机制。
% cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so Mechanisms: CKM_DES_CBC CKM_DES_CBC_PAD CKM_DES_ECB CKM_DES_KEY_GEN CKM_DES_MAC_GENERAL CKM_DES_MAC … CKM_ECDSA CKM_ECDSA_SHA1 CKM_ECDH1_DERIVE
示例 12-20 查找可用加密机制
策略确定可使用的机制。管理员负责设置策略。管理员可以选择禁用特定提供者的机制。-p 选项显示管理员设置的策略允许的机制列表。
% cryptoadm list -p User-level providers: ===================== /usr/lib/security/$ISA/pkcs11_kernel.so: all mechanisms are enabled. /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled, except CKM_MD5. random is enabled. /usr/lib/security/$ISA/pkcs11_tpm.so: all mechanisms are enabled. Kernel software providers: ========================== des: all mechanisms are enabled. aes: all mechanisms are enabled. arcfour: all mechanisms are enabled. blowfish: all mechanisms are enabled. ecc: all mechanisms are enabled. sha1: all mechanisms are enabled. sha2: all mechanisms are enabled. md4: all mechanisms are enabled. md5: all mechanisms are enabled. rsa: all mechanisms are enabled. swrand: random is enabled. Kernel hardware providers: ========================== ncp/0: all mechanisms are enabled. random is enabled.
示例 12-21 确定哪些加密机制执行哪些功能
机制执行特定加密功能,如签名或密钥生成。-v -m 选项显示每个机制及其功能。
在本实例中,管理员要确定 CKM_ECDSA* 机制可用于哪些功能。
% cryptoadm list -vm User-level providers: ===================== Provider: /usr/lib/security/$ISA/pkcs11_kernel.so /usr/lib/security/$ISA/pkcs11_kernel.so: no slots presented. Provider: /usr/lib/security/$ISA/pkcs11_softtoken.so ... CKM_ECDSA 112 571 . . . . X . X . . . . . . CKM_ECDSA_SHA1 112 571 . . . . X . X . . . . . . ...
该列表指示这些用户级机制可从 /usr/lib/security/$ISA/pkcs11_softtoken.so 库获得。
条目中的每一项代表机制的一条相关信息。对于这些 ECC 机制,该列表指示以下内容:
最小长度-112 字节
最大长度-571 字节
硬件-硬件不可用。
加密-不可用于加密数据。
解密-不可用于解密数据。
摘要-不可用于创建消息摘要。
签名-用于对数据签名。
签名 + 恢复-不可用于对能从签名中恢复的数据签名。
验证-用于验证签名数据。
验证 + 恢复-不可用于验证能从签名中恢复的数据。
密钥生成-不可用于生成私钥。
密钥对生成-不可用于生成密钥对。
包装-不可用于包装。即加密,现有密钥。
解包-不可用于将已包装的密钥解包。
派生-不可用于从基本密钥派生新密钥。
开始之前
您必须分配有 Crypto Management(加密管理)权限配置文件。
有关更多信息,请参见如何获取管理权限。
% cryptoadm list User-level providers: Provider: /usr/lib/security/$ISA/pkcs11_kernel.so Provider: /usr/lib/security/$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_tpm.so: all mechanisms are enabled. Kernel software providers: des aes arcfour blowfish sha1 sha2 md4 md5 rsa swrand Kernel hardware providers: ncp/0
Oracle 已向现有提供者软件颁发证书。
如果添加了软件提供者或者添加了硬件并为该硬件指定了策略,则需要刷新提供者。
# svcadm refresh svc:/system/cryptosvc
在本例中,安装了一个新的内核软件提供者。
# cryptoadm list … Kernel software providers: des aes arcfour blowfish ecc sha1 sha2 md4 md5 rsa swrand sha3 <-- added provider …
示例 12-22 添加用户级软件提供者
在下面的示例中,将安装签名的 PKCS #11 库。
# pkgadd -d /cdrom/cdrom0/SolarisNew Answer the prompts # svcadm refresh system/cryptosvc # cryptoadm list user-level providers: ========================== /usr/lib/security/$ISA/pkcs11_kernel.so /usr/lib/security/$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_tpm.so /opt/lib/$ISA/libpkcs11.so.1 <-- added provider
# cryptoadm install provider=/opt/lib/\$ISA/libpkcs11.so.1
如果不应使用库提供者的某些加密机制,可以删除这些所选的机制。此过程以 pkcs11_softtoken 库中的 DES 机制为例。
开始之前
您必须分配有 Crypto Management(加密管理)权限配置文件。
有关更多信息,请参见如何获取管理权限。
% cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN, CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN, CKM_AES_CBC,CKM_AES_CBC_PAD,CKM_AES_ECB,CKM_AES_KEY_GEN, …
$ cryptoadm list -p user-level providers: ===================== … /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled. random is enabled. …
$ cryptoadm disable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \ > mechanism=CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB
$ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled, except CKM_DES_ECB,CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.
示例 12-23 启用一个用户级软件提供者机制
在下面的示例中,将使禁用的 DES 机制再次可用。
$ cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN, CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN, … $ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled, except CKM_DES_ECB,CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled. $ cryptoadm enable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \ > mechanism=CKM_DES_ECB $ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled, except CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.
示例 12-24 启用所有用户级软件提供者机制
$ cryptoadm enable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so all $ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled. random is enabled.
示例 12-25 永久禁用用户级软件提供者
$ cryptoadm uninstall provider=/opt/lib/\$ISA/libpkcs11.so.1 $ cryptoadm list user-level providers: /usr/lib/security/$ISA/pkcs11_kernel.so /usr/lib/security/$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_tpm.so kernel software providers: …
如果加密框架提供了某个提供者(如 AES)的多种模式,则可以禁用速度较慢的机制或被破坏的机制。此过程以 AES 算法为例。
开始之前
您必须分配有 Crypto Management(加密管理)权限配置文件。
有关更多信息,请参见如何获取管理权限。
$ cryptoadm list -m provider=aes aes: CKM_AES_ECB,CKM_AES_CBC,CKM_AES_CTR,CKM_AES_CCM,CKM_AES_GCM,CKM_AES_GMAC
$ cryptoadm list -p provider=aes aes: all mechanisms are enabled.
$ cryptoadm disable provider=aes mechanism=CKM_AES_ECB
$ cryptoadm list -p provider=aes aes: all mechanisms are enabled, except CKM_AES_ECB.
示例 12-26 启用内核软件提供者机制
在下面的示例中,将使禁用的 AES 机制再次可用。
cryptoadm list -m provider=aes aes: CKM_AES_ECB,CKM_AES_CBC,CKM_AES_CTR,CKM_AES_CCM,CKM_AES_GCM,CKM_AES_GMAC $ cryptoadm list -p provider=aes aes: all mechanisms are enabled, except CKM_AES_ECB. $ cryptoadm enable provider=aes mechanism=CKM_AES_ECB $ cryptoadm list -p provider=aes aes: all mechanisms are enabled.
示例 12-27 临时禁用内核软件提供者
在下面的示例中,将临时禁用 AES 提供者。unload 子命令可用于禁止在卸载某个提供者时自动装入该提供者。例如,安装影响提供者的修补程序时,将使用 unload 子命令。
$ cryptoadm unload provider=aes
$ cryptoadm list … Kernel software providers: des aes (inactive) arcfour blowfish ecc sha1 sha2 md4 md5 rsa swrand
AES 提供者只有在加密框架刷新之后才会可用。
$ svcadm refresh system/cryptosvc
$ cryptoadm list … Kernel software providers: des aes arcfour blowfish ecc sha1 sha2 md4 md5 rsa swrand
如果内核使用者正在使用内核软件提供者,则不会卸载该软件。此时将显示错误消息,不过该提供者仍然可供使用。
示例 12-28 永久禁用软件提供者
在下面的示例中,将禁用 AES 提供者。禁用后,该 AES 提供者将不会出现在内核软件提供者的策略列表中。
$ cryptoadm uninstall provider=aes
$ cryptoadm list … Kernel software providers: des arcfour blowfish ecc sha1 sha2 md4 md5 rsa swrand
如果内核使用者正在使用内核软件提供者,将显示一条错误消息,不过该提供者仍然可供使用。
示例 12-29 重新安装已删除的内核软件提供者
$ cryptoadm install provider=aes \ mechanism=CKM_AES_ECB,CKM_AES_CBC,CKM_AES_CTR,CKM_AES_CCM,CKM_AES_GCM,CKM_AES_GMAC
$ cryptoadm list … Kernel software providers: des aes arcfour blowfish ecc sha1 sha2 md4 md5 rsa swrand
硬件提供者将自动定位和装入。有关更多信息,请参见 driver.conf(4) 手册页。
开始之前
如果您的硬件预计会在加密框架中使用,该硬件将通过 SPI 在内核中注册。框架将检查是否已对硬件驱动程序签名。具体地说,框架将检查是否已使用 Oracle 颁发的证书对驱动程序的目标文件进行签名。
例如,Sun Crypto Accelerator 6000 板 (mca)、UltraSPARC T1 和 T2 处理器上加密加速器的 ncp 驱动程序 (ncp) 以及 UltraSPARC T2 处理器的 n2cp 驱动程序 (n2cp) 将硬件机制插入到框架中。
有关对提供者进行签名的信息,请参见第三方软件的二进制文件签名。
% cryptoadm list … kernel hardware providers: ncp/0
% cryptoadm list -m provider=ncp/0 ncp/0: CKM_DSA CKM_RSA_X_509 ... CKM_ECDH1_DERIVE CKM_ECDSA
% cryptoadm list -p provider=ncp/0 ncp/0: all mechanisms are enabled.
可以有选择地禁用硬件提供者的机制和随机数功能。有关重新启用它们的信息,请参见示例 12-30。此示例中的硬件 Sun Crypto Accelerator 1000 板提供了一个随机数生成器。
开始之前
您必须分配有 Crypto Management(加密管理)权限配置文件。
有关更多信息,请参见如何获取管理权限。
列出硬件提供者。
# cryptoadm list ... Kernel hardware providers: dca/0
# cryptoadm list -m provider=dca/0 dca/0: CKM_RSA_PKCS, CKM_RSA_X_509, CKM_DSA, CKM_DES_CBC, CKM_DES3_CBC random is enabled. # cryptoadm disable provider=dca/0 mechanism=CKM_DES_CBC,CKM_DES3_CBC # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled except CKM_DES_CBC,CKM_DES3_CBC. random is enabled.
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is enabled. # cryptoadm disable provider=dca/0 random # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is disabled.
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is enabled. # cryptoadm disable provider=dca/0 mechanism=all # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are disabled. random is enabled.
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is enabled. # cryptoadm disable provider=dca/0 all # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are disabled. random is disabled.
示例 12-30 启用硬件提供者的机制和功能
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled except CKM_DES_ECB,CKM_DES3_ECB
. random is enabled. # cryptoadm enable provider=dca/0 mechanism=CKM_DES3_ECB # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled except CKM_DES_ECB. random is enabled.
在下面的示例中,将仅启用随机数生成器。
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,…. random is disabled. # cryptoadm enable provider=dca/0 random # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,…. random is enabled.
在下面的示例中,将仅启用机制。随机数生成器将继续处于禁用状态。
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,…. random is disabled. # cryptoadm enable provider=dca/0 mechanism=all # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is disabled.
在下面的示例中,将启用板上的所有功能和机制。
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled, except CKM_DES_ECB,CKM_DES3_ECB. random is disabled. # cryptoadm enable provider=dca/0 all # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is enabled.
缺省情况下,将启用加密框架。无论 kcfd 守护进程因何种原因失败,都可使用服务管理工具 (Service Management Facility, SMF) 重新启动加密服务。有关更多信息,请参见 smf(5) 和 svcadm(1M) 手册页。有关重新启动加密服务对区域的影响,请参见加密服务和区域。
开始之前
您必须分配有 Crypto Management(加密管理)权限配置文件。
有关更多信息,请参见如何获取管理权限。
% svcs cryptosvc STATE STIME FMRI offline Dec_09 svc:/system/cryptosvc:default
# svcadm enable svc:/system/cryptosvc
示例 12-31 刷新加密服务
在下面的示例中,将在全局区域中刷新加密服务。因此,每个非全局区域中的内核级加密策略也将被刷新。
# svcadm refresh system/cryptosvc