Kerberos体系介绍
Kerberos是一种网络认证协议,其设计目标是通过**系统为客户机、服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意的读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术执行的认证服务的。
协议的安全主要依赖于参加者对时间的松散同步和短周期的Kerberos票据的认证声明。下面是这个协议的一个流程图,它主要包括以下几个模块:
AS:认证服务器
KDC:**分发中心
TGT:票据授权票据
SGT:服务许可票据
TGS:票据授权服务器
SS:特定服务器提供端
流程说明如下:
1.客户端发送客户端名和TGS申请到AS服务器
2.AS在数据库中检查是客户是否存在
3.如果客户存在则生成**k1
4.将客户端密码的hash值作为**加密K1
5.产生TGT信息,TGT也包括K1,客户端名,有效期
6.TGT被固定**1加密,该**保存在AS服务器和TGS服务器上
7.发送加密后的k1和TGT信息两个信息到客户端
8.客户端密码正确则可以生成正确的hash值并可解密出正确的k1
9.利用k1为**加密客户端名
10.将k1加密客户端名、TGT、加密后的WEB服务器名发送给TGS服务器获取服务许可票据
11.TGS服务器验证用户身份:用固定**1解密TGT信息获取TGT中的k1**和客户端名
12.从TGS中解密的K1再解密客户端发送过来的,由k1加密的客户端名,并与TGT中的客户端名对比
13.验证两者匹配后,产生服务许可票据SGT,SGT包括TGS为了本次服务产生的临时**K2,客户端名,有效期
14.SGT用固定**2加密。**2分别存放于AS、TGS、和WEB应用服务器。
15.用AS生成的临时**k1为**加密k2
16.将加密后的k2,SGT返回给客户
17.客户端用k1解密得到k2,用k2**加密客户端名
18.客户端将加密后的客户端名、SGT、时间戳发送给WEB应用服务器。
19.WEB应用服务器有固定**2,所以可以解密SGT拿到客户端名和K2**
20.WEB应用服务器通过k2,解密由k2**加密的客户端名,并与SGT中的客户端名对比验证。
21.WEB应用服务器利用k2**加密时间戳返回给客户端并提供服务。
22.客户机通过K2**解密验证WEB应用服务器是否为合法服务器。