Kerberos 认证协议
Kerberos 协议是一种基于可信第三方—密钥分配中心(Key Distribution Center,KDC)的高效的网络认证机制,由美国麻省理工学院(MIT)雅典娜(Athena)项目小组在 20 世纪 80 年代提出。Kerberos 是古希腊神话中守护地狱之门的一条凶猛的三头蛇尾神犬,Kerberos 协议由此得名。

Kerberos 网络认证协议的设计目标是通过密钥系统为客户—服务器(C/S)应用程序提供认证服务。
假设网络中存在 N 个用户,希望他们能够完成两两认证:如果采用公钥密码体制的认证模式,则每个用户都需要拥有一个密钥对,总体需要 N 个密钥对;如果采用对称密码体制,则每对用户需要拥有一个共享的密钥,总体需要 N(N-1)/2 个密钥对。因此,上述方案的可扩展性较差。
如果采用 Kerberos 方案,用户之间不需彼此共享密钥,只需同可信任的第三方共享密钥:A 与 KDC 共享密钥 KA,B 与 KDC 共享密钥 KB,以此类推。同时,KDC 需要只有自己知悉的主密钥 KKDC。这样,KDC 担当了中间人的角色,以确保任何一对用户之间都能够安全地通信,而且这种方式的可扩展性很强。
Kerberos 认证协议的假定
在一个 C/S 体系结构的分布式网络环境中,使用一个或多个 Kerberos 服务器来实现身份鉴别。在客户机请求访问应用服务器上的资源服务时,首先由客户机向 KDC 请求一张身份证明并交给应用服务器验证,服务器验证通过方可为客户机提供所请求的资源服务。
KDC 主要由两个独立的逻辑部分组成:认证服务器(Authentication Server,AS)和票据授权服务器(Ticket Granting Server,TGS)。KDC 持有一个密钥数据库。本质上,网络中的每个实体(C/S)均与 KDC 分享一个密钥,该密钥只有实体自身与 KDC 知道,密钥的内容用于证明实体彼此的身份。
客户机要访问应用服务器的资源,必须首先通过应用服务器的认证。这种认证的前提是客户机向应用服务器提供从 KDC 获得的一个会话票据,而这个会话票据是由服务器的主密钥加密过的。 Kerberos 实际上就是一种基于票据(ticket)的认证方式。
实践中,Kerberos 的票据分发过程比较复杂,客户机在从 KDC 处获得会话票据前,需要先获得一个票据授权票据(Ticket Granting Ticket,TGT),这个 TGT 仍然是由 KDC 来分发的。

Kerberos 认证协议的流程
整个kerberos认证的过程较为复杂,三次通信中都使用了密钥,且密钥的种类一直在变化,并且为了防止网络拦截密钥,这些密钥都是临时生成的Session Key,即他们只在一次Session会话中起作用,即使密钥被劫持,等到密钥被破解可能这次会话都早已结束。

Kerberos 协议的优点
1.优良的性能
Kerberos 认证具有较高的性能。虽然 Kerberos 认证过程涉及客户机、服务器和 KDC 三方,但是一旦客户机获得了用于访问某个服务器的票据,该服务器就可以根据票据实现对客户机的验证,不需 KDC 继续参与。同时,服务器是通过验证客户端提供的票据来进行身份认证的,客户机一旦获得了特定服务器的信任,以后就能够直接登录网络来重复使用该票据,通过可恢复的服务票证来实现身份认证。
2.支持双向认证
Kerberos 可以实现通信双方的双向认证,客户机在访问服务器的资源之前可以要求对服务器的身份进行验证。
3.良好的互操作性
Kerberos 被公布后,获得了广泛应用和改进,目前已经成为网络分布式计算领域一个被广泛接受的标准,易于实现不同平台之间协同工作、分步计算等互操作。
4.高度的透明性
用户在使用 Kerberos 认证的过程中,只需在登录时输入密码(口令),合法用户直观上感觉不到 Kerberos 的存在,因此 Kerberos 对于合法用户来说完全透明。
Kerberos 协议的缺点
1.密码体制和密钥管理方面的不足
一方面,Kerberos 协议大多采用对称密码体制来实现加解密运算,安全性不及公钥密码体制;另一方面,在分布式网络中用户数较大时,在 N 个用户同时通信时,仍然需要 N(N-1)/2 个密钥,如果再采用公钥密码体制,密钥管理将变得更复杂。
2.性能与安全瓶颈问题
Kerberos 拥有每个用户口令的单向函数值(通常是哈希值),Kerberos 中的 AS 和 TGS 采用集中式管理方式,AS 与 TGS 负责用户间通信密钥的分配,系统的性能和安全性过分依赖这两个服务自身的性能和安全性,容易形成瓶颈。该协议也不提供数据完整性检测等。

