本手册介绍用于 Solaris 操作系统 (Solaris OS) 中安全功能的公共应用程序编程接口 (application programming interface, API) 和服务提供者接口 (service provider interface, SPI)。本章介绍以下两个方面的内容:
本手册介绍了 Solaris 操作系统中安全功能的公共 API 和公共 SPI。有关如何从系统管理员的角度实现这些安全功能的信息,请参见《系统管理指南:安全性服务》中的第 1 章 “安全性服务(概述)”。
Solaris OS 提供了一个基于标准行业接口的网络安全体系结构。通过使用标准化的接口,应当无需随着安全技术的演变对使用或提供加密服务的应用程序进行任何修改。
为了实现系统安全,Solaris OS 提供了进程权限。进程权限是基于超级用户的 UNIX 标准模型的替换模型,可用来授予对特权应用程序的访问权限。系统管理员需要为用户指定一组允许其访问特权应用程序的进程权限。这样,用户不必成为超级用户即可使用特权应用程序。
系统管理员可以使用进程权限来将有限的权限授予用户,以覆盖系统安全,而不是授予用户完全的超级用户权限。相应地,创建新特权应用程序的开发者应当测试特定的权限,而不是检查 UID 是否等于 0。请参见第 2 章,开发特权应用程序。
为了实现非常严格的系统安全,Sun Microsystems, Inc. 提供了 Trusted Solaris 操作系统,但这不在本书的讨论范围之内。Trusted Solaris 操作系统允许系统管理员指定能够由特定用户访问的应用程序和文件。有关更多信息,请参见 http://wwws.sun.com/software/solaris/trustedsolaris/。
网络安全体系结构使用行业标准接口,如 PAM、GSS-API、SASL 和 RSA Security Inc. 的 PKCS#11 加密令牌接口 (Cryptographic Token Interface, Cryptoki)。通过使用标准化的协议和接口,开发者可以编写无需随安全技术演变而进行修改的消费方和提供者应用程序。
使用安全服务的应用程序、库或内核模块称作消费方,向消费方提供安全服务的应用程序称作提供者,还可以称作插件。用来实现加密操作的软件称作机制。机制不只是算法,其中还包括算法的应用方式。例如,将 DES 算法应用于验证功能是一种机制,而将 DES 应用于逐块加密的数据保护功能是另外一种机制。
使用网络安全体系结构,消费方的开发者将不再需要编写、维护和优化加密算法。可以将经过优化的加密机制作为网络安全体系结构的一部分提供。
Solaris OS 提供了以下几个公共 Solaris 安全接口:
PAM-可插拔验证模块。PAM 模块主要用于系统对用户进行初始验证。用户可以通过 GUI(图形用户界面)、命令行或其他方法进入系统。除了验证服务以外,PAM 还提供用来管理帐户、会话和口令的服务。诸如 login、rlogin 和 telnet 之类的应用程序便是典型的 PAM 服务消费方。PAM SPI 服务由安全提供者(如 Kerberos v5 和 Smartcard)提供。请参见第 3 章,编写 PAM 应用程序和服务。
GSS-API-通用安全服务应用编程接口。GSS-API 在对等应用程序之间提供安全的通信,还提供验证、完整性和保密性服务。在 Solaris 中实现的 GSS-API 可以使用 Kerberos v5、SPNEGO 和 Diffie-Hellman 加密机制。GSS-API 主要用于设计或实现安全的应用程序协议。GSS-API 可以向其他种类的协议(如 SASL)提供服务。GSS-API 通过 SASL 来向 LDAP(轻量目录访问协议)提供服务。
GSS-API 通常由两个对等应用程序在最初建立了凭证之后通过网络进行通信时使用。GSS-API 由 NFS
、ftp
及其他登录应用程序使用。
有关 GSS-API 的介绍,请参见第 4 章,编写使用 GSS-API 的应用程序。第 5 章,GSS-API 客户机示例和第 6 章,GSS-API 服务器示例介绍了两个典型 GSS-API 应用程序的源代码。附录 A,基于 C 的 GSS-API 样例程序 提供了 GSS-API 示例的代码列表。附录 B,GSS-API 参考 提供了 GSS-API 的参考资料。附录 C,指定 OID 说明了如何指定非缺省机制。
SASL-简单验证和安全层。SASL 主要由协议使用,用来进行验证并提供保密性和数据完整性服务。SASL 适用于基于网络的较高级别的应用程序,这些应用程序使用动态安全协商机制来保护会话。LDAP 是 SASL 的一个众所周知的消费方。SASL 与 GSS-API 相似,但 SASL 的级别比 GSS-API 略高一些。SASL 使用 GSS-API 服务。请参见第 7 章,编写使用 SASL 的应用程序。
加密框架-加密框架是 Solaris OS 中加密服务的主干。该框架提供标准的 PKCS #11 接口,这些接口适用于加密服务的消费方和提供者。该框架有两个部分:用户级应用程序的用户加密框架和内核级模块的内核加密框架。连接到框架的消费方无需了解有关所安装加密机制的专业知识;插入到框架中的提供者不包括针对不同类型消费方的特殊代码。
加密框架的消费方包括安全协议、某些机制和需要执行加密的应用程序。框架的提供者是加密机制,也可以是硬件和软件插件中的其他机制。有关加密框架的概述,请参见第 8 章,Solaris 加密框架介绍。如需了解如何编写使用框架中服务的用户级应用程序,请参见第 9 章,编写用户级加密应用程序和提供者。
用于加密框架的库基于 RSA PKCS#11 v2.11 规范而实现。消费方和提供者都可以通过标准的 PKCS #11 调用来与用户级加密框架进行通信。
智能卡-智能卡终端上 IFD(接口设备)处理程序的开发者可以通过智能卡框架的终端接口来向消费方提供服务。第 10 章,使用智能卡框架提供了有关这些接口的信息。
Java JCE-Java 加密扩展 (Java Cryptography Extension, JCE) 为需要加密服务的 Java Web 应用程序和服务提供了 API,不过,本手册未对其进行介绍。请参见 http://www.java.sun.com/products/jce/。