kerberos

2020-02-02  本文已影响0人  Jassi

https://web.mit.edu/kerberos/

kerberos 是什么

kerberos是一种网络认证协议, 它通过secret-key的加密方式 为client/server app提供了强大的认证能力, windows就是使用这个认证, 它不依赖于主机操作系统的认证 也不依赖与主机的物理安全。
kerberos认证 是有第三方完成的 they are client/service/KDC

相关概念:

相关主体:

1 username/web address/service name
2 client secret key
3 TGT(encrypted)
3 TGS session key
4 service session key
4 service ticket(encrypted)
2 Client secret key(AS向AD发送请求 验证username之后 取AD中保存的对应的hash)
3 TGT
3 - TGS secret key (krbtgt的密码)
3 TGS session key
4 service ticket
4 service secret key
4 service ticket

how does it work?

  1. client 登录 提供client secret key & (username, service name, web address等) , request to server
  2. server 先确认 username 的在KDC中存在 再随机生成 TGS session key, 并且向client 发送以下两条message:
A: client secret key 加密的 TGS session key/timestamp/lifetime
B(TGT): TGS secret key加密的 TGS session 
key+client info(/timestamp/lifetime/user name/web address)+service info(service name/))
  1. client get message A&B, 用自己的client secret key 解密A=>TGS session key并且cache it
  2. client 向 server发送以下两条消息
C: 明文的TGT、service name 、web address、user name
D: TGS session key加密的username(username/timestamp/lifetime)
  1. server 先确认service name 在KDC中存在, 然后用自己的TGS secret key 解密C中的TGT =>TGS session key,进而解密D, 对比D和TGT中的 username/timestamp/lifetime等信息, 其实就是 校验server发出的A信息 经过client之后 有没有变化, 至此 完成可 client和server之间的session key的交换和身份验证

  2. server 随机生成一个 service session key,并将以下message 发给 client

E(service ticket): 用service secret key 加密的 service session key / username/servicename/network address/lifetime/timestamp
F: 用TGS session key 加密的 servicename/lifetime/timestamp/service seesion key
  1. client 根据自己cache的TGS session key解密F=>service session key并cache it
  2. client 向service发送以下message
G:E(service ticket)
H:用service session key加密的username/timestamp/lifetime

1.service 用自己的service secert key解密 service ticket=>service session key/username/lifetime/timestamp等信息, 再用service session key 解密H, 对比H和ticket中username 、timestamp等信息, 即校验server发送给client中的F 经client之后 有没有变化,至此 则完成了 service session key 的交换

  1. service 向client 发送 以下信息
    经过service session key 加密的service id /timestamp
  2. client 就可以用自己cache的 service session key 解密消息,进而完成 client-service的通信

more detail information

版本

上一篇 下一篇

猜你喜欢

热点阅读