【安全】GSS-API详解

作者:周邦涛(Timen)
Email:[email protected]
转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details/26280565

1. 简介

通用安全服务应用程序编程接口(Generic Security Service Application Program Interface),也叫GSSAPIGSS-API,以一种统一的模式为使用者提供机制无关,平台无关,程序语言环境无关,可移植的安全服务。程序员在编写应用程序时,可以应用通用的安全机制。开发者不必针对任何特定的平台、安全机制、保护类型或传输协议来定制安全实现。使用 GSS-API,程序员可忽略保护网络数据方面的细节。使用 GSS-API 编写的程序在网络安全方面具有更高的可移植性。这种可移植性是通用安全服务 API 的一个特点。

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

【安全】GSS-API详解_第1张图片

图1 GSS-API层次关系

GSS-API并不提供任何的安全机制,而是由安全机制提供方在实现安全的机制的基础上,实现GSS-API接口规范(通常是随着安全软件一同安装的库文件)。从而向应用程序编写者提供独立于安全机制提供方的GSS-API,这样,如果改变了底层安全机制(同样是实现了GSS-API规范的),那么应用不需要做任何改变。

2. 详解

以下主要讲述GSS-API的工作原理,功能,可移植性,提供的安全服务,可用的机制以及语言绑定等

2.1 工作原理

前边说过GSS-API并不提供任何安全机制,而是由第三方提供的,GSS-API的最显著功能是交换跟上层应用程序透明的加密消息(tokens)。应用程序的客户端和服务器端负责传送被各自GSS-API实现所分配的tokens。由于GSS-API的底层安全机制本身提供消息加密,所以GSS-API tokens可以在不安全的网络环境下进行传输。在交换一定数量的tokens之后,客户端和服务器端的GSS-API实现便会通知各自的本地应用程序说安全上下文(security context)已经建立。

 一旦安全上下文(security context)建立,敏感的应用程序消息便能被客户端和服务器端的GSS-API加密,GSS-API提供的典型保护方式包括保密(secrecy)和认证(authenticity)。GSS-API还可以提供用于远程用户和主机认证的本地保障。

GSS-API还包含一个诊断的伪机制(pseudo mechanism)——SPNEGO,它用于发现新的安全机制,并用其验证,具体的细节,请看我的博客

2.2 功能

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

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

        3. 装换数据

        4. 检查错误

        5. 授予用户特权

        6. 显示信息

        7. 比较标识

2.3 可移植性

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

        2. 协议无关性。GSS-API 与任何通信协议或协议套件均无关。例如,GSS-API 可用于使用套接字、RCP 或 TCP/IP 的应用程序。

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

        4. 保护质量无关性。保护质量 (Quality of Protection, QOP) 是指一种算法类型,用于加密数据或生成加密标记。通过 GSS-API,程序员可使用 GSS-API 所提供的缺省设置忽略 QOP。另一方面,应用程序可以根据需要指定 QOP。

2.4 提供的安全服务

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

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

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

2.5 可用的底层安全机制

        1. Kerberos v5

        2. Diffie-Hellman

        3. SPNEGO(伪机制)

2.6 GSS-API的语言绑定

        1. C语言绑定

        2. Java语言绑定(jGSS)--请看我的博客——【Java安全体系】GSS-API之Java语言绑定(jgss)

2.7 GSS-API和Kerberos的关系

Kerberos是一种GSS-API的底层安全机制,也即它实现了安全机制同时实现了GSS-API规范定义的接口。可以认为Kerberos实现了GSS-API(实际上Kerberos还有自身的一些功能)

3. 几个重要元素

         (待续)

4. 总结

本文介绍了GSS-API的基本概念,并且讲述了GSS-API可以提供的几种功能和服务,然后讲解了GSS-API的语言绑定以及与Kerberos的关系。你可以通过本文了解到GSS-API的一般模式和基本概念。

5. 参考资料

  1. http://docs.oracle.com/cd/E24847_01/html/E22200/overview-61.html
  2. http://os.chinaunix.net/a2009/0707/995/000000995908.shtml
  3. http://en.wikipedia.org/wiki/Generic_Security_Services_Application_Program_Interface
作者:周邦涛(Timen)
Email:[email protected]
转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details/26280565

你可能感兴趣的:(编程语言/Java)