详细的 Kerberos 体系介绍

Kerberos 介绍

Kerberos 是一种网络认证协议,其设计目标是通过**系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网上传送的数据包可以被任意地读取丶修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享**)执行认证服务的。

协议的安全主要依赖与参加对时间的松散同步和短周期的叫做 Kerberos 票据的认证声明。下面是对这个协议的一个简化描述,它包括以下几个模:

  • AS (Authentication Server):认证服务器
  • KDC (Key Distribution Center):**分发中心
  • TGT (Ticket Granting Ticket):票据授权票据
  • SGT :服务许可票据
  • TGS (Ticket Granting Server):票据授权服务器
  • SS (Service Server):特定服务提供端

Kerberos 流程图

详细的 Kerberos 体系介绍

  1. 客户机把客户端名+ (TGS申请)发送到 AS 服务器
  2. AS 在数据库中检查是否有客户保存
  3. 如果用户存在则生成临时** k1
  4. 将客户机的密码的 HASH 值作为 KC (KeyClient)**加密 k1,记为KC(K1)
  5. 产生 TGT 信息,TGT 也包括 k1,客户端名,有效期
  6. TGT 会被加密,TGT 加密的**保存在 AS 服务区和 TGS 服务器上,是一个固定** KKdc(固定**1)
  7. 发送KC(K1) 和 TGT 信息两个信息的客户端
  8. 客户端密码正确则可生成正确的 HASH 并可解密出正确的 k1
  9. 利用 k1 为**加密客户端名和 WEB 应用服务器
  10. 将 k1加密的客户端和WEB服务器 丶TGT 发送给 TGS 服务器获取服务许可票据
  11. TGS 服务器验证用户身份用固定**1解密 TGT 信息获取 TGT 中 k1 **和客户端名
  12. 将从 TGS 中解密的 k1 在解解密由于客户端输过来的由 k1 加密的客户端名,并与 TGT 信息中的客户端名对比判断
  13. 产生服务许可票据 SGT, SGT 包含 TGS 为了本次服务生成的临时** k2,客户端名,有效期
  14. SGT 用 ks(固定**2)为**加密,ks(固定**2)分别存放与 AS丶TGS和 WEB 应用服务器,是固定**
  15. 用 AS 生成的临时** k1 为**加密 k2
  16. 将加密后的 K2,SGT 返回给客户
  17. 客户机用 K2 **加密客户机名
  18. 客户机将加密后的客户机名丶SGT丶时间戳发送给 WEB 应用服务器
  19. WEB 应用服务器有 KS(固定**2)**,所以可以解密 SGT 拿到客户端名和 K2 **
  20. WEB 应用服务器通过 K2 **解密由 K2**加密的客户端名,并与 SGT 中的客户端名对比验证
  21. WEB 应用服务器利用 K2 **加密时间戳返回给客户机并提供服务
  22. 客户机通过 K2 **解密验证 WEB 应用服务器是合法服务器