Kerberos 认证协议全解析

目录

Kerberos 认证协议全解析

一、协议目标与特性

二、参与角色

(一)客户机

(二)服务机

(三)票据颁发机构(KDS)

三、重要概念

(一)票据

(二)AD 数据库

(三)密钥相关

四、认证流程

(一)客户端向 KDC 发起服务请求

(二)客户端继续向 KDC 发起请求

(三)客户端访问服务器

(四)用户登录与密钥生成

(五)AS 响应消息

(六)请求服务授权

(七)发送服务请求

五、安全隐患与白银票据攻击


在网络安全领域,Kerberos 认证协议起着至关重要的作用。

一、协议目标与特性

Kerberos 协议是一种网络认证协议,旨在通过密钥系统为客户机服务器应用程序提供强大认证服务。它具有诸多独特特性,其认证过程不依赖于主机操作系统的认证,无需基于主机地址的信任,也不要求网络上所有主机的物理安全。即使假定网络上传输的数据包可以被任意读取、修改和插入数据,Kerberos 作为可信任的第三方认证服务,仍能通过传统密码技术(如共享密钥)执行认证服务。

二、参与角色

(一)客户机

是发起服务请求的一方,在整个认证过程中,它需要向密钥分发中心(KDC)请求获取访问服务器的权限,并在获取相关票据后向服务器发送服务请求以访问服务。

(二)服务机

即客户端想要访问的服务器或服务,它会接收客户端携带票据的服务请求,并在验证通过后向客户端响应数据。

(三)票据颁发机构(KDS)

KDC 从物理层面看包含了与认证相关的多个组件。KDC 负责管理票据认证、分发票据。其中身份认证服务(AS)为客户端生成票证授予票据(TGT)并完成对客户端的身份验证;票据授予服务(TGS)为客户端生成允许对某个服务访问的 ticket(票据)。

三、重要概念

(一)票据

票据是网络对象互相访问的凭证,客户端通过携带票据的方式进行访问。在 Kerberos 协议中,不同类型的票据有着不同作用。例如 TGT 是客户端从 AS 那里获取的,之后用于向 TGS 申请对特定服务访问的权限;而客户端从 TGS 处获取的 ticket 则用于访问对应的服务器。

(二)AD 数据库

存储域中所有用户和所有用户的用户名及对应的 NTLM。KDC 可以从 AD 中提取域中用户的 NTLM,这是 Kerberos 协议能够成功实现的基础。

(三)密钥相关

  1. 客户端的密钥、TGS 的密钥和 server 的密钥均为对应用户的 NTLM 哈希。TGS 密钥用于加密 TGT 等,server 密钥用于加密服务访问票据等。
  2. 为保证会话密钥的传输安全,加密方式均为对称加密。参与认证的三个角色的 NTLM 哈希的唯一作用是确保会话密钥的安全传输。

四、认证流程

(一)客户端向 KDC 发起服务请求

客户端希望获取访问到 server 的权限,KDC 首先从 AD 数据库中判断客户端是否可信,即该用户是否可以用来登录(这是 AS 服务完成的工作)。若成功,AS 返回 TGT 给予客户端。

(二)客户端继续向 KDC 发起请求

客户端得到 TGT 后,向 KDC 发起请求获取访问 server 的权限。KDC 通过客户端消息中的 TGT 判断客户端拥有权限后,给客户端访问 server 的权限(即一个 ticket)。

(三)客户端访问服务器

客户端得到 ticket 后,便可以使用它成功访问服务器。并且该 ticket 只能访问指定的服务器,访问其他服务需重新申请。

(四)用户登录与密钥生成

用户在客户端输入用户名和密码信息后,密码通过计算生成 NTLM 哈希作为对应的密钥,客户端向 AS 身份认证服务发送认证请求。请求中先带有明文的用户名信息,AS 确定用户身份后,从数据库中查找用户名是否存在,若存在则提取 NTLM 哈希作为 AS 生成的密钥。若用户提供的密码信息正确,该密钥与用户登录中的 client 密钥相等。

(五)AS 响应消息

AS 为客户端响应消息包含多个数据包。例如 MSGA 使用 KDC 生成的密钥加密了会话密钥;MSGB 使用 TGS 密钥加密的 TGT,客户端无法解密 TGT。TGT 中包含 key、客户端的 id 和 TK 的有效时间、客户端的地址等信息。

(六)请求服务授权

客户端向 TGS 发送请求服务授权请求,请求包中包含请求的服务 id 及 server id 以及 AS 为客户端提供的 TGT。还有使用会话密钥加密的认证,包含客户端 id 和时间戳。KDC 接收到 TGT 与其他内容后,先使用 KDC 的 NTLM 哈希解密 TGT,提取会话密钥,再用会话密钥解密认证获取客户端 id 和时间戳并对比验证。验证成功后 TGS 为客户端响应服务授权票据。

(七)发送服务请求

客户端向 server 发送服务请求,同时发送两个信息:一是 TGS 为客户端响应的消息,二是使用会话密钥加密的认证包含客户 id 和时间信息。服务端收到请求后,先利用自身的 server 密钥解密提取票据中的信息,再用会话密钥解密认证提取客户端 id 信息并与票据中的 id 对比,若匹配则说明客户端拥有正确的会话密钥。服务端向客户端响应包含使用会话密钥加密的时间戳信息的消息,客户端收到后解密确认与发送的认证信息中时间戳一致,完成双向认证。

五、安全隐患与白银票据攻击

在整个认证流程中,客户端与服务端之间没有交互验证票据的真实性。这就导致存在票据伪造的风险,即白银票据攻击方法。攻击者可能利用这一漏洞伪造票据,由于服务端无法与 KDC 交互验证,可能无法发现伪造的票据,从而给网络安全带来威胁。

Kerberos 认证协议通过一系列复杂而严谨的流程和机制实现网络认证,但也存在一些安全方面需要注意和防范的地方。理解其原理和流程有助于更好地保障网络安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值