摘要:在信息安全领域,"tickets"(票据)通常指的是一种短期的、加密的电子凭证,用于证明用户或服务的身份和授权,以便安全地访问网络资源或服务。它们最核心的作用是实现安全的身份认证和授权委托。
Tickets和Kerberos协议
在信息安全领域,"tickets"(票据)通常指的是一种短期的、加密的电子凭证,用于证明用户或服务的身份和授权,以便安全地访问网络资源或服务。它们最核心的作用是实现安全的身份认证和授权委托。
这个概念最常见于 Kerberos 网络认证协议中,这也是理解"tickets"含义的关键场景:
作用: 这是用户登录后获得的主票据。它证明用户已经成功通过了初始身份验证(例如输入了正确的用户名/密码)。
获取方式: 用户向认证服务器提供凭据(如密码),认证服务器验证成功后,生成并返回一个加密的 TGT。
内容: 通常包含用户身份信息、会话密钥、有效期时间戳等,并使用票据授予服务自己的密钥进行加密(用户无法解密)。
使用: 用户需要访问某个具体服务时,会将 TGT 发送给票据授予服务。TGS 能用自己的密钥解密 TGT,验证其有效性(用户身份、时间戳是否过期等)。验证通过后,TGS 才会为用户颁发访问该特定服务的 Service Ticket。
作用: 这是用于访问特定网络服务(如文件服务器、邮件服务器、数据库)的凭证。
获取方式: 用户向票据授予服务提供 TGT 和想要访问的服务标识符(如服务主体名称)。TGS 验证 TGT 有效后,生成并返回一个针对该特定服务的 Service Ticket。
内容: 包含用户身份信息、会话密钥、有效期时间戳等,并使用目标服务的密钥进行加密(只有目标服务能解密)。
使用: 用户将 Service Ticket 发送给目标服务。目标服务用自己的密钥解密票据,验证其有效性(用户身份、时间戳是否过期等)。验证通过后,服务允许用户访问。
加密: Tickets 的核心信息都是加密的,TGT 用 TGS 的密钥加密,ST 用目标服务的密钥加密。这确保了只有合法的 TGS 和目标服务才能读取票据内容,防止伪造和窃听。
有限生命周期: Tickets 都有明确的有效期(通常几分钟到几小时)。过期后必须重新申请。这限制了票据被截获后滥用的时间窗口。
防重放: 通常包含时间戳或其他防重放机制,防止攻击者截获票据后重复使用。
委托: TGT 允许用户在不重新输入密码的情况下,从 TGS 获取访问各种服务的 ST,实现了认证的委托。
1. 单点登录: 在更广泛的单点登录系统中,成功登录后获得的“令牌”有时也被称为 "ticket"。它允许用户访问多个关联系统而无需重新登录。
2. 票据认证系统: 某些访问控制系统可能使用“票据”作为进入特定区域或使用特定资源的短期凭证。
3. 漏洞赏金/事件响应: 在这些领域,"ticket" 更常指代一个工单,用于跟踪特定的漏洞报告或安全事件的处理流程(例如 Jira Ticket, ServiceNow Ticket)。
在信息安全的核心领域,尤其是身份认证和访问控制方面,"ticket" 主要指 Kerberos 协议中使用的加密凭证(TGT 和 ST)。它的核心价值在于:
安全地传递身份证明: 用户无需在网络中传输密码。
实现单点登录: 用户登录一次(获取 TGT)即可访问多个服务(通过申请 ST)。
授权访问特定资源: ST 明确授权用户访问某个特定服务。
通过加密和时间限制增强安全性: 防止凭证窃取和滥用。
因此,当你在信息安全上下文中听到 "tickets" 时,首先要联想到的就是 Kerberos 协议及其提供的安全认证机制。
Kerberos 是一种网络身份认证协议,由 MIT 在 20 世纪 80 年代开发,旨在为客户端/服务器应用提供强身份验证。其名称来源于希腊神话中守护地狱之门的三头犬,象征着协议的核心设计目标:严密守护网络入口的安全。
核心目标与作用1. 安全身份验证:
允许用户/客户端在不通过网络传输密码的情况下,向服务器证明自己的身份。
2. 单点登录(SSO):
用户登录一次即可访问多个受信任的服务(如文件服务器、邮件系统),无需重复输入密码。
3. 防止窃听与重放攻击:
通过加密票据和时间戳机制,阻止攻击者截获凭证后冒充用户。
Kerberos 系统依赖三个关键角色:
1. 客户端(Client):
需要访问服务的用户或应用程序。
2. 服务端(Server):
用户要访问的资源(如文件服务器、数据库)。
3. 密钥分发中心(KDC - Key Distribution Center):
Kerberos 的核心大脑,由两部分组成:
- 认证服务器(AS):验证用户初始身份,发放 TGT。
- 票据授予服务器(TGS):根据 TGT 发放服务票据(ST)。
1. Alice 输入用户名和密码登录客户端。
2. 客户端向 AS 发送身份请求(仅含用户名)。
3. AS 验证用户名存在后:
- 生成一个 会话密钥(Session Key A) 用于 Alice 与 TGS 的通信。
- 创建 TGT(票据授予票据),包含:
- Alice 的用户名
- TGS 会话有效期
- 会话密钥 A(Session Key A)
- TGT 使用 TGS 的密钥加密(客户端无法解密)
- 向客户端发送:
- 用 Alice 密码派生的密钥加密的会话密钥 A
- 加密后的 TGT
> ✅ 关键点:客户端用 Alice 的密码解密获得 会话密钥 A,但无法解密 TGT(需 TGS 的密钥)。
4. 当 Alice 需要访问文件服务器时:
- 客户端向 TGS 发送请求:
- 服务名(如 `fileserver@company.com`)
- 加密的 TGT
- 认证器(Authenticator):用 会话密钥 A 加密的客户端时间戳(防重放)。
5. TGS 收到请求后:
- 用 TGS 密钥 解密 TGT,获取 会话密钥 A 和 Alice 的身份。
- 用 会话密钥 A 解密认证器,验证时间戳是否有效(防重放)。
- 验证通过后:
- 生成一个新的 服务会话密钥(Session Key B) 用于 Alice 与文件服务器通信。
- 创建 服务票据(ST),包含:
- Alice 的用户名
- ST 有效期
- 会话密钥 B
- ST 使用 文件服务器的密钥加密(客户端无法解密)
- 向客户端发送:
- 用 会话密钥 A 加密的 会话密钥 B
- 加密后的 ST
6. 客户端向文件服务器发起请求:
- 发送 加密的 ST
- 发送新的 认证器(用 会话密钥 B 加密的时间戳)。
7. 文件服务器收到后:
- 用 自己的密钥 解密 ST,获取 会话密钥 B 和 Alice 身份。
- 用 会话密钥 B 解密认证器,验证时间戳。
- 验证通过后,允许 Alice 访问资源。
对称加密:所有票据和会话密钥均使用 AES 等对称加密算法保护(如 AES-256)。 时间戳:认证器包含加密时间戳,有效防止票据被截获后重放(通常容忍 5 分钟时间偏差)。
有限有效期:TGT 和 ST 均有短暂有效期(通常几小时),超时需重新认证。
双重加密防护:用户密码从未在网络传输;票据内容仅服务方或 KDC 可解密。
实际应用场景- 企业 Active Directory 域:
Windows 域认证的核心协议,域用户登录后自动获取 TGT,访问域内资源(共享文件夹、打印机等)无需重复输入密码。
- UNIX/Linux 系统:
通过 MIT Kerberos 或 Heimdal 实现跨平台认证。
- Hadoop 安全认证:
Kerberos 用于保护大数据集群内部服务通信。
- 数据库访问控制:
如 PostgreSQL、MySQL 支持 Kerberos 认证。
Kerberos 的本质是通过可信第三方(KDC)签发加密票据(TGT/ST),代替密码在网络中传递身份凭证。它解决了传统密码传输的安全风险,成为企业内网身份认证的基石。理解其核心流程(AS → TGS → Service)和票据(TGT/ST)的双层结构,是掌握 Kerberos 的关键。
来源:法律联讯