在 Oracle® Solaris 11.2 中管理加密和证书

退出打印视图

更新时间: 2014 年 9 月
 
 

列出可用的提供程者

硬件提供者将自动定位和装入。有关更多信息,请参见 driver.conf(4) 手册页。

如果您的硬件预计会插入加密框架中,该硬件将通过 SPI 在内核中注册。框架将检查是否已对硬件驱动程序签名。具体地说,框架将检查是否已使用 Oracle 颁发的证书对驱动程序的目标文件进行签名。

例如,Sun Crypto Accelerator 6000 板 (mca)、UltraSPARC T1 和 T2 处理器上加密加速器的 ncp 驱动程序 (ncp)、UltraSPARC T2 处理器的 n2cp 驱动程序 (n2cp) 以及 T 系列系统的 /dev/crypto 驱动程序将硬件机制插入到框架中。

有关对提供者签名的信息,请参见加密框架中的用户级命令中的 elfsign 命令。

要列出可用的提供者,可使用包含不同选项的 cryptoadm list 命令,具体取决于要获取的具体信息。

  • 列出系统上的所有提供者。

    对于不同的 Oracle Solaris 发行版和不同的平台,提供者列表的内容和格式会有所不同。在您的系统上运行 cryptoadm list 命令可查看系统支持的提供者。一般用户只能直接使用用户级机制。

    % cryptoadm list
    User-level providers:  /* for applications */
    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:  /* for IPsec, kssl, Kerberos */
    des
    aes
    arcfour
    blowfish
    camellia
    ecc
    sha1
    sha2
    md4
    md5
    rsa
    swrand
    n2rng/0 /* for hardware */
    ncp/0
    n2cp/0
    
  • 列出加密框架中的提供者及其机制。

    可以查看可用机制的强度和模式(例如 ECBCBC)。但是,所列出的一些机制可能无法使用。有关如何列出可使用的机制的说明,请参见下一个项目。

    为了便于显示,以下输出被截断。

    % cryptoadm list -m [provider=provider]
    User-level providers:
    =====================
    
    Provider: /usr/lib/security/$ISA/pkcs11_kernel.so
    
    Mechanisms:
    CKM_DSA
    CKM_RSA_X_509
    CKM_RSA_PKCS
    ...
    CKM_SHA256_HMAC_GENERAL
    CKM_SSL3_MD5_MAC
    
    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 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,
    CKM_AES_CFB128,CKM_AES_XTS,CKM_AES_XCBC_MAC
    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_SHA224,CKM_SHA224_HMAC,...CKM_SHA512_256_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_SHA224_RSA_PKCS,
    CKM_SHA256_RSA_PKCS,CKM_SHA384_RSA_PKCS,CKM_SHA512_RSA_PKCS
    swrand: No mechanisms presented.
    n2rng/0: No mechanisms presented.
    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
    n2cp/0: CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES3_CBC, \
         ...CKM_SSL3_SHA1_MAC
    
  • 列出可用的加密机制。

    策略确定可使用的机制。管理员负责设置策略。管理员可以选择禁用特定提供者的机制。–p 选项显示管理员设置的策略允许的机制列表。

    % cryptoadm list -p [provider=provider]
    User-level providers:
    =====================
    /usr/lib/security/$ISA/pkcs11_kernel.so: \
         all mechanisms are enabled.random is enabled.
    /usr/lib/security/$ISA/pkcs11_softtoken.so: \
         all mechanisms are enabled, random is enabled.
    /usr/lib/security/$ISA/pkcs11_tpm.so: all mechanisms are enabled.
    Kernel 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.
    n2rng/0: all mechanisms are enabled. random is enabled.
    ncp/0: all mechanisms are enabled.
    n2cp/0: all mechanisms are enabled.

以下示例说明 cryptoadm list 命令的其他特定用途。

示例 3-11  列出特定提供者的加密信息

cryptoadm options 命令中指定提供者可将输出限制为仅输出适用于提供者的信息。

# 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,....

# 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 ar 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.
示例 3-12  仅查找用户级加密机制

在以下示例中,列出了用户级库 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
示例 3-13  确定哪些加密机制执行哪些功能

机制执行特定加密函数,如签名或密钥生成。–v –m 选项显示每个机制及其功能。

在本实例中,管理员要确定 CKM_ECDSA* 机制可用于哪些功能。

% cryptoadm list -vm
User-level providers:
=====================
Provider: /usr/lib/security/$ISA/pkcs11_kernel.so
Number of slots: 3
Slot #2
Description: ncp/0 Crypto Accel Asym 1.0
...
CKM_ECDSA                    163  571  X  .  .  .  X  .  X  .  .  .  .  .  .  .
...

Provider: /usr/lib/security/$ISA/pkcs11_softtoken.so
...
CKM_ECDSA       112 571  .  .  .  .  X  .  X  .  .  .  .  .  .  .  .
CKM_ECDSA_SHA1  112 571  .  .  .  .  X  .  X  .  .  .  .  .  .  .  .
...
Kernel providers:
=================
...
ecc: CKM_EC_KEY_PAIR_GEN,CKM_ECDH1_DERIVE,CKM_ECDSA,CKM_ECDSA_SHA1
...

    列表内容表明这些机制可从用户级提供者获得:

  • CKM_ECDSACKM_ECDSA_SHA1-作为 /usr/lib/security/$ISA/pkcs11_softtoken.so 库中的软件实现

  • CKM_ECDSA-通过 /usr/lib/security/$ISA/pkcs11_kernel.so 库中的 ncp/0 Crypto Accel Asym 1.0 加速

    条目中的每一项代表机制的一条相关信息。对于这些 ECC 机制,该列表指示以下内容:

  • 最小长度-112 字节

  • 最大长度-571 字节

  • 硬件-硬件是否可用。

  • 加密-不可用于加密数据。

  • 解密-不可用于解密数据。

  • 摘要-不可用于创建消息摘要。

  • 签名-用于对数据签名。

  • 签名 + 恢复-不可用于对能从签名中恢复的数据签名。

  • 验证-用于验证签名数据。

  • 验证 + 恢复-不可用于验证能从签名中恢复的数据。

  • 密钥生成-不可用于生成私钥。

  • 密钥对生成-不可用于生成密钥对。

  • 包装-不可用于包装。即加密,现有密钥。

  • 解包-不可用于将已包装的密钥解包。

  • 派生-不可用于从基本密钥派生新密钥。

  • EC 功能-前面的项未涵盖的缺少的 EC 功能