本章介绍 SolarisTM 加密框架。以下是本章中信息的列表:
要管理和使用 Solaris 加密框架,请参见第 14 章,Solaris 加密框架(任务)。
Solaris 10 1/06:框架库 libpkcs11.so 包含新组件元插槽。元插槽充当一个虚拟插槽,它具有框架中安装的所有令牌和槽的组合功能。实际上,元插槽使应用程序通过单个插槽与任何可用的加密服务透明地连接。
有关更多信息,请参见Solaris 加密框架术语中插槽、元插槽和令牌的定义。
要管理元插槽,请参见 cryptoadm(1M) 手册页。
有关 Solaris 新增功能的完整列表以及 Solaris 发行版的描述,请参见《Solaris 10 新增功能》。
Solaris 加密框架提供用于处理加密要求的算法和 PKCS #11 库的公共存储区。PKCS #11 库按照以下标准实现:RSA Security Inc. 推出的 PKCS #11 加密令牌接口 (Cryptographic Token Interface, Cryptoki)。
在内核级别,框架当前处理 Kerberos 和 IPsec 的加密要求。用户级使用者包括 libsasl 和 IKE。
美国出口法要求应限制使用开放式加密接口。Solaris 加密框架通过要求对内核加密提供器和 PKCS #11 加密提供器签名来满足当前法律规定。有关进一步介绍,请参见第三方软件的二进制文件签名。
框架使加密服务的提供器可以让 Solaris 操作系统 中的许多使用者使用其服务。提供器的另外一个名称是插件。框架允许使用三种类型的插件:
用户级插件-使用 PKCS #11 库(如 pkcs11_softtoken.so.1)提供服务的共享对象。
内核级插件-提供软件中加密算法(如 AES)的实现的内核模块。
框架中的许多算法针对 x86(使用 SSE2 指令集)和 SPARC 硬件进行了优化。
硬件插件-设备驱动程序及其关联的硬件加速器。硬件加速器使操作系统不再处理高开销的加密功能。Sun Crypto 加速器 1000 板就是这样一个示例。
框架为用户级提供器实现了标准接口 PKCS #11 v2.11 库。第三方应用程序可以使用该库来访问提供器。第三方也可以向框架中添加签名库、签名内核算法模块和签名设备驱动程序。pkgadd 实用程序安装该第三方软件时将添加这些插件。有关框架的主要组件图,请参见《Solaris 开发者安全性指南》中的第 8 章 “Solaris 加密框架介绍”。
Algorithms(算法)-加密算法。这些算法是已建立的用于对输入执行加密或散列操作的递归计算过程。加密算法可以是对称算法,也可是非对称算法。对称算法对于加密和解密使用相同的密钥。非对称算法用于公钥加密中,它要求两个密钥。散列函数也是算法。
算法示例包括:
对称算法,如 AES 和 ARCFOUR
非对称算法,例如 Diffie-Hellman 和 RSA
散列函数,如 MD5
Consumers(使用者)-来自提供器的加密服务的用户。使用者可以是应用程序、最终用户或内核操作。
使用者示例包括:
应用程序,如 IKE
最终用户,如运行 encrypt 命令的普通用户
内核操作,例如 IPsec
例如,应用于验证的 DES 机制(如 CKM_DES_MAC)与应用于加密的 DES 机制(如 CKM_DES_CBC_PAD)不同。
Metaslot(元插槽)-提供框架中装入的其他插槽的功能组合的单个插槽。元插槽简化了处理框架中提供的所有提供器功能的工作。使用元插槽的应用程序请求某操作时,元插槽将确定应执行该操作的实际插槽。元插槽功能可以配置,但不需要配置。缺省情况下,元插槽处于打开状态。要配置元插槽,请参见 cryptoadm(1M) 手册页。
Mode(模式)-加密算法的版本。例如,模式 CBC(Cipher Block Chaining,密码块链接)与模式 ECB(Electronic Code Book,电子源码书)不同。AES 算法包含两种模式:CKM_AES_ECB 和 CKM_AES_CBC。
Policy(策略)-由管理员做出的、要使哪些机制可用的选择。缺省情况下,所有提供器和所有机制都可用。禁用任何机制即是对策略的应用。启用已禁用的机制也是对策略的应用。
Providers(提供器)-使用者使用的加密服务。提供器插入到框架中,因此也称为插件。
提供器示例包括:
PKCS #11 库,如 pkcs11_softtoken.so
加密算法模块,如 aes 和 arcfour
设备驱动程序及其关联的硬件加速器,例如 dca/0 加速器
Slot(插槽)-一种或多种加密设备的接口。对应于物理读取器或其他设备接口的每个插槽可能包含令牌。令牌提供框架中加密设备的逻辑视图。
框架为给出提供器的管理员、用户和开发者提供命令:
管理命令-cryptoadm 命令提供用于列出可用提供器及其功能的 list 子命令。普通用户可以运行 cryptoadm list 和 cryptoadm --help 命令。
所有其他 cryptoadm 子命令要求您承担包括加密管理权限配置文件的角色或者成为超级用户。子命令(如 disable、install 和 uninstall)可用于管理框架。有关更多信息,请参见 cryptoadm(1M) 手册页。
svcadm 命令用于管理 kcfd 守护进程和刷新内核中的加密策略。有关更多信息,请参见 svcadm(1M) 手册页。
用户级命令-digest 和 mac 命令提供文件完整性服务。encrypt 和 decrypt 命令保护文件不被窃听。要使用这些命令,请参见使用 Solaris 加密框架保护文件(任务列表)。
第三方提供器的二进制文件签名-elfsign 命令使第三方可以对要在框架中使用的二进制文件签名。可以添加到框架中的二进制文件有 PKCS #11 库、内核算法模块和硬件设备驱动程序。要使用 elfsign 命令,请参见 《Solaris 开发者安全性指南》中的附录 F “打包和签署加密提供者”。
cryptoadm 命令管理正在运行的加密框架。该命令是加密管理权限配置文件的一部分。可以将此配置文件指定给用于安全管理加密框架的角色。cryptoadm 命令管理以下方面:
显示加密提供器的信息
禁用或启用提供器机制
Solaris 10 1/06:禁用或启用元插槽
svcadm 命令用于启用、刷新和禁用加密服务守护进程 kcfd。此命令是 Solaris 服务管理工具 smf 的一部分。svc:/system/cryptosvcs 是加密框架的服务实例。有关更多信息,请参见 smf(5) 和 svcadm(1M) 手册页。
Solaris 加密框架提供了用于检查文件完整性、加密文件和解密文件的用户级命令。独立命令 elfsign 使提供器可以对要在框架中使用的二进制文件签名。
digest 命令-计算用于一个或多个文件或 stdin 的 message digest(消息摘要)。摘要用于验证文件的完整性。摘要功能的示例有 SHA1 和 MD5。
mac 命令-计算一个或多个文件或 stdin 的 message authentication code, MAC(消息验证代码)。MAC 将数据与经过验证的消息相关联。MAC 使接收者可以验证消息是否来自发送者,以及消息是否被篡改。sha1_mac 和 md5_hmac 机制可以计算 MAC。
encrypt 命令-使用对称密码加密文件或 stdin。 encrypt -l 命令列出可用的算法。用户级库中列出的机制可用于 encrypt 命令。框架提供了可进行用户加密的 AES、DES、3DES(Triple-DES,三重 DES)和 ARCFOUR 机制。
decrypt 命令-解密使用 encrypt 命令加密的文件或 stdin。decrypt 命令使用的密钥和机制与用于加密原始文件的密钥和机制相同。
elfsign 命令提供了对要用于 Solaris 加密框架的提供器签名的方法。通常,此命令由提供器的开发者运行。
elfsign 命令具有请求 Sun 提供的证书和对二进制文件进行签名的子命令。另外一个子命令验证签名。未签名的二进制文件无法被 Solaris 加密框架使用。要对一个或多个提供器进行签名,需要 Sun 提供的证书和用于请求该证书的私钥。有关更多信息,请参见 《Solaris 开发者安全性指南》中的附录 F “打包和签署加密提供者”。
第三方可以将其提供器插入到 Solaris 加密框架中。第三方提供器可以是以下对象之一:
必须使用 Sun 提供的证书对提供器对象进行签名。证书请求基于第三方选择的私钥和 Sun 提供的证书。证书请求发送到 Sun,Sun 将注册该第三方并发布证书。第三方然后使用 Sun 提供的证书对其提供器对象进行签名。
可装入的内核软件模块和硬件加速器的内核设备驱动程序也必须在内核中注册。注册通过 Solaris 加密框架 SPI(service provider interface,服务提供器接口)进行。
要安装提供器,第三方应提供用于安装签名的对象和 Sun 提供的证书的软件包。该软件包必须包括证书,并允许管理员将该证书放到安全目录中。有关更多信息,请参见 《Solaris Security for Developers Guide》《Solaris 开发者安全性指南》中的附录 F “打包和签署加密提供者”。
全局区域和每个非全局的区域都有独立的 /system/cryptosvc 服务。在全局区域中启用或刷新加密服务时,kcfd 守护进程会在该全局区域中启动,全局区域的用户级策略将被设置,系统的内核策略也将被设置。在非全局区域中启用或刷新服务时,kcfd 守护进程将在该区域中启动,用户级策略将在该区域中设置。内核策略由全局区域设置。
有关区域的更多信息,请参见《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的第 II 部分, “Zones”。有关用于管理持久性应用程序的服务管理工具的更多信息,请参见《系统管理指南:基本管理》中的第 14 章 “管理服务(概述)” 和 smf(5) 手册页。