GSS-API 与Kerberos 的关系

Kerberos 是GSS-API 的实现,当然也有其他的实现如NTLm,dce之类的,如下图所适:

-----------------------------------

应用程序(APP)

-----------------------------------

RPC(可选)

------------------------------------

GSS API

------------------------------------

PROVIDER(提供商实现api)

------------------------------------

kerberos / ntlm / dce

-------------------------------------

# JAAS/GSS-API/SASL/Kerberos简介

如果将Kerberos引入到一个分布式系统中提供身份认证与服务授权时,还涉及到一系列与安全有关的框架技术与接口协议,包括:如何对认证的对象或访问的资源进行抽象?应用通过什么样的接口进行Kerberos认证?如何保障跨节点通信时的安全传输?Java Security中均提供了现成的实现。

JAAS

JAAS是Java Authentication and Authorization Service的缩写,提供了认证与授权相关的服务框架与接口定义:

前一篇文章<Java认证与授权服务JAAS基础概念>已经做了详细的介绍。

2. GSS-API

Java GSS-API是 Generic Security Services Application Program Interface的缩写,主要应用于跨应用程序之间的安全信息交换(secure message exchanges), RFC 2853提供了详细的接口协议定义。应用程序可以通过GSS-API访问Kerberos服务。

JAAS的认证请求,通常先于GSS-API的调用。也就是说,先通过JAAS的接口完成登录认证,而后通过GSS-API来确保后面交换信息的安全性。两者经常被联合一起使用,但也可以单独使用,例如,基于JAAS也可以完成一些简单的认证与授权,一些别的场景下,也可以只使用GSS-API而不使用JAAS。

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

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

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

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

    RPCSEC_GSS 是用于将 GSS-API 与 RPC 顺利集成的附加层。有关更多信息,请参见使用 GSS-API 的远程过程调用。

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

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

2.2 GSS-API 中的安全服务

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

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

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

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

SASL

SASL是_Simple Authentication and Security Layer_的缩写,主要应用于跨节点通信时的认证与数据加密,如Client与Server基于RPC进行通信时,可以基于SASL来提供身份认证以及数据加密能力。
当SASL中使用Kerberos服务时,也需要使用到GSS-API来与Kerberos之间进行安全信息交换。

Kerberos

回忆一下之前一篇文章<图解Kerberos协议原理>中讲到的Kerberos认证与授权的几个关键步骤:

  1. [Login] 用户输入用户名/密码信息进行登录。
  2. [Client/AS] Client到AS进行认证,获取TGT。
  3. [Client/TGS] Client基于TGT以及Client/TGS Session Key去TGS去获取Service Ticket(Client-To-Server Ticket)。
  4. [Client/Server] Client基于 Client-To-Server Ticket以及Client/Server SessionKey去Server端请求建立连接,该过程Client/Server可相互进行认证。
  5. [Client/Server] 连接建立之后,Client可正常往Server端发送服务请求。

第1步,在Client端完成对密码信息的单向加密。
第2步,基于JAAS进行认证。
第3,4步,则基于GSS-API进行交互。
第4,5步建立连接与发送服务请求的过程,则通常基于SASL框架。

总结

本文主要介绍了在一个分布式系统中引入Kerberos认证时所涉及到的框架技术,简要总结如下:

===================================================================================================

数字证书: 由CA(大家都信赖的第三方机构)派发,内容包括:

(1).Common Name(证书所有人姓名,简称CN,其实就是证书的名字)

   (2).Version(版本,现在一般是V3了)

   (3).Issuer(发证机关)

   (4).Validity(有效日期)

   (5).Subject(证书信息,你会发现它和Issuer里面的内容是一样的)

   (6).Subject's Public Key Info(证书所有人的公钥)

   (7).Extension(扩展信息)

   (8).Certificate Signature Algorithm(公钥加密算法)

(9).证书的数字签名(生成步骤是: 先将证书内容hash,再对hash结果用CA的私钥和证书中的加密算法加密,得到的就是数字签名)

验证证书是否为真的方法(这个验证是为了保证证书的内容真的是CA所写,而不是伪造的,比如说证书的内容上写了允许xx使用xx公司的xx功能):

将证书里的数字签名使用CA的公钥解密得到A,同时对证书内容进行hash得到B,比对A和B是否一致,如果一致,则认为证书是CA颁发的,即真的,

所以说数字签名的作用是用来验证证书是否为真(证书为真即代表里面的内容都是真的,包括证书所有人公钥等)

验证证书持有人是否为本人的方法(为了避免真的证书被人盗用,所以也需要这个验证):

验证方使用证书中的公钥加密一段信息发给 证书持有人,如果证书持有人是本人,那他肯定有证书中公钥对应的私钥,那他就肯定能解密这段信息,

只要把解密的信息再发给验证方,即可证明自己是本人,反之,则认为不是本人

通过以上2个验证,即可以保证发过来的证书是真的,并且持有人也是本人,

-------------------------------------------------------------------------

ssl: 是一种间于传输层(比如TCP/IP)和应用层(比如HTTP)的协议. 它通过"握手协议"和"传输协议"来解决传输安全的问题.

SSL的基本思想是用非对称加密来建立链接(握手阶段),用对称加密来传输数据(传输阶段)。这样既保证了密钥分发的安全,也保证了通信的效率(因为非对称加密更耗时)。

sasl: 是作用在认证层上,是一种身份认证框架,sasl验证架构决定服务器本身如何存储客户端的身份证书以及如何核验客户端提供的密码。

如果客户端能成功通过验证,服务器端就能确定用户的身份, 并借此决定用户具有怎样的权限。

