Kerberos认证流程简述

举报
Lothar 发表于 2020/10/18 21:28:42 2020/10/18
【摘要】 MRS集群支持开启Kerberos认证,使得数据和计算过程更加安全。Kerberos实际上是一种基于票据(Ticket)的认证方式。大数据开源组件封装了整个认证过程,开发者在开发过程中Get不到整个认证过程。本文将对Kerberos认证的过程进行讲述,希望对大家有所帮助。

前言

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获取该用户的信息。通过获取的密码信息生成一个秘钥对认证单进行解密。如果解密后的内容和已知的内容一致,则证明请求者提供的密码正确,即确定了登录者的真实身份。

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,进而验证了客户端的真实身份。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。