美文网首页
Kerberos认证步骤

Kerberos认证步骤

作者: 睡不醒的大橘 | 来源:发表于2020-06-02 22:01 被阅读0次

Kerberos的特点

Kerberos是一个Authentication协议,也就是说它的目的是判断某个client/server是否就是它声称的client/server。

Kerberos协议避免了用户的密码以明文的形式被传输,避免了密码被截获的危险。而且使用的是一种短期的Key,由于这种Key只在一段时间内有效,即使加密的数据包被恶意的网络监听者截获,等他把Key计算出来的时候,这个Key早就已经过期了。

Kerberos中的角色除了client和server,还引入了一个第三方:KDC(Kerberos Distribution Center)。从逻辑上KDC分成三部分:数据库,认证服务器(Authentication Server)和票据分发服务器(Ticket Granting Server)。后面将会进行更详细的介绍。

一旦Client从KDC获得用于访问某个Server的Ticket,之后该Server就能根据这个Ticket实现对Client的验证,而无须KDC的再次参与。

Kerberos 认证步骤

Kerberos认证步骤

1. Authentication Service Exchange

步骤1.

Client向KDC的Authentication Service发送Authentication Service Request(KRB_AS_REQ)。内容包含:

  • Pre-authentication data:包含用以证明自己身份的信息。就是证明自己知道自己声称的那个account的Password。一般地,它的内容是一个被Client的Master key加密过的Timestamp。
  • Client name & realm
  • KDC的Ticket Granting Service的Server Name。

步骤2.

AS(Authentication Service)通过它接收到的KRB_AS_REQ验证发送方的是否是在Client name & realm中声称的那个人,也就是说要验证发送放是否知道Client的Password。所以AS只需从Account Database中提取Client对应的Master Key对Pre-authentication data进行解密,如果是一个合法的Timestamp,则可以证明发送方提供的是正确无误的密码。

验证通过之后,AS将一份Authentication Service Response(KRB_AS_REP)发送给Client。KRB_AS_REQ主要包含两个部分:

  • 被Client的Master Key加密过的Logon Session Key
  • 被自己(KDC)的Key加密过的TGT。TGT主要包含三部分内容:

(1)Logon Session Key(2)Client name & realm (3)End Time:TGT的到期时间

Client通过自己的Master Key对第一部分解密获得Logon Session Key之后,携带着TGT便可以进入下一步:TGS(Ticket Granting Service)Exchange。

2. TGS(Ticket Granting Service)Exchange

步骤3.

Client向KDC中的TGS(Ticket Granting Service)发送Ticket Granting Service Request(KRB_TGS_REQ),内容包括:

  • TGT:Client通过AS Exchange获得的被KDC Key加密的Ticket Granting Ticket。
  • Authenticator:用以证明当初TGT的拥有者是否就是自己,所以它用Logon Session Key来进行加密。内容包括:
    (1)Client Info (2)Timestamp
  • Client name & realm
  • Server name & realm:这是Client试图访问的那个Server

步骤4.

TGS先通过自己的Master Key对Client提供的TGT进行解密,从而获得这个Logon Session Key。再通过这个Logon Session Key解密Authenticator进行验证。

验证通过向对方发送Ticket Granting Service Response(KRB_TGS_REP)。内容包括:

  • 使用Logon Session Key加密过的Session Key。该Session Key 将被用于Client和Server的认证
  • 使用Server的Master Key进行加密的Ticket。该Ticket大体包含:

(1)Session Key (2)Client name & realm(3)End Time:Ticket的到期时间

Client收到KRB_TGS_REP,使用Logon Session Key解密第一部分后获得Session Key。有了Session Key和Ticket,Client就可以之间和Server进行交互,而无须在通过KDC作中间人了。所以我们说Kerberos是一种高效的认证方式,它可以直接通过Client和Server双方来完成。

3. CS(Client/Server )Exchange

步骤5.

Client向Server发送KRB_AP_REQ,内容包括:

  • Ticket:Client 通过TGS Exchange获得的被Server Key加密的Ticket
  • Authenticator:用以证明Ticket的拥有者是否就是自己,所以用Session Key进行加密。内容包括:(1)Client Info(2)Timestamp
  • Flag:用于表示Client是否需要进行双向验证

