Kerberos认证流程简述

网友投稿 1750 2022-05-30

前言

Kerberos这个名字来源于希腊神话,是冥界守护神兽的名字。Kerberos是一个三头怪兽,之所以用它来命名一种完全认证协议,是因为整个认证过程涉及到三方:客户端、服务端和KDC(Key Distribution Center)。

Kerberos实际上是一种基于票据(Ticket)的认证方式。客户端要访问服务器的资源,需要首先购买服务端认可的票据。但是这张票不能直接购买,需要一张认购权证,这张认购权证和进入服务器的入场券均有KDC发售。

前提条件

Client与KDC, KDC与Service 在协议工作前已经有了两两共享密钥。

认证过程

1.     获得“认购权证”

认购权证有个专有的名称——TGT(Ticket Granting Ticket),而TGT的是KDC一个重要的服务——认证服务(KAS:Kerberos Authentication Service)。

当某个用户通过输入域帐号和密码试图登录某台主机的时候,本机的Kerberos服务会向KDC的认证服务发送一个认证请求。该请求主要包括两部分内容,明文形式的用户名和经过加密的认证单(可以理解为仅限于验证双反预先知晓的内容,相当于联络暗号)用于证明访问者身份。

当KDC接收到请求之后,通过AD获取该用户的信息。通过获取的密码信息生成一个秘钥对认证单进行解密。如果解密后的内容和已知的内容一致,则证明请求者提供的密码正确,即确定了登录者的真实身份。

Kerberos认证流程简述

KAS成功认证对方的身份之后,会先生成一个用于确保该用户和KDC之间通信安全的会话秘钥——Logon Session Key,并采用该用户的秘钥进行加密。KAS接着为该用户创建“认购权证”——TGT。TGT主要包含两方面的内容:用户相关信息和Logon Session Key,而整个TGT则通过KDC自己的密钥(TGS Key,此密钥只有认证服务器和TGS知道)进行加密。最终,被不同密钥加密的Logon Session Key和TGT返回给客户端。

2.  通过“认购权证”购买“入场券”

客户将第一个报文解密得到会话密钥Logon Session Key,然后生成一个认证单(Authenticator),包括客户实体名、地址及时间印记,并用会话密钥Logon Session Key对认证单进行加密。

然后,向TGS发出请求,申请接入某一目标服务器的门票(Ticket)。此请求包括目标服务名称、收到Kerberos发来的加过密的TGT以及加密的认证单。

TGS用其密钥(TGS Key)对TGT进行解密,使用TGT中的会话密钥Logon Session Key对认证单进行解密。然后将认证单中的信息与TGT中的信息进行比较。此时,TGS产生新的会话密钥Service Session Key供客户实体与目标服务器使用,利用客户实体和TGS用的会话密钥Logon Session Key将新的会话密钥Service Session Key加密;还将新的会话密钥Service Session Key加入客户向该服务器提交的有效门票之中,门票中还包括客户实体名、网络地址、服务器名、时间印记、时限等,并用目标服务器的秘密密钥将此门票加密;

然后将这两个报文发送给客户

3.  凭票入场

客户将接收到的报文使用Logon Session Key解密后,获得与目标服务器共用的会话密钥Service Session Key。这时,客户制作一个新的认证单,并用获得的Service Session Key会话密钥对该认证单进行加密。将加密的认证单和从TGS收到的门票一起发送给目标服务器。由于此认证单有会话密钥加密的明文信息,从而证明发信人知道该密钥。

服务器在接收到请求之后,先通过自己密码派生的秘钥解密门票,并从中提取Service Session Key。然后通过提取出来的Service Session Key解密Authenticator,进而验证了客户端的真实身份。

MapReduce服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Vallnet 游戏创业者的伊甸园
下一篇:OAuth协议简介
相关文章