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