步骤6.

Server接收到KRB_AP_REQ之后,通过自己的Master Key解密Ticket,从而获得Session Key(SServer-Client)。通过Session Key(SServer-Client)解密Authenticator,进而验证对方的身份。验证成功,让Client访问需要访问的资源,否则直接拒绝对方的请求。

对于需要进行双向验证,Server从Authenticator提取Timestamp,使用Session Key(SServer-Client)进行加密,并将其发送给Client用于Client验证Server的身份。

Kerberos协议的一些术语

Principal:

Principal是用来表示参加认证实体,相当于用户名,用来来表示一个client或server唯一的身份。Principal是由三个部分组成:名字(name),实例(instance,这部分可选),REALM(域)。格式是:name/instance@REALM 。

  • name:

可以是任意的字符串,比如说可能是操作系统下的用户名等。

  • instance

定义了用户在不同的role下使用的priciple,或者是在host在不同的service上运行时使用的principle。

  • realm

realm从逻辑上定义了一组object。每个realm可以有私有的配置,包括KDC的地址和加密算法等。大型公司会给公司内不同的团队创建不同的realm。

KDC数据库

KDC数据库存储了它所有用户(包括client和server)的entry。我们用principal来引用一个entry,。每个entry包括以下的信息:

  1. 与entry相关联的principal
  2. principlal的master key
  3. 与这个principal相关联的ticket最长可用时间
  4. 与这个principal相关联的ticket的最长的renew时间(译注:是指这个ticket通过renew机制累计可55. 用的时间)(只在kerberos 5中可用)
  5. 决定这个ticket的具体行为的属性和标志位。
  6. Master key过期时间
  7. 这个principal的过期时间,在此之后就不为这个principal分发ticket了。

为了使得窃取数据库中的密钥更加因难,Kerberos的实现们使用master key来对数据库进行加密,master key被关联在K/M@REALM这个principal上。即使是数据库的dump,备份和master KDC到salve KDC的propagation也会被用这个密钥加密,因此,如果想要重新加载它们,就必须知道这个密钥。

Keytab

Keytab是一个存储于client或server端的文本文件,包含了kerberos principle和该principle的master key。所以这个文件需要很小心地保存。

下一节将会安装并配置一个kerberos KDC和client,来帮助更好地理解kerberos,熟悉kerberos的基本命令。

相关文章

  • Kerberos认证步骤

    Kerberos的特点 Kerberos是一个Authentication协议,也就是说它的目的是判断某个clie...

  • Kerberos的安装与配置

    上一节 介绍了kerberos的认证原理与步骤。这节会安装并配置一个kerberos KDC和client,来帮助...

  • Kerberos认证

    一、Kerberos认证 Kerberos的重要性: 对我们搞Web的而言,弄清Kerberos认证过程,最有利于...

  • Flink1.8 集群搭建完全指南(2):Kerberos的安装

    Flink要求它使用的Hadoop集群必须是要添加Kerberos和SASL认证的,本节先介绍Kerberos认证...

  • Kerberos简介——教你做个好人

    文章导读:对称加密非对称加密数字证书Kerberos认证流程 Hadoop生态利用Kerberos认证机制来识别可...

  • 常见的网络安全协议

    1.网络认证协议Kerberos Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务...

  • 域内windows认证_Kerberos协议

    在windows域内,kerberos协议是主要的windows认证方式。 一、kerberos协议简介 Kerb...

  • 使用JAVA-API访问开启kerberos集群下的HDFS

    使用API访问开启安全Kerberos的Hdfs hadoop集群(cdh集群)在开启kerberos安全认证方式...

  • Kerberos协议详解

    介绍 最近工作中经常用到Kerberos认证,虽然一些软件已经实现了Kerberos认证,配置一下就能使用,但是我...

  • Kerberos认证

    简言Kerberos协议是一个专注于验证通信双方身份的网络协议,不同于其他网络安全协议的保证整个通信过程的传输安全...

网友评论

      本文标题:Kerberos认证步骤

      本文链接:https://www.haomeiwen.com/subject/gqxmzhtx.html