Kerberos 协议概述
Kerberos 是一种计算机网络认证协议,旨在为不安全的网络提供强认证服务。它通过中心化的身份验证系统(即 Key Distribution Center,KDC)来确保通信双方的身份验证和数据加密。Kerberos 协议主要用于确保计算机系统间的通信不受恶意攻击(如窃听、中间人攻击等),并广泛应用于企业环境中,尤其是在 Windows 环境中(例如 Active Directory 使用 Kerberos 作为默认认证协议)。
Kerberos 协议的工作原理基于“对称密钥加密”,其中,KDC 使用共享的密钥来验证每个通信双方的身份。
Kerberos 协议相关名词
-
Client: 访问服务的客户端
-
Server: 提供服务的服务器
-
KDC(Key Distribution Center):密钥分配中心,是 Kerberos 的核心组件,负责管理并分发密钥。
-
AS(Authentication Server):认证服务器,负责最初的身份验证。
-
TGS(Ticket Granting Server):票据授权服务器,负责颁发访问特定服务的票据。
-
-
TGT(Ticket Granting Ticket):是一个特殊的票据,用于向 TGS 请求其他服务的票据。只有通过 AS 验证后的用户才能获得 TGT。
-
ST (Servre Ticket): 服务票据。
(上述名词非常重要!!!!!,是记忆流程必须记住的,以下为拓展)
-
DC (Domain Controller): 域控制器
-
AD (Account Database): 用户数据库
-
Principal:指在 Kerberos 中的实体(用户、服务或设备)。每个 Principal 都有一个唯一的身份标识符。
-
Ticket:是 Kerberos 协议中用于证明身份的认证票据,包含加密信息,证明某个主体已经通过身份验证。
-
Session Key:会话密钥,是用于加密会话流量的临时密钥。Session Key 只在单次会话期间有效。
-
KDC 数据库:存储着所有的 Principal 信息和加密的密钥。
-
Realm:Kerberos 的域,通常对应一个组织的网络范围。Kerberos 只在一个特定的 Realm 内有效。
Kerberos 协议的认证流程
Kerberos 的认证流程主要包括三个阶段:认证请求、票据授权请求和服务请求。以下是该流程的详细描述:
1. 客户端向认证服务器(AS)请求 TGT
-
客户端(用户)向 认证服务器(AS) 发送一个身份验证请求。
-
请求中包含客户端的 Principal 名称,但 密码 不发送,而是通过客户端的密钥(通常为密码的加密形式)生成的请求进行加密。
-
AS 校验客户端身份是否有效,若有效,它将为客户端生成一个 TGT(Ticket Granting Ticket) 和一个 会话密钥(Session Key)。
-
TGT 使用 KDC 的主密钥 加密,会话密钥使用客户端和 AS 共享的密钥加密。
AS 响应:
-
返回的响应包含:
-
加密后的 TGT(包括会话密钥)。
-
客户端会用自己的密钥解密 TGT,并获取会话密钥。
-
2. 客户端向票据授权服务器(TGS)请求服务票据
-
客户端使用获得的 TGT 向 TGS(Ticket Granting Server) 请求访问某个服务的票据(Service Ticket)。
-
请求中包含:
-
TGT。
-
要访问的服务的名称。
-
使用 TGT 解密后的会话密钥,以证明客户端身份。
-
TGS 响应:
-
如果请求的服务有效,TGS 将返回:
-
服务票据(Service Ticket)。
-
与服务相关的会话密钥。
-
3. 客户端向服务请求访问权限
-
客户端使用获得的 服务票据 向目标服务(如 Web 服务器、数据库服务器等)请求访问。
-
服务票据包含:
-
服务名称。
-
客户端的身份信息(加密)。
-
服务会话密钥。
-
服务响应:
-
服务器通过解密票据来验证客户端身份,若验证通过,则允许客户端访问服务。
Kerberos 协议流程图解
这张图片是从网上找的,个人觉得非常适合加深对流程的记忆。(附有连接)
https://i-blog.csdnimg.cn/blog_migrate/871864ed195e70904d824f43c61d1dbf.png
Kerberos 协议的工作原理
-
客户端认证阶段:
-
客户端向 AS 请求访问服务的凭证(TGT)。
-
AS 验证客户端身份并发放 TGT 和一个会话密钥。
-
-
TGT 请求服务票据阶段:
-
客户端使用 TGT 向 TGS 请求服务票据(Service Ticket)。
-
TGS 验证请求,并返回服务票据和会话密钥。
-
-
访问服务阶段:
-
客户端使用服务票据访问目标服务,服务验证票据后授予访问权限。
-
Kerberos 协议的安全性
Kerberos 通过以下方式确保安全性:
-
对称密钥加密:通过共享的密钥加密所有数据,保证数据的保密性。
-
防止重放攻击:通过票据和时间戳机制,防止旧票据被重放。
-
会话密钥:每次交互都使用不同的会话密钥,减少密钥被破解的风险。
-
集中化管理:通过 KDC 集中管理所有认证信息,提高管理效率。
Kerberos 协议的优缺点
优点:
-
强身份验证:确保通信双方身份的真实性。
-
一次登录,随时访问:通过 TGT 和服务票据机制,用户无需频繁输入密码。
-
会话密钥:保证每次会话的加密和完整性。
缺点:
-
单点故障:如果 KDC 出现问题,所有的认证请求都会失败。
-
时间同步要求:Kerberos 依赖于时间戳,因此客户端、服务器和 KDC 必须保持时间同步。
-
实现复杂性:部署和管理 Kerberos 可能需要较高的技术要求。
总结
Kerberos 协议通过中心化的认证服务器(KDC)来提供身份验证、数据加密和访问控制,广泛用于企业级网络中。它通过票据机制避免了密码在网络中传输,并确保了通信的安全性。然而,Kerberos 也有一些局限性,如依赖时间同步和 KDC 单点故障等问题。