首页 > 其他 > 详细

KERBEROS协议知识

时间:2020-03-20 00:06:55      阅读:90      评论:0      收藏:0      [点我收藏+]

KERBEROS协议要解决的问题:

1.认证

2.完整性

3.保密性

KERBEROS协议,是在分布式环境下,为了解决互联网通信的(基于C/S模型)协议,该环境下有客户机(C)和(应用)服务器(V)。

该协议要实现双向认证,从C到V的认证,也要实现V到C的认证。

原来的场景:有很多个用户,比如C1,C2,C3 还有很多个服务器,比如V1,V2,V3

C1要请求V1的服务,就要验证V1,然后V1要验证C1;C1要请求V2的服务,还要重复上面繁琐的过程。不具有可扩展性,诸多C和诸多V要进行相互验证(如果是基于对称密钥的验证,又要完成对称密钥的共享)

KERBEROS的核心思想: 首先基于一个可信第三方AS(Authentication Server),然后把其他各个服务器的认证服务汇聚到这个AS上。

这样我们的认证就可以简化成一步,本来是C1去V1登录,验证。现在改到去AS上验证,如果验证通过,那么AS会给C1发一张“票”,通过这张票,C1可以访问V1、V2......(这个过程叫做单点登录) 

这里的密钥交换,密钥协商用的都是对称密钥,没有使用公开密钥。

例子:我们如果在电脑上登录了QQ,我们就可以通过快速登录从而登上QQ音乐,QQ游戏等一系列腾讯产品,不需要繁琐的多次输入密码验证登录。

 

KERBEROS协议解决的问题是:在一个分布式环境中,用户希望获取服务器上提供的服务,服务器能限制授权用户的访问,并能对服务请求进行验证

KERBEROS面临的挑战:

·用户伪装成另一个用户(要完成对用户的验证)

·假冒网络地址(用户把自己的地址(IP/MAS)改成服务器的地址,所以不能用地址来验证用户)

·用户窃听报文交换过程,利用重放攻击进入服务器

 

KERBEROS协议中用到的符号:

C=客户

AS=认证服务器(存放着所有用户口令和用户口令信息)

V=服务器

IDc=在C上的用户标识符

IDv=V的标识符

Pc=在C上的用户口令

ADc=C的网络地址

Kv=AS和V共享的加密密钥

 

KERBEROS协议,是在分布式环境下,为了解决互联网通信的(基于C/S模型)协议。

KERBEROS协议要解决的问题:

1.认证 2.完整性 3.保密性

KERBEROS协议解决的问题是:在一个分布式环境中,用户希望获取服务器上提供的服务,服务器能限制授权用户的访问,并能对服务请求进行验证。

KERBEROS协议要实现双向认证,从C到V的认证,也要实现V到C的认证。

 

原来的互联网通信场景:有很多个用户,比如C1,C2,C3,有很多个服务器,比如V1,V2,V3,C1客户机要访问V1,V2等服务器端取得服务。

首先,C1要请求V1的服务,就要验证V1,然后V1要验证C1;C1要请求V2的服务,还要重复上面繁琐的过程。不具有可扩展性,诸多C和诸多V要进行相互验证(如果是基于对称密钥的验证,又要完成对称密钥的共享)

KERBEROS的核心思想: 首先基于一个可信第三方AS(Authentication Server),然后把其他各个服务器的认证服务汇聚到这个AS上。

这样就可以把认证过程就简化成一步,本来是C1去V1上验证。现在改到去AS上验证,如果验证通过,那么AS会给C1发一张“票”,通过这张票,C1可以访问V1、V2......(这个过程叫做单点登录) 

(这里的密钥交换,密钥协商用的都是对称密钥,没有使用公开密钥)

例子:我们如果在电脑上登录了QQ,我们就可以通过快速登录从而登上QQ音乐,QQ游戏等一系列腾讯产品,不需要繁琐的多次输入密码验证登录。

 

KERBEROS面临的挑战:

·用户伪装成另一个用户(要完成对用户的验证)

·假冒网络地址(用户把自己的地址(IP/MAS)改成服务器的地址,所以不能用地址来验证用户)

·用户窃听报文交换过程,利用重放攻击进入服务器

 

KERBEROS协议中用到的符号:

C=客户

AS=认证服务器(存放着所有用户口令和用户口令信息)

V=服务器

IDc=在C上的用户标识符

IDv=V的标识符

Pc=在C上的用户口令

ADc=C的网络地址

Kv=AS和V共享的加密密钥

 

一个简单的基于可信第三方的认证对话:    (在这里第三方只完成了认证,授权还在应用服务器上完成)

(1)C->AS:IDc||Pc||IDv 客户机c的ID 客户机的用户口令 想要访问的服务器V的标识符

(2)AS->C:Ticket

(3)C->V:IDc||Ticket 客户机的ID 票

Ticket=Ekv[IDc||ADc||IDv] 票里的数据:客户机的ID 客户机的网络地址 服务器V的ID

 

上述协议存在的问题:

要求用户频繁输入口令

申请不同的服务,用户需要新的票据 

口令明文发,可能被窃取

对手窃听到Ticket,模仿C进行重放攻击 (攻击者只需把网络地址改成C的网络地址)

 

简单的协议改进                            (这里,认证和授权都在AS上了)

增加票据许可服务器TGS(进一步剥离应用服务器上的授权功能,汇集到TGS服务器上)

技术分享图片---做认证

技术分享图片---(3)C去TGS请求授权          (4)TGS服务器给C发张票

 

 

 技术分享图片      TS时间戳(发票时间)      Lifetime有效期          保证Ticket鲜活性

一般Ticket tgs的时间一般长一点

Ticket V的时间稍短

 

技术分享图片

先认证 认证只做一次,以后访问应用服务器时 在授权,不需要在认证了,完成了单点登录

 

 

 注意:重放攻击没有解决

上述协议存在的问题:

每一张ticket的有效期限设置:如果太短,要求用户频繁认证  如果太长,存在较大风险遭受重放攻击

攻击者可能偷窃Ticket,在过期之前使用

服务器如何向用户认证自己

 

TGS服务器和V服务器都缺乏对客户C的认证

 

真正的KERBEROS协议

前设条件

技术分享图片

 

KERBEROS V4对话

技术分享图片 

Kc,tgs 是会  话密钥 是AS服务器给客户C和tgs服务器协商的会话密钥         没有这个K c,tgs  那么客户机和tgs服务器就不能进行身份认证了

 

 

技术分享图片 

 TS3 (认证字)用来认证 用本地时间戳减去TS3 在合理误差之内 就承认他   可以抵挡重放攻击

 (这个协议要求机器的时间同步,主要应用在局域网环境下,互联网环境不好用,因为时间误差可能比较大)

 

 

 

 技术分享图片

TS5 也是认证字 防止重放攻击

 

 

 

 

注意:1.AS帮助C和tgs之间写上了一个对称秘钥叫做Kc,tgs 可以实现tgs服务器和客户C之间的双向认证

同样 tgs服务器 也为C和V服务器协商了一个会话密钥 叫做Kc,v 由此c和v能实现双向的身份认证

2.该协议使用时间戳 作为随机数 进行身份认证 所以适用范围首先(参与通信的主机之间能够精确同步时钟是才能用)

3.质询和应答 使用认证字 (时间戳) 第三步 第四步 第五步 第六步      (随机数+1 也是常见的质询与应答)

 

技术分享图片

 

 KERBEROS会话全过程

 

KERBEROS协议知识

原文:https://www.cnblogs.com/sjyu/p/12525283.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!