Kerberos认证过程学习理解
概念:
Kerberos服务器:AS认证服务器,TGS服务授权服务器
Client 客户端,代表使用应用的用户
AppServer 服务端,应用提供各种服务的服务器
Client在Kerberos注册用户名c,密码Kc
AppServer在Kerberos注册用户名s,密码Ks
TGS在Kerberos注册用户名tgs,密码Ktgs
说明:
Kerberos为Client和AppServer提供可信任第三方认证服务。
Kerberos服务器将用户的用户名及密码存放在它的数据库中。
密码Kc只有Client和Kerberos才拥有,通过Client在Kerberos服务器注册保证密码一致。
同理密码Ks只有AppServer和Kerberos才拥有。
认证过程:
1.Client->AS
KRB_AS_REQ={c, tgs, TS1}
c表示Client客户标识,告诉AS请求的Client身份,便于AS到数据库中查询c的密钥
tgs是Client下一步要访问TGS服务器标识
TS1时间戳被AS用于验证Client时钟是否与AS时钟同步
2.AS->Client
KRB_AS_REP={K(c,tgs),TS2,lifetime,tgs_Tickets}Kc
K(c,tgs)是由AS随机产生的,用于Client与TGS共享的一个会话私钥
TS2是票据发放的时间戳,lifetime是票据有效期
tgs_Tickets是AS发给Client的用于访问TGS的票据授权票据
tgs_Tickets={K(c,tgs), c, c_mac, tgs, TS2, lifetime2}Ktgs
c_mac是Client的MAC地址
3.Client->TGS
KRB_TGS_REQ={s, tgs_Tickets, Authen_info}
s是Client期望访问的AppServer服务器
tgs_Tickets是Client上一步从AS获取的票据授权票据
Authen_info是Client发送的一条认证消息,用于确认发送票据tgs_Tickets的用户就是c
Authen_info={c, c_mac, TS3}K(c,tgs)
4.TGS->Client
KRB_TGS_REP={K(c,s), s, TS4, s_Tickets}K(c,tgs)
K(c,s)是TGS随机生成的密钥,为Client端和AppServer共享的会话密钥
s_Tickets={K(c,s), c, c_mac, s, TS4, lifetime}Ks
TGS用自己的密码Ktgs解密tgs_Tickets获得c,c_mac,K(c,tgs),TS2,lifetime
TGS首先根据时TS2,lifetime时间判断票据是否过期,未过期则继续,
TGS再用上面解密出来的会话私钥K(c,tgs)解密Authen_info,获得c,c_mac,
比较上面2次解密出来的c,c_mac是否一致,判断此次请求来自合法Client。
5.Client->AppServer
KRB_APPSERVER_REQ={s_Tickets,Authent_info},
Client使用K(c,tgs)从KRB_TGS_REP响应中获取K(c,s)
Client采用会话密钥K(c,s)加密Authent_info消息
Authen_info={c, c_mac, TS5}K(c,s)
6.AppServer->Client
AppServer用自己的密码Ks从S_Tickets解密获得K(c,s), c, c_mac, s, TS4, lifetime
(s标识确认Client需要访问该AppServer,AppServer可以通过能否在票中找到自已的名字s来判断解密是否正确)
AppServer然后用TS4时间戳和有效期lifetime来检查票是否有效,有效才进行下一步
AppServer再用从上面解密出来的K(c,s)从Authen_info解密获得c, c_mac
AppServer比较上面2次解密出来的c,c_mac是否一致,判断此次请求来自合法Client。
最后AppServer使用K(c,s)加密确认消息给Client端,告知对方它期待的服务器已收到它的服务请求。
7.Client
Client接收到AppServer的响应,并且使用K(c,s)解密成功即可。
此时Client与AppServer即实现了可信的双方认证。
其他:
2中因为Tickets_tgs已经采用TGS的私钥加密,故没有必要采用客户端的私钥再次加密,
所以AS向Client响应可以修改为:
KRB_AS_REP=tgs_Tickets,{K(c,tgs),TS2,lifetime}Kc
4中同样S_Tickets已经采用AppServer的私钥加密,也不需要使用K(c,tgs),可以修改为:
KRB_TGS_REP=s_Tickets,{K(c,s), s, TS4}K(c,tgs)
参考文档:
【hadoop大数据安全基础知识】Kerberos安全协议(原理)解析与编程实现
http://www.aboutyun.com/thread-11577-1-1.html



