kerberos

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

kerberos 是什么

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

相关概念:

  • mit: 麻省理工
  • DES: data encryption standard
  • AS: authentication service(向client提供 service ticket)
  • TGS:ticket-granting server(向client 提供 某个服务的TGT)
  • KDC: key distribution center(= AS + TGS)
  • AD: account database(存储所有client的名单, 至于存在client才能申请 TGT)
  • DC: domain controller(= AD + KDC)
  • TGT: ticket-granting ticket
  • krbtgt: 创建DC的时候自动生成的特定用户,并由系统随机分配一个密码
  • TGS secret key:krbtgt的随机密码TGS secret key

相关主体:

  • client:
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)
  • server(DC/KDC)
2 Client secret key(AS向AD发送请求 验证username之后 取AD中保存的对应的hash)
3 TGT
3 - TGS secret key (krbtgt的密码)
3 TGS session key
4 service ticket
  • service
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

版本

  • Current release: krb5-1.17.1
  • Maintenance release: krb5-1.16.4
  • Kerberos for Windows: kfw-4.1
  • Historical releases of MIT krb5
  • mit实现的kerberos中停止了对版本4的支持, 原因如下:
    DES是v4使用的唯一加密算法, 然而DES由于它具有较小的key space而达到了生命的终点(存在被穷举的可能), 已经从中联邦信息处理标准(FIPS)被撤销

你可能感兴趣的:(kerberos)