一张图明了Kerberos原理

来源:互联网 发布:网络社会工作局局长 编辑:程序博客网 时间:2024/06/05 00:35

一、背景:

Keberos是一个分布式的身份认证体系,已经在许多系统中获得广泛应用的认证协议。采用票据机制可以在不安全的网络环境进行安全的身份认证,并且可以实现双向认证,提供了数据的保密性及完整性保护。由MIT首次提出,历经5个版本,目前我们指的kerberos协议一般指的kerberos5协议。

二、使用场景:

在C/S模型架构下,一个Client进行访问某个Server时,Server需要验证该Client是否一个可被授权服务的用户,在传统身份验证机制下,Client是通过将用户ID及密码发送给Server,然后Server进行验证该密码及用户的正确性。由此,引发几个问题:

1、用户及密码在网络中传播,容易造成密码暴露;

2、分布式时,无法不同Server间身份认证进行共享,每个服务均有一套身份认证逻辑;

3、无法双向验证,只能由Server验证Client合法性,而Client一般不容易验证Server的合法性

使用Kerberos分布式认证机制就能很好地解决此类身份认证问题

三、Kerberos原理:

Kerberos协议本身就是一种票据协议,通过生成具有有效期的票据可以灵活地根据不同网络环境及安全级别进行破解保护,通过有效期可以防范对称加密算法在一定时间内被破解的风险。

Kerberos协议非常类似于病人到医院里看病的场景:

1、医生只根据你手上当天的挂号单(票据)是否与有本人姓名一致就可以看病,而不需要对你是不是本人作过多验证,因为医生是信任挂号单;

2、挂号单这一个票据是通过你的身份证(票据)到挂号窗口进行挂号取到的,挂号窗口会将你的身份证与你进行信息匹配;

3、而你的身份证则是通过公安机关对你的身份做验证,以证明“你就是你本人”,在一系列的审批流程通过时才会给派发身份证这一个票据,身份证本身也是有效期。

回到Kerberos协议本身,网上有太多教程式讲解,读完后很容易让读者一脸呆蒙,主要是由于Kerberos涉及了好几个组件及票据,这些组件和票据在不同阶段有着不同意义和交互,下面我通过这一张交互图,让大家清晰地理解Kerberos协议的一个交互过程以及各个组件票据的意义和用途。大家结合上述病人看病场景会更加容易理解此过程。


四、名词释义:

1、授权中心(AS):主要提供了用户身份验证服务,通过查询本地用户服务里的对应用户ID的信息进行通过密码匹配来验证该Client需要请求服务的用户信息是否合法,如果合法则返回TGT和TGS SessionID

2、票据授权票据(TGT):通过使用票据中心(TGS)的共享密钥进行加密SessionID、用户ID、有效期这三者内容而生成的票据

3、票据授权中心(TGS):验证Client传递过来的TGT,通过自身密钥解密出TGT内容,取出SessionID再解密Client的验证信息,从而判断TGT里的用户ID是否与Client验证信息里的用户ID是否一致。如果一致则返回对应需要请求服务的ST有ST Session ID

4、服务票据(ST):使用对应服务的服务器共享密码加密ST SessionID、用户ID、有效期

5、密码分发中心(KDC):包含授权中心(AS)及票据授权中心(TGS)这两个组件

原创粉丝点击