博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kerberos简介
阅读量:6843 次
发布时间:2019-06-26

本文共 1608 字,大约阅读时间需要 5 分钟。

Kerberos协议:

Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性。

条件

先来看看Kerberos协议的前提条件:

如下图所示,Client与KDC, KDC与Service 在协议工作前已经有了各自的共享密钥,并且由于协议中的消息无法穿透防火墙,这些条件就限制了Kerberos协议往往用于一个组织的内部, 使其应用场景不同于X.509 PKI。

 

过程

Kerberos协议分为两个部分:

1 . Client向KDC发送自己的身份信息,KDC从Ticket Granting Service得到TGT(ticket-granting ticket), 并用协议开始前Client与KDC之间的密钥将TGT加密回复给Client。

此时只有真正的Client才能利用它与KDC之间的密钥将加密后的TGT解密,从而获得TGT。

(此过程避免了Client直接向KDC发送密码,以求通过验证的不安全方式)

2. Client利用之前获得的TGT向KDC请求其他Service的Ticket,从而通过其他Service的身份鉴别。

 Kerberos协议的重点在于第二部分,简介如下:

 

1.    Client将之前获得TGT和要请求的服务信息(服务名等)发送给KDC,KDC中的Ticket Granting Service将为Client和Service之间生成一个Session Key用于Service对Client的身份鉴别。然后KDC将这个Session Key和用户名,用户地址(IP),服务名,有效期, 时间戳一起包装成一个Ticket(这些信息最终用于Service对Client的身份鉴别)发送给Service, 不过Kerberos协议并没有直接将Ticket发送给Service,而是通过Client转发给Service.所以有了第二步。

2.    此时KDC将刚才的Ticket转发给Client。由于这个Ticket是要给Service的,不能让Client看到,所以KDC用协议开始前KDC与Service之间的密钥将Ticket加密后再发送给Client。同时为了让Client和Service之间共享那个秘密(KDC在第一步为它们创建的Session Key), KDC用Client与它之间的密钥将Session Key加密随加密的Ticket一起返回给Client。

3.    为了完成Ticket的传递,Client将刚才收到的Ticket转发到Service. 由于Client不知道KDC与Service之间的密钥,所以它无法算改Ticket中的信息。同时Client将收到的Session Key解密出来,然后将自己的用户名,用户地址(IP)打包成Authenticator用Session Key加密也发送给Service。

4.    Service 收到Ticket后利用它与KDC之间的密钥将Ticket中的信息解密出来,从而获得Session Key和用户名,用户地址(IP),服务名,有效期。然后再用Session Key将Authenticator解密从而获得用户名,用户地址(IP)将其与之前Ticket中解密出来的用户名,用户地址(IP)做比较从而验证Client的身份。

5.    如果Service有返回结果,将其返回给Client。

本文转自xmgdc51CTO博客,原文链接:http://blog.51cto.com/12953214/1940477 ,如需转载请自行联系原作者
你可能感兴趣的文章
Linux集群和自动化维2.4.2 sed的用法示例
查看>>
《OpenGL ES 3.x游戏开发(上卷)》一1.2 搭建Android开发环境
查看>>
《HTML5实战》——2.6 小结
查看>>
使用 Python 和 Asyncio 编写在线多人游戏(三)
查看>>
yanf4j 1.0-stable的一个压测报告
查看>>
Square 技术团队的开源其 Vim 配置文件
查看>>
《Java编码指南:编写安全可靠程序的75条建议》—— 指南6:正确地编码或转义输出...
查看>>
阿里NASA的液冷黑科技 | 彻底激活未来AI大脑超能力
查看>>
stack源码分析
查看>>
Java内存溢出(OOM)异常完全指南
查看>>
云计算十字真言及其在小博无线的实践
查看>>
用一生回味的经典语录
查看>>
你的命运不是一头骡子
查看>>
排序算法之鸽巢排序
查看>>
Appium移动自动化框架
查看>>
无线动态化解决方案总结:从WeApp到Weex
查看>>
CentOS上安装Bugzilla 4.5.2
查看>>
嵌入式 RTP通话:视频流(H.264)的传输
查看>>
参数的排列组合2
查看>>
struts2中ognl标签详解
查看>>