Solaris 开发者安全性指南

GSS-API 介绍

使用 GSS-API,程序员在编写应用程序时,可以应用通用的安全机制。开发者不必针对任何特定的平台、安全机制、保护类型或传输协议来定制安全实现。使用 GSS-API,程序员可忽略保护网络数据方面的细节。使用 GSS-API 编写的程序在网络安全方面具有更高的可移植性。这种可移植性是通用安全服务 API 的一个特点。

GSS-API 是一个以通用方式为调用方提供安全服务的框架。许多底层机制和技术(如 Kerberos v5 或公钥技术)都支持 GSS-API 框架,如下图中所示。

图 4–1 GSS-API 层

该图显示了应用程序和安全机制之间的 GSS-API 和协议层。

从广义上讲,GSS-API 主要具有以下两种功能:

  1. GSS–API 可创建一个安全上下文,应用程序可在该上下文中相互传递数据。上下文是指两个应用程序之间的信任状态。由于共用同一个上下文的应用程序可相互识别,因此可以允许在上下文存在期间进行数据传送。

  2. GSS–API 可向要传送的数据应用一种或多种类型的保护,称为安全服务。安全服务在GSS-API 中的安全服务中进行介绍。

此外,GSS-API 还可执行以下功能:

GSS-API 中包括许多支持函数和便利函数。

使用 GSS-API 的应用程序的可移植性

GSS-API 为应用程序提供了以下几种类型的可移植性:

GSS-API 中的安全服务

GSS-API 提供了三种类型的安全服务:

GSS-API 中的可用机制

当前实现的 GSS-API 可使用以下机制:Kerberos v5TM、Diffie-Hellman 和 SPNEGO。有关 Kerberos 实现的更多信息,请参见《系统管理指南:安全性服务》中的第 20  章 “Kerberos 服务介绍”。如果任何系统上运行了能够识别 GSS-API 的程序,应在该系统上安装和运行 Kerberos v5。

使用 GSS-API 的远程过程调用

针对网络应用程序使用 RPC(Remote Procedure Call,远程过程调用)协议的程序员可以使用 RPCSEC_GSS 来提供安全性。 RPCSEC_GSS 是位于 GSS-API 上面的一个独立层。 RPCSEC_GSS 可提供 GSS-API 的所有功能,但其方式是针对 RPC 进行了调整的。 实际上,RPCSC_GSS 可用于向程序员隐藏 GSS-API 的许多方面,从而使 RPC 安全性具有更强的可访问性和可移植性。 有关 RPCSEC_GSS 的更多信息,请参见《ONC+ Developer’s Guide》中的“Authentication Using RPCSEC_GSS”

下图说明了 RPCSEC_GSS 层在应用程序和 GSS-API 之间的位置。

图 4–2 RPCSEC_GSS 和 GSS-API

该图显示了为远程过程调用提供安全性的 RPCSEC_GSS 层。

GSS-API 的限制

虽然 GSS-API 使数据保护变得很简单,但是它回避某些任务的做法并不符合 GSS-API 的一般本性。 因此,GSS-API 执行以下活动:

GSS-API 的语言绑定

本文档目前仅介绍 GSS-API 的 C 语言绑定,即函数和数据类型。 现已推出 Java 绑定版本的 GSS-API。 Java GSS-API 包含通用安全服务应用编程接口 (Generic Security Service Application Program Interface, GSS-API) 的 Java 绑定,如 RFC 2853 中所定义。

有关 GSS-API 的更多参考信息

以下两个文档提供有关 GSS-API 的更多信息: