Kerberos认证

本文详细介绍了Kerberos认证协议的六个步骤,包括客户端与AS(Authentication Service)、TGS(Ticket Granting Service)之间的交互,涉及到TGT(Ticket Granting Ticket)、session key的生成与解密,以及权限验证的过程。Kerberos通过多层加密确保网络服务的安全访问。
摘要由CSDN通过智能技术生成

在这里插入图片描述
名词介绍:

DC(Domain Controller):域控
KDC(Key Distribute Center):密钥分发中心
AS(Authentication Service):身份验证服务
TGS(Ticket Granting Service):票据分发服务
TGT(Ticket Granting Ticket):票据分发票据
AD(Active Directory):活动目录(维护一个账户数据库),该数据库中存储了所有用户的密码hash和白名单,只有账户密码都在白名单中的Client才能申请到TGT
注意:在DC中有一个特殊用户叫做:krbtgt,它是一个无法登录的账户,是在创建域时系统自动创建的,在整个kerberos认证中会多次用到它的Hash值去做验证
注意:以下内容中的服务器代表TGS服务器,服务端代表我们最终需要请求的服务

第一步(图中1阶段)

(1)客户端会发送自己的信息以及要连接服务器的信息给AS然后AS会去ad数据库看是否在白名单中
(2)如果是处于白名单中,则身份验证通过,AS就会返回随机产生的session key(会话密钥,相等于登录成功)同时会生成两个票:
1.TGT1(session key,TGS服务信息,票据到期时间),TGT1使用客户端的NTLM hash加密
2.TGT2(session key,客户信息,票据到期时间),TGT2是使用KDC的NTLM hash加密
然后AS将这两个票发送给客户端

第二步(图中2阶段)

客户端拿到两个票之后
(1)先用客户端自己的NTLM hash解密TGT1,因为TGT1是用客户端的NTLM hash加密的,从而得到session key,
(2)然后生成认证因子(客户信息,当前时间戳),然后用解密出来的sessionkey加密
(3)之后发送给TGS服务器认证因子和TGT2,因为TGT2是用KDC NTLM hash进行加密的所以无法解密只能原封不动的发送,同时也会发送自己的客户端信息和TGS服务器信息用于校验

第三步(图中3阶段)

(1)TGS服务器拿到该内容后(认证因子+TGT2+客户端信息+服务器信息),先用KDC NTLM hash解密TGT2得到(session key,客户信息,票的结束时间)
(2)再用得到的session key去解密认证因子,因为认证因子使用session key进行加密的,从而得到(客户信息,时间戳)
(3)然后校验三点
<1>时间戳和当前时间的差距是不是很大,如果很大就说明会话有问题
<2>用解密的TGT2里面的客户信息与session key解密的客户信息进行比较,相同则通过
<3>客户端权限访问服务端是否正常
然后校验通过,TGS服务器将随机生成一个server session key
再次生成两个票:
TGT3(server session key,服务端信息,票据到期时间)用AS返回的session key进行加密的
TGT4(server session key,客户信息,票据到期时间)用服务端的NTLM hash加密的
服务端的NTLM hash:当访问服务时,他肯定有一个计算机名,在加入域时也会随机生成一个NTML hash值
它将TGT3和TGT4返回给客户端

第四步(图中4阶段)

客户端收到TGT3和TGT4后
(1)首先解密TGT3,因为session key是第一次AS生成的,客户端也是知道的,从而得到(server session key,服务端信息,票据到期时间)
(2)再生成认证因子2(服务端信息,票据到期时间),然后再用server session key进行加密
(3)将认证因子2和TGT4发送给服务端,因为TGT4是用的服务端的NTLM hash加密的,客户端不知道服务端的NTLM hash

第五步(图中5阶段)

服务端收到客户端后
(1)首先会解密TGT4,因为加密TGT4时用的是服务端的NTLM hash,因此服务端可以用自己的NTLM hash进行解密,从而得到(server session key,客户信息,票据到期时间)
(2)然后再用得到的server session key去解密认证因子2,从而得到服务端信息,票据到期时间。
(3)服务将会成功发送给客户端

第六步(图中6阶段)

客户端将会成功进行服务的访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值