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协议
前设条件
术语:
・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会话全过程