一.kerberos认证过程

client向kerberos服务请求,希望获取访问server的权限。kerberos得到了这个消息,首先得判断client是否是可信赖的,也就是白名单黑名单的说法。这就是AS服务完成的工作,通过在AD中存储黑名单和白名单来区分client。成功后,返回TGT给client。client得到了TGT后,继续向kerberos请求,希望获取访问server的权限。kerberos又得到了这个消息,这时候通过client消息中的TGT,判断出了client拥有了这个权限,给了client访问server的权限ticket。 client得到ticket后,终于可以成功访问server。这个ticket只是针对这个server,其他server需要向TGS申请。 

 

二.服务作用

KDC(key distributed center)
作用:整个安全认证过程的票据生成管理服务,其中包含两个服务,AS和TGS

AS(authentication service)
作用:为client生成TGT的服务

TGS(ticket granting service)
作用:为client生成某个服务的ticket

AD(account database)
作用:存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT

TGT(ticket-granting ticket)
作用:用于获取ticket的票据

client
想访问某个server的客户端

server
提供某种业务的服务

 三.步骤详解

(AS-REQ)Client 发送用户名 Tom 到 KDC (Key Distribution Center)以向 AS (Authentication Service)请求 TGT 票据等信息。

(AS-REP)收到请求后,AS 生成随机字符串 Session Key,使用 Tom 的 NTLM Hash 对 Session Key 加密得到密文 A,再使用账号 krbtgt 的 NTLM Hash 对 Session Key 、 Client Info和 timestamp 加密得到 TGT,A 和 TGT 一起返回给 Client。

(TGS-REQ) Client 收到请求后,使用自身的 NTLM Hash 解密 A 就能得到 Session Key,然后使用 Session Key 对 Client Info 和 timestamp 加密得到 B,加上 TGT ,发送给 KDC中的 TGS。

(TGS-REP)TGS 收到请求后,使用 krbtgt 的 NTLM Hash 解密 TGT,得到 Session Key 和 timestamp 以及 Client Info,同时,使用 TGT 解密出的 Session Key 解密密文B,得到Client Info 和 timestamp。 比对这两部分解密得到的内容以验证是否通过。通过后,生成一个新的随机数 Session Key2,并用它加密 client info 和 timestamp 得到密文 enc-part;使用服务器计算机的NTLM Hash 对 session key2 和 client info 以及 timestamp 加密得到最终的 Ticket,返回给 Client。

(AP-REQ)Client 使用 Ticket 和 enc-part 直接请求某服务。

(AP-REP) 对Ticket 和 enc-part 解密后进行验证授权。

注意

  • Kerberos 协议设计的思路就是用来在不受信的环境下进行认证的协议。

  • krbtgt 账号的 NTLM Hash 理论上只存在于 KDC 中。这意味着 TGT 只能由 KDC 来解密。如果krbtgt 账号的NTLM Hash泄露了,那么 TGT 就能被解密甚至伪造。伪造的 TGT 叫做黄金票据。

  • Ticket 是由服务器计算机本身的 NTLM Hash 加密的,Client 不能解密。如果该Hash 泄露,那么就可以解密甚至伪造 Ticket。伪造的 Ticket 叫做白银票据。

  • 在上述的流程中,涉及到时间戳 timestamp,由于它的存在,才使得被第三方获取了加密信息 A 、B、TGT不会在短时间内被暴力破解。timestamp 一般时间为8小时。

  • Kerberos 协议和 NTLM 协议都会使用 NTLM Hash 对生成的任意随机数加密,然后比对结果。 Kerberos 的主要区别在于添加了第三方——-KDC参与到认证过程中。

  • Client info 中包含域名信息、Client 名称等

参考:https://blog.csdn.net/lovebomei/article/details/79814979

   https://green-m.me/2019/01/24/play-with-kerberos/

