GSS-API 介绍

文章推薦指數: 80 %
投票人數:10人

这种可移植性是通用安全服务API 的一个特点。

GSS-API 是一个以通用方式为调用方提供安全服务的框架。

许多底层机制和技术(如Kerberos v5 或公钥 ... DocumentationHome >Solaris开发者安全性指南 >第4章编写使用GSS-API的应用程序 >GSS-API介绍Solaris开发者安全性指南Previous:第3章编写PAM应用程序和服务Next:GSS-API的重要元素GSS-API介绍 使用GSS-API,程序员在编写应用程序时,可以应用通用的安全机制。

开发者不必针对任何特定的平台、安全机制、保护类型或传输协议来定制安全实现。

使用GSS-API,程序员可忽略保护网络数据方面的细节。

使用GSS-API编写的程序在网络安全方面具有更高的可移植性。

这种可移植性是通用安全服务API的一个特点。

GSS-API是一个以通用方式为调用方提供安全服务的框架。

许多底层机制和技术(如Kerberosv5或公钥技术)都支持GSS-API框架,如下图中所示。

图4–1GSS-API层 从广义上讲,GSS-API主要具有以下两种功能: GSS–API可创建一个安全上下文,应用程序可在该上下文中相互传递数据。

上下文是指两个应用程序之间的信任状态。

由于共用同一个上下文的应用程序可相互识别,因此可以允许在上下文存在期间进行数据传送。

GSS–API可向要传送的数据应用一种或多种类型的保护,称为安全服务。

安全服务在GSS-API中的安全服务中进行介绍。

此外,GSS-API还可执行以下功能: 转换数据 检查错误 授予用户权限 显示信息 比较标识 GSS-API中包括许多支持函数和便利函数。

使用GSS-API的应用程序的可移植性 GSS-API为应用程序提供了以下几种类型的可移植性: 机制无关性。

GSS-API提供了一个用于实现安全性的通用接口。

通过指定缺省的安全机制,应用程序无需了解要应用的机制以及该机制的任何详细信息。

协议无关性。

GSS–API与任何通信协议或协议套件均无关。

例如,GSS–API可用于使用套接字、RPC(远程过程调用)或TCP/IP的应用程序。

RPCSEC_GSS是用于将GSS-API与RPC顺利集成的附加层。

有关更多信息,请参见使用GSS-API的远程过程调用。

平台无关性。

GSS-API与运行应用程序的操作系统的类型无关。

保护质量无关性。

保护质量(QualityofProtection,QOP)是指一种算法类型,用于加密数据或生成加密标记。

通过GSS-API,程序员可使用GSS-API所提供的缺省设置忽略QOP。

另一方面,应用程序可以根据需要指定QOP。

GSS-API中的安全服务 GSS-API提供了三种类型的安全服务: 验证-验证是GSS-API提供的基本安全性,它是指对身份进行验证。

如果用户通过了验证,则系统会假设其有权以该用户名进行操作。

完整性-完整性是指对数据的有效性进行验证。

即使数据来自有效用户,数据本身也可能会损坏或遭到破坏。

完整性可确保消息与预期的一样完整(未增减任何内容)。

GSS-API提供的数据附带有一个名为消息完整性代码(MessageIntegrityCode,MIC)的加密标记。

MIC可用于证明收到的数据与发送者所传送的数据是否相同。

保密性-保密性可确保拦截了消息的第三方难以阅读消息内容。

验证和完整性机制都不会修改数据。

如果数据由于某种原因而被拦截,则其他人可以阅读该数据。

因此,可通过GSS-API对数据进行加密,前提是提供了支持加密的基础机制。

这种数据加密称为保密性。

GSS-API中的可用机制 当前实现的GSS-API可使用以下机制:Kerberosv5TM、Diffie-Hellman和SPNEGO。

有关Kerberos实现的更多信息,请参见《系统管理指南:安全性服务》中的第 20 章“Kerberos服务介绍”。

如果任何系统上运行了能够识别GSS-API的程序,应在该系统上安装和运行Kerberosv5。

使用GSS-API的远程过程调用 针对网络应用程序使用RPC(RemoteProcedureCall,远程过程调用)协议的程序员可以使用RPCSEC_GSS来提供安全性。

RPCSEC_GSS是位于GSS-API上面的一个独立层。

RPCSEC_GSS可提供GSS-API的所有功能,但其方式是针对RPC进行了调整的。

实际上,RPCSC_GSS可用于向程序员隐藏GSS-API的许多方面,从而使RPC安全性具有更强的可访问性和可移植性。

有关RPCSEC_GSS的更多信息,请参见《ONC+Developer’sGuide》中的“AuthenticationUsingRPCSEC_GSS”。

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

图4–2RPCSEC_GSS和GSS-APIGSS-API的限制 虽然GSS-API使数据保护变得很简单,但是它回避某些任务的做法并不符合GSS-API的一般本性。

因此,GSS-API不执行以下活动: 为用户或应用程序提供安全凭证。

凭证必须由基础安全机制提供。

GSS-API确实允许应用程序自动或明确获取凭证。

在应用程序之间传送数据。

应用程序负责处理对等应用程序之间的所有数据传送,无论数据是与安全有关的数据还是明文数据。

区分不同类型的传送数据。

例如,GSS-API无法识别数据包是普通数据还是经过加密的数据。

指示由于异步错误而导致的状态。

缺省情况下保护多进程程序的不同进程之间已发送的信息。

分配要传递到GSS-API函数的字符串缓冲区。

请参见GSS-API中的字符串和类似数据。

解除分配GSS-API数据空间。

此内存必须通过gss_release_buffer()和gss_delete_name()等函数明确解除分配。

GSS-API的语言绑定 本文档目前仅介绍GSS-API的C语言绑定,即函数和数据类型。

现已推出Java绑定版本的GSS-API。

JavaGSS-API包含通用安全服务应用编程接口(GenericSecurityServiceApplicationProgramInterface,GSS-API)的Java绑定,如RFC2853中所定义。

有关GSS-API的更多参考信息 以下两个文档提供有关GSS-API的更多信息: GenericSecurityServiceApplicationProgramInterface文档(ftp://ftp.isi.edu/in-notes/rfc2743.txt)概述了GSS-API的概念。

GenericSecurityServiceAPIVersion2:C-Bindings文档(ftp://ftp.isi.edu/in-notes/rfc2744.txt)讨论了基于C语言的GSS-API的具体信息。

Previous:第3章编写PAM应用程序和服务Next:GSS-API的重要元素 ©2010,OracleCorporationand/oritsaffiliates



請為這篇文章評分?