协议(17)

3.7.3  Kerberos

从Needham-Schroeder协议派生出来的一个重要且实用的协议是Kerberos,这是一个源于MIT的分布式访问控制系统,现在是Windows中的标准身份验证工具之一[1224]。Kerberos不只是一个单独的可信第三方,而是有两种角色:一种是让用户登录的身份验证服务器,还有一种角色是给用户发放票据以便其访问各种资源(比如文件)的票据授权服务器。这有利于提供更具可扩展性的访问控制管理。比如,在大学里,通过宿舍楼管理学生,而通过院系来管理文件服务器;在公司里,人事部门把用户注册到薪资系统,而部门管理员负责管理服务器和打印机之类的资源。

首先,Alice使用密码登录到身份验证服务器,其PC机上的客户端软件从服务器取回一张票据,票据使用这个密码加密,并且包含一个会话密钥KAS。假设Alice提供的密码是正确的,现在就可以控制KAS。为访问票据授权服务器S控制下的资源B,要运行以下的协议。协议的输出结果是密钥KAB,带有时间戳TS和生存期L,该密钥可用来对后面Alice与资源B间的通信进行身份验证:

A→S:  A,B

S→A: {TS,L,KAB,B,{TS,L,KAB,A}}

A→B: {TS,L,KAB,A},{A,TA}

B→A: {TA+1}

上面的协议交互过程可以使用自然语言进行描述:Alice向票据授权服务器请求访问B,如果这是允许的,服务器就创建一个含有适当密钥KAB的票据{TS,L,KAB,A}KBS,并发放给Alice使用,此外,Alice还将获取一个以对她可读的方式给出的该密钥的副本,也就是用KAS加密过的。现在她向资源发送一个时间戳TA来检查此密钥,资源给在发送回的时间戳上递增1,以确认自己的存活性(这表明该资源可以正确地对票据进行解密,并且提取出密钥KAB)。

通过引入时间戳而不是随机Nonce,Needham-Schroeder的漏洞已经得以修复。但是,正如大多数生活情形一样,没有绝对的安全。现在又出现了新的漏洞,就是各种客户端和服务器的时钟可能不同步,甚至被更复杂的攻击故意弄得无法同步。

读书导航