sasl的常见具体实现有plain、kerberos等, 就好比slf4j是框架,log4j是具体实现

如果要将Kerberos与SASL一起使用,则将需要另一种间接级别:GSSAPI(最常与Kerberos一起使用,但也可以允许其他机制)。

SSL和SASL区别:

1. SASL用于认证,SSL主要用于对传输的数据进行加密

2. SASL允许选择不同的机制来对客户端进行身份验证,如可以选择使用GSSAPI,Kerberos,NTLM等,而SSL被绑定为基于证书进行身份验证。

JAAS: 是用于处理身份验证和授权的通用Java框架

数字证书、ssl、sasl(GSSAPI,Kerberos)、jaas简单解释相关推荐

  1. 数字证书SSL品牌分类总结

    为了方便大家直观的分辨,这里给大家分成了国内品牌和国际品牌两种 国产ssl证书品牌 1.JoySSl JoySSL是网盾数科自研推出的新一代https数字证书,也是目前为数不多的中国自主品牌SSL证书 ...

  2. SSL 与 数字证书 的基本概念和工作原理

    SSL是让人头大的东西,看起来很复杂,我学过信息安全课,但是对SSL仍然是模糊一片.对于数字证书也是一知半解,从来没有去认真研究过.只知道个大概,"反正就是对称加密和非对称加密", ...

  3. [转]SSL 与 数字证书 的基本概念和工作原理

    源地址:http://www.linuxde.net/2012/03/8301.html ======================================================= ...

  4. SSL数字证书(一)CA、根证书与数字证书

    数字证书原理(〇)认识SSL SSL数字证书(一)CA.根证书与数字证书 SSL数字证书(二)使用makecert.exe签发证书 SSL数字证书(三)使用 openssl 生成证书 网络安全无疑是现 ...

  5. SSL数字证书(三)使用 openssl 生成证书

    数字证书原理(〇)认识SSL SSL数字证书(一)CA.根证书与数字证书 SSL数字证书(二)使用makecert.exe签发证书 SSL数字证书(三)使用 openssl 生成证书 转载自<使 ...

  6. SSL数字证书(二)使用makecert.exe签发证书

    数字证书原理(〇)认识SSL SSL数字证书(一)CA.根证书与数字证书 SSL数字证书(二)使用makecert.exe签发证书 SSL数字证书(三)使用 openssl 生成证书 首先放出几个参考 ...

  7. 公钥、私钥、数字签名和数字证书的概念及解密

    http协议的数据传递是明文的, 也就是从服务器传递给浏览器的内容是明文的, 这个信息如果被截取了,内容也就完全暴露了.所以大部分的互联网网站和应用使用的基本都是https协议,在申请和配置网站的ht ...

  8. Java加密与解密的艺术~数字证书详解

    数字证书具备常规加密/解密必要的信息,包含签名算法,可用于网络数据加密/解密交互,标识网络用户(计算机)身份.数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公钥的载体.依靠数字证 ...

  9. 安装软件和驱动程序需要微软数字签名无法安装?数字签名和数字证书区别

    1.安装软件和驱动程序需要微软数字签名无法安装 方法一: 1.以Win10为例,Win7同样适用,首先我们在键盘上同时按下"Windows键"+"R键",调出运 ...

  10. CA、根证书、数字证书、数字证书颁发的流程

    数字证书原理(〇)认识SSL SSL数字证书(一)CA.根证书与数字证书 SSL数字证书(二)使用makecert.exe签发证书 SSL数字证书(三)使用 openssl 生成证书 网络安全无疑是现 ...

最新文章

  1. Python List append()方法
  2. 【leetcode❤python】Move Zeroes
  3. 学习Caffe(二)使用Caffe:Caffe加载模型+Caffe添加新层+Caffe finetune
  4. C++网络编程快速入门(三):阻塞与非阻塞式调用网络通信函数
  5. 垂直串联六关节机器人调试手册_不止下棋能赢你!新型协作机器人样样精通
  6. 腾讯砸1亿斗地主欢乐豆签约前《英雄联盟》电竞职业选手Uzi
  7. 提高mysql性能_提升MySQL性能值得借鉴的几个简易方法
  8. 高性能的服务器的架设
  9. Java之品优购课程讲义_day09(2)
  10. 发那科机器人xyz的方向_最全 | 发那科工业机器人示教器详细介绍
  11. php发送curl最快方式,使用PHP cURL发送短信的简单GET请求
  12. 如何把一个eclipse安装包放到eclipse中
  13. 高速公路联网收费二义性路径识别系统原理及开发
  14. png图片的文件存储格式
  15. 车载以太网交换机功能和应用案例汇总, 适用于AVB/TSN, 802.1AS(gPTP时钟同步)
  16. 西门子PLC内部的数据类型大全
  17. Web前端期末大作业-在线手机商城网站设计(HTML+CSS+JS)
  18. grep命令的-P选项
  19. antd表格显示分页怎么取消_新买手机号码打电话显示骚扰推销怎么解除取消?...
  20. iframe属性即使用

热门文章

  1. 电子通讯录的基本模板
  2. android音乐播放器开发思路,手把手教你做音乐播放器(一)功能规划
  3. 【Java 8 in Action】Stream
  4. 哈工大自然语言处理实验1——汉语分词系统
  5. 如何用pe安装服务器系统安装系统教程视频,微pe安装系统教程视频
  6. JVisualVM 简介
  7. drools规则引擎初探
  8. windows查看本机的IP地址
  9. 怎么查看本机的IP地址
  10. Multisim12使用记录