KERBEROS协议知识
KERBEROS协议要解决的问题:
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协议
前设条件
术语:
·AS=认证服务器(存放着所有⽤户及⽤户⼝令信息)
·
Kv=TGS和V共享的加密密钥
·Ktgs=AS和TGS共享的加密密钥
客户机的密钥可以通过计算客户机⼝令的单向函数来得到
每个客户机与AS有共享的秘密⼀客户机的密钥
TGS与AS有共享的对称密钥Ktgs
一生何求 苏妙玲
每个应⽤服务器都与TGS有共享的对称密钥Kv
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会话全过程