kerberos协议介绍的更多相关文章

  1. TCP/IP 协议介绍

    转自http://blog.jobbole.com/104886/ 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应 ...

  2. 第二章 ZAB协议介绍

    ZAB ( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)是zookeeper数据一致性的核心算法. ZAB 协议并不像 Paxos 算法那样,是一种 ...

  3. JSON-RPC轻量级远程调用协议介绍及使用

    这个项目能够帮助开发人员利用Java编程语言轻松实现JSON-RPC远程调用.jsonrpc4j使用Jackson类库实现Java对象与JSON对象之间的相互转换.jsonrpc4j包含一个JSON- ...

  4. [转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

    [转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls) http://blog.csdn.net/tttyd/article/details/12032357 RTP       ...

  5. SSO的全方位解决方案 - Kerberos协议(RFC 1510)

    一.桌面SSO和WEB-SSO的局限性 前面我们的解决方案(桌面SSO和WEB-SSO)都有一个共性:要想将一个应用集成到我们的SSO解决方案中,或多或少的需要修改应用程序. Web应用需要配置一个我 ...

  6. Kerberos协议

    Kerberos协议主要用于计算机网络的身份鉴别 (authentication),其特点是用户只需输入一次身份验证信息就可以凭借此验证获得票据(ticket-granting-ticket)访问多个 ...

  7. Python基础教程之udp和tcp协议介绍

    Python基础教程之udp和tcp协议介绍 UDP介绍 UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但 ...

  8. 常用音频协议介绍&&有关音频编码的知识与技术参数

    (转载)常用音频协议介绍 会议电视常用音频协议介绍及对比白皮书 一.数字化音频原理:声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线.通常人耳可以听到的频率在20 ...

  9. 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转

    转自:各种开源协议介绍 BSD.Apache Licence.GPL V2 .GPL V3 .LGPL.MIT 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的 ...

随机推荐

  1. 2、使用siege进行服务端性能测试

    先查看siege帮助 输入siege -h 翻译一下常用命令 -c 指定并发数 -r 指定重复次数 -d 指定请求的延迟时间,注意每个请求间随机延迟 -f 指定url列表,可以一次给多个地址加压 -t ...

  2. PE代码段中的数据

    PE代码段中可能包含一些数据,比如 optional header中的data directory会索引到一些数据,比如import/export table等等: 还有一些jump table/sw ...

  3. CentOS7 网卡配置文件解释

    注:此网卡配置文件摘自CentOS7.4.1708系统 Linux 默认配置网卡的信息 TYPE=Ethernet 网卡类型:以太网 PROXY_METHOD=none 代理方式:关闭状态 BROWS ...

  4. Array.prototype.slice.call()等几种将arguments对象转换成数组对象的方法

    网站搬迁,给你带来的不便敬请谅解! http://www.suanliutudousi.com/2017/10/10/array-prototype-slice-call%E7%AD%89%E5%87 ...

  5. Tomcat集群session复制与Oracle的坑。。

    问题描述 公司某个系统使用了tomcat自带的集群session复制功能,然后后报了一个oracle驱动包里面的连接不能被序列化的异常. 01-Nov-2017 16:45:26.653 SEVERE ...

  6. 【牛客提高训练营5A】同余方程

    题目 吉老师的题做不动啊 首先\([l_1,r_1],[l_2,r_2]\)并不是非常好做,我们考虑将其拆成前缀信息 设\(solve(n,m)=\sum_{i=0}^n\sum_{j=0}^m[m| ...

  7. .net core 根据环境变量区分正式、测试 配置文件

    新建测试.正式环境下所用的 配置信息文件 appsettings.Development.json 文件信息: { "Logging": { "LogLevel" ...

  8. 【VUE/JS】vue和js禁止浏览器页面后退

    1.vue 禁止浏览器后退需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换整理一下解决方法 和 使用方法: 1.在路由配置中给这个路由添加meta信息,比如: { path: '/ho ...

  9. unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - 用于本地内部进程通讯的套接字。

    SYNOPSIS(总览) #include <sys/socket.h> #include <sys/un.h> unix_socket = socket(PF_UNIX, t ...

  10. opencv2.4.9+vs2012安装配置

    需要下载并安装vs2012  http://pan.baidu.com/s/1qXP76CO     第一次启动会提示要求输入激活序列号,请输入:YKCW6-BPFPF-BT8C9-7DCTH-QXG ...