通用安全服务应用程序接口(Generic Security Service Application Program Interface),以一种统一的应用程序接口为用户提供与安全机制无关,操作平台无关,程序实现语言无关,可移植的安全服务。用户在编写应用程序时,可以应用该通用的安全机制,用户不必针对任何特定的平台、安全机制、传输协议来定制安全实现。使用GSS-API 编写的程序在网络安全方面具有更高的可移植性。

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

GSSAPI并不提供任何的安全机制,安全机制提供方在实现安全机制的基础上,实现了GSSAPI接口规范。从而向用户提供独立于安全机制提供方的GSS-API,如果改变了底层安全机制实现,那么应用程序不需要做任何改变。

从广义上讲,GSSAPI主要做两件事:

GSSAPI创建了一个安全上下文(Security Context),通过Security Context,应用程序之间可以安全地传递数据。Security Context可以被认为是应用程序之间的一种“信任状态”。共享Security Context的应用程序信任彼此,只要Security Context持续,应用程序之间的数据就可以安全传输;

GSSAPI提供一种或多种类型的安全保护,称为安全服务,安全服务应用于安全传输数据。

GSSAPI应用程序可移植性

GSSAPI为应用程序提供了几种类型的可移植性:

安全机制无关性:GSS-API 提供了一个用于实现安全性的通用接口。通过指定缺省的安全机制,应用程序无需了解应用的安全机制以及该机制的任何详细信息;

协议独立性:GSS-API独立于任何通信协议或协议套件,可以与套接字Socket,RCP或TCP / IP的应用程序使用

操作平台独立性。GSS-API忽略了运行应用程序的操作系统类型;

保护质量无关性:保护质量(Quality of Protection, QOP) 是一种算法类型,用于加密数据或生成加密令牌。通过GSS-API,用户可使用GSS-API 所提供的缺省设置,应用程序也可以根据需要来指定QOP设置。

GSSAPI安全服务支持

        1. 验证(Authentication)-验证是GSS-API 提供的基本安全服务。验证是指对身份进行验证。如果用户通过了验证,则系统会假设其有权以该用户进行操作;

        2.完整性(Integrity)-完整性是指对数据的有效性进行验证。即使数据来自有效用户,数据本身也可能会损坏或遭到破坏。完整性可确保消息与预期的一样完整,未增减任何内容。GSS-API 提供的数据附带有一个名为消息完整性代码(Message Integrity Code, MIC) 的加密标记。MIC 可用于证明收到的数据与发送者所传送的数据是否相同;

        3.保密性(Confidentiality)-保密性可确保拦截了消息的第三方难以读取消息内容。验证和完整性机制都不会修改数据。如果数据由于某种原因而被拦截,则其他人可以读取该数据。因此,可通过GSS-API 对数据进行加密,提供了支持加密的安全机制;

GSSAPI常用的底层安全机制

根据https://tools.ietf.org/html/rfc2743描述,常用的安全机制实现了GSSAPI接口如下:

  1. Kerberos V5
  2. X.509身份验证框架

GSS-API语言绑定

  1. C语言绑定, 参见MIT developer documentation. 
  • Java语言绑定(JGSS),详情参见:


关注微信服务号,手机看文章
关注微信服务号,手机看文章