关于 Kerberos 认证协议流程

这周网络安全课布置的作业是了解 Kerberos 认证协议的流程,于是我自学了相关知识,整理笔记如下,如有错误,欢迎指正!

1. 基本概念

  • Kerberos 认证是一个基于票据的认证机制,旨在在不安全的网络环境中提供强大的身份验证服务

  • Kerberos 认证流程涉及四个个主要参与者:

    • 客户端(用户)

    • 认证服务器(AS,Authentication Server)

    • 票据授予服务器(TGS,Ticket Granting Server)

    • 应用服务器(为用户提供服务的设备或系统)

  • 其中,AS 和 TGS 是第三方,用于验证 Kerberos 客户机的身份,为应用服务器提供认证服务

2. 认证过程

2.1 举例

纯文字感觉不太好理解,我们先用图片和公式来梳理下认证流程:

  • 假设有四个角色:客户端(C),认证服务器(AS),票据授予服务器(TGS),和应用服务器(S)
  • 记客户端的密码为 kC ,AS 和 TGS 的密钥分别为 kASkTGS ,应用服务器的密钥为 kS ,以下是详细的流程:

C ==> AS

  • EkC(IDTGS,TS1)

    • TS1 是时间戳,可以用于防止重放攻击

    • 客户端C给认证服务器AS发送包含其身份信息的请求,请求获得对票据授予服务器的访问权,发送票据服务器TGS的ID和时间戳(是用客户端的密钥进行的加密)

AS ==> C

  • EkC(IDTGS,KC,TGS,TS1)
  • EkTGS(IDC,KC,TGS,TS1)
    • KC,TGS 是 C 和 TGS 之间的会话密钥
    • AS 就会验证客户端的身份,然后发送两个重要的信息:
      • 一是客户端和TGS之间的会话密钥 Kc,tgs
      • 二是TGT(Ticket Granting Ticket,票据授予票据),即 EkTGS(IDC,KC,TGS,TS1),客户端无法解密这个,之后它会将其原封不动发给TGS

C ==> TGS

  • EkC,TGS(IDS,TS2)
  • TGT,也就是 EkTGS(IDC,KC,TGS,TS1)
    • TS2 是新的时间戳
    • C 使用 KC,TGS 加密请求,并附上 TGT

TGS ==> C

  • EkC,TGS(IDS,KC,S,TS2)
  • EkS(IDC,KC,S,TS2)
    • KC,S 是 C 和 S 之间的会话密钥
    • TGS就会先解密TGT,验证客户端的身份,然后生成客户端和应用服务器之间的会话密钥 Kc,s
    • TGS发送两个信息给客户端:
      • 一是加密的会话密钥 Kc,s
      • 二是加密的服务票据(Service Ticket),即 EkS(IDC,KC,S,TS2),同理,客户端无法解密这个,之后它会将其原封不动发给S

C ==> S

  • EkC,S(IDC,TS3)
  • Ticket,也就是 EkS(IDC,KC,S,TS2)
    • TS3 是新的时间戳
    • C 使用 KC,S 加密请求,并附上服务票据 Ticket

S ==> C

  • EkC,S(TS3+1)
    • S 验证服务票据和时间戳,然后使用 KC,S 加密 TS3+1作为回应

2.2 具体流程(纯文字)

下面是一个典型的 Kerberos 认证过程,分成六个主要步骤:

(1)客户端请求AS(认证服务器)

  • 客户端向认证服务器发送一个包含其身份信息的请求(通常是用户名),请求获得对票据授予服务器的访问权,这个请求可以包含一个时间戳,用于防止重放攻击。

(2)AS(认证服务器)回复客户端

  • 认证服务器验证客户端的身份,然后发送两个重要的信息:
    • 一是客户端和票据授予服务器之间的会话密钥Kc,tgs
    • 二是TGT(Ticket Granting Ticket,票据授予票据),TGT是加密的,包含客户端的身份信息和会话密钥,只有票据授予服务器能解密

(3)客户端请求TGS(票据授予服务器)

  • 客户端使用从AS获得的会话密钥加密一个新的请求(包含对目标服务的访问要求)和TGT,发送给票据授予服务器,这个请求通常也包含一个新的时间戳。

(4)TGS(票据授予服务器)回复客户端

  • 票据授予服务器首先解密TGT,验证客户端的身份,然后生成客户端和目标服务(应用服务器)之间的会话密钥Kc,s
  • TGS发送两个信息给客户端
    • 一是加密的服务票据(Service Ticket)
    • 二是加密的会话密钥

(5)客户端请求应用服务器

  • 客户端使用从TGS获得的服务票据和会话密钥向目标服务(应用服务器)发起请求
  • 服务票据是加密的,只有目标服务能解密

(6)应用服务器回复客户端

  • 应用服务器解密服务票据,验证客户端的身份,然后使用会话密钥与客户端建立安全的通信。

在整个过程中,Kerberos 保证了身份验证的安全性和数据的保密性。

posted @   路有所思  阅读(419)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示