Kerberos认证过程学习理解的更多相关文章
- [Kerberos] Kerberos 认证过程整理
Kerberos是一种安全认证协议,意在提供 more secure authentication simplified management of password convenience of s ...
- 在kerberos认证过程中Active Directory的作用
LDAP介绍 1),ladp(Lightweight Directory Access Protocol),轻量级目录访问协议,提供被称为目录服务的信息服务,特别是基于X.500(构成全球分布式的目录 ...
- 域渗透 | kerberos认证及过程中产生的攻击
文章首发于公众号<Z2O安全攻防> 直接公众号文章复制过来的,排版可能有点乱, 可以去公众号看. https://mp.weixin.qq.com/s/WMGkQoMnQdyG8UmS ...
- Kerberos认证浅析
1 引言 在希腊神话中Kerberos是守护地狱之门的一条凶猛的三头神犬,而我们在本文中所要介绍的Kerberos认证协议是由美国麻省理工学院(MIT)首先提出并实现的,是该校雅典娜计划的一部分.这个 ...
- Kerberos认证与攻击学习总结
0.背景 聆听了n1nty大佬(90后黑客代表)的谆谆指导,学习了n1nty大佬的基本操作,决定总结一下,做一个简要的读书笔记,也把之前自己记录的关于Windows的安全的一些博客能够串联起来.所以首 ...
- Kerberos认证原理简介
1.1 What is Kerberos 1.1.1 简单介绍 Kerberos是一个用于鉴定身份(authentication)的协议, 它采取对称密钥加密(symmetric-key crypto ...
- RHCE认证过程
RHCE认证,即红帽认证工程师(Red Hat Certified Engineer)的简称,认证内容包括DNS.NFS.Samba.Sendmail.Postfix.Apache和关键安全功能的详细 ...
- ASP.NET Core Identity 实战(3)认证过程
如果你没接触过旧版Asp.Net Mvc中的 Authorize 或者 Cookie登陆,那么你一定会疑惑 认证这个名词,这太正式了,这到底代表这什么? 获取资源之前得先过两道关卡Authentica ...
- 图解Kerberos认证工作原理
本文是我在看了这篇英文说明之后的总结 https://technet.microsoft.com/zh-cn/library/cc961976.aspx 是总结,不是翻译,所以是我看后按自己的理解写的 ...
随机推荐
- springboot+vue脚手架使用nginx前后端分离
1.vue配置 /** * * 相对于该配置的nginx服务器请参考nginx配置文件 * */ module.exports = { // 基本路径 publicPath: '/', // 输出文件 ...
- Dubbo声明式缓存
为了进一步提高消费者对用户的响应速度,减轻提供者的压力,Dubbo提供了基于结果的声明式缓存.该缓存是基于消费者端的,所以使用很简单,只需修改消费者配置文件,与提供者无关 一.创建消费者07-cons ...
- BigDecimal中要注意的一些事
一.关于public BigDecimal(double val) BigDecimal中三个主要的构造函数 1 public BigDecimal(double val) 将double表示形式转换 ...
- 4个优化方法,让你能了解join计算过程更透彻
摘要:现如今, 跨源计算的场景越来越多, 数据计算不再单纯局限于单方,而可能来自不同的数据合作方进行联合计算. 本文分享自华为云社区<如何高可靠.高性能地优化join计算过程?4个优化让你掌握其 ...
- python3约瑟夫环问题
问题描述:n个人围成一个圈,从第一个人开始数1,数到第k个出局,然后下一个人继续从1数,求出局人编号 思路:将所有人编号放到数组里,一个人出局后,下一个人加上k对数组长度求余,得出下一个要删除的编号. ...
- 纯css设置元素高度与宽度相等
设置图片高度等于宽度 .img-box{ width:100%; height:0; position: relative; padding-bottom: 100% } .img-box img{ ...
- ubuntu 16.04下的fastadmin安装指南
此篇博客转载于fastadmin论坛,方便自己看转到了博客里 说明文档不多,特制作一个,方便大家交流使用Ubuntu 16.04 安装fastadmin指南本文因考虑到大多数人员,习惯性在window ...
- [Java Web 王者归来]读书笔记3
第四章 JSP JSP基本语法 1 JSP中嵌入Java 代码 <% Java code %> 2 JSP中输出 <%= num %> 3 JSP 中的注释 <%-- - ...
- Python测试框架pytest入门基础
Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.T ...
- [BUUCTF]PWN——ciscn_2019_ne_5
ciscn_2019_ne_5 题目附件 步骤: 例行检查,32位,开启了nx保护 试运行一下程序,看一下程序的大概执行情况 32位ida载入,shift+f12查看程序里的字符串,发现了flag字符 ...