n年前的射出的剑正中眉心,记录Kerberos认证过程。
简介
Kerberos是一种网络认证协议,常用于Client在不安全的环境中,基于密钥加密向Server完成自身的身份验证。
组成部分
- AS:authentication Server
- TGS: Ticket Granting Server
- client
- server
Kerberos认证过程
以最终实现client访问Server为例
C->AS :(C,”TGS”,T1) ,首先Client向AS发送请求,请求AS向Client颁发凭证
AS->C:(TGT, ticket-tgs),AS接受到请求后,向C颁发使用两个票据
1
2TGT:使用K(c)进行加密,加密内容为(K(c,tgs),"TGS",T2,L2,ticket-tgs)
ticket-tgs:使用K(tgs)进行加密,加密内容为("C","TGS",K(C,TGS),T2,L2)C->TGS,Client接收到TGT后,使用自己的密码K(c)解密得到如下内容
1
K(c,tgs),"TGS",T2,L2,ticket-tgs
然后Client使用K(c,tgs)对(C,T3)加密产生Auth(c,tgs),并将如下内容一起发送给TGS
1
("C","S",ticket-tgs,Auth(c,tgs))
TGS->C, TGS首先用k(tgs)解密ticket-tgs得到
1
("C","TGS",K(C,TGS),T2,L2)
然后使用K(C,TGS)解密Auth(c,tgs)得到(C,T3),完成对Client的认证,此时TGS向Client使用K(C,TGS)签发如下凭证并发送
1
2
3Ek(c,tgs)["S",K(C,S),Ticket-s,T4]
Ticket-s = Ek(s)[K(C,S),"C","S","T4","L4"]C->S,Client接收到消息后使用K(c,tgs)解密得到
1
["S",K(C,S),Ticket-s,T4]
然后Client向Server发送
1
2"C",ticket-s,Auth(c,s)
Auth(c,s) = Ek(c,s)("C",T5)S->C,Server使用k(s)解密ticket-s后得到
1
K(C,S),"C","S","T4","L4"
并用K(C,S)解密Auth(c,s)得到(C,T5),再次使用
K(C,S)加密(T5+1),认证完成
黄金票据与白银票据
- 黄金票据:ticket_tgs,因为可以用来向TGS换取任何域内服务的访问权限
- 白银票据:ticket—s,只能访问某个具体服务的服务票据
本文链接: https://blog.yd0ng.top/2025/12/07/Kerberos%E5%8D%8F%E8%AE%AE/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!