Kerberos体系介绍

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

协议的安全主要依赖于参加者对时间的松散同步和短周期的Kerberos票据的认证声明。下面是这个协议的一个流程图,它主要包括以下几个模块:

AS:认证服务器

KDC:密钥分发中心

TGT:票据授权票据

SGT:服务许可票据

TGS:票据授权服务器

SS:特定服务器提供端

Kerberos体系介绍_第1张图片

流程说明如下:

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应用服务器是否为合法服务器。

你可能感兴趣的:(密码学)