定义
Kerberos是一种在开放、不受保护的网络上验证通信双方身份的认证协议。它的设计不依赖主机操作系统的身份声明,不以主机地址作为信任依据,也不要求网络上所有主机具备物理安全,而是假定网络中传输的数据包可能被任意读取、修改或插入。[1]在这样的前提下,Kerberos借助传统的共享密钥密码技术,以可信第三方认证服务的方式完成身份核验。[4]
参与认证的实体称为主体,包括用户、工作站和网络服务器等;每个主体与密钥分发中心共享一把长期密钥,认证过程就围绕这把密钥的证明展开。[1]协议本身只负责验证身份,不负责判断某个身份可以访问哪些资源。[5]
原理
Kerberos的核心是密钥分发中心(Key Distribution Center,KDC),它在逻辑上由认证服务器(Authentication Server,AS)和票据授予服务器(Ticket-Granting Server,TGS)两部分组成,实际部署中通常作为同一台服务器上的不同协议入口。[1]KDC维护一个保存主体及其密钥的数据库,并为每个所属的域(realm)提供票据与临时会话密钥。[6]
一次完整的登录大致分三步。客户端先用明文向AS请求凭据,AS返回的回应使用客户端密钥加密,内含一张票据和一个临时会话密钥;这张票据通常就是票据授予票据(Ticket-Granting Ticket,TGT)。随后客户端拿TGT向TGS申请目标服务器的服务票据,回应使用TGT中的会话密钥加密。最后客户端把服务票据连同鉴别符发送给应用服务器,票据中含客户端身份和一份会话密钥的副本,全部以服务器密钥加密;鉴别符用会话密钥加密并带时间戳,用以证明客户端确实持有该会话密钥且消息是新鲜的。[1]
票据的传递方式可以概括为下面的交换关系:
鉴别符中的时间戳使服务器能够判断消息是否在允许的时间偏移内生成,从而识别重放;会话密钥从不在网络上以明文出现,因此只有请求方与服务器知晓它。[1]为了减少服务器的记账负担,网络中各主机的时钟只需大致同步,允许的偏移通常被配置为5分钟左右。[1]此外,票据可携带转发、代理、可续期、延迟生效等标志,用于支持跨系统委派身份或事后生效等场景,域之间也可以通过交换域间密钥实现跨域认证。[1]
发展历程
Kerberos的设计始于20世纪80年代初,是麻省理工学院(MIT)雅典娜计划的组成部分,用于保护该计划提供的网络服务。[3][7]早期的第1至第3版仅在麻省理工学院内部使用,第4版于1989年1月公开发布,第5版自1993年起可用。[2]该协议最初的设计与实现工作由史蒂夫·米勒、克利福德·诺伊曼等人完成,第5版的设计由诺伊曼和约翰·科尔主导。[1]
第5版的协议规范于1993年作为RFC 1510发布,2005年7月由RFC 4120取代,后者作为标准轨道文档对协议进行了更清晰的说明,并更新了要求的加密与校验算法。[1][8]此后又有多份文档对第5版进行扩展和修订,涵盖公钥初始认证、AES加密、预认证框架以及废弃弱加密算法等方向。[9]由于早期版本使用DES加密算法,Kerberos曾被美国出口管制部门视为加密产品而受到出口限制,瑞典皇家理工学院等机构为此开发了在境外可用的实现。[6]2007年,麻省理工学院成立Kerberos联盟,为协议的持续改进获取资金与资源。[3]
应用
Windows 2000及其后续操作系统把Kerberos作为默认的认证方法,用于桌面系统与服务器之间、服务器与服务器之间的身份验证。[2]在这类环境中,域控制器承担密钥分发中心的角色,账号信息存放在目录服务数据库中,因此通常只有目录服务中的用户账号和计算机账号才能使用Kerberos认证。为了让客户端找到服务,服务端需要正确注册服务主体名称,网络内还需要域名解析服务配合。
在类Unix系统上,Kerberos有多个免费实现,包括麻省理工学院持续维护的软件包和主要在北美以外开发的Heimdal,后者常见于非商业的类Unix系统。[6]苹果的Mac OS X和Red Hat Enterprise Linux 4及后续版本也使用了Kerberos的客户端与服务器组件。[2]远程登录、远程文件复制等高风险操作都可以借由Kerberos提升安全性与可控性。[5]应用程序既可以直接调用Kerberos库,也可以通过通用安全服务应用程序接口来使用它。[1]
局限
Kerberos本身并不解决拒绝服务攻击。协议中存在攻击者可以阻止应用正常完成认证步骤的环节,这类问题通常交由管理员和用户处理。[1]密钥分发中心也是一个集中点:一旦KDC被攻破,依赖它的域内所有主体密钥都面临风险;若KDC不可用,网络中依赖它的认证也会随之中断。因此KDC通常需要运行在物理安全、专用且访问受限的主机上。[1]
时间戳机制带来对时钟同步的依赖。票据和鉴别符中的时间戳只有落在很小的允许差异内才被认为有效,而分布式环境很难保证各机器时钟精确同步,网络延迟的变化也使这一要求难以完全满足。[1]与之相关的是口令猜测问题:在未启用预认证时,任何人都可以为主体请求凭据,攻击者由此获得用对方密钥加密的密文,从而离线进行字典或暴力破解;若用户口令强度不足,这类攻击可能成功。[1]此外,Kerberos的基本形式不提供完全前向保密,若通信被记录、且用户、应用服务器或KDC的密钥事后泄露,先前用会话密钥保护的报文可能被解密。[1]
协议只负责身份认证,不提供授权与审计功能。持有某服务的票据只能证明客户端通过了该服务的身份核验,应用仍需自行判断该身份是否有权使用相关资源。[1][5]同样地,认证交换本身只覆盖连接的建立阶段,若应用不对后续数据做完整性或加密保护,就不能保证后续报文来自同一主体。[1]
参见
参考资料
- rfc-editor.org 上的网页 [引用日期2026-10-14]
- [科普中国]-Kerberos [引用日期2026-10-14]
- The MIT Kerberos Implementation [引用日期2026-10-14]
- download-documents [引用日期2026-10-14]
- kerberos5 [引用日期2026-10-14]
- kerberos5 [引用日期2026-10-14]
- MIT wins prestigious award for Kerberos work [引用日期2026-10-14]
- rfc4120 [引用日期2026-10-14]
- 1.2.3-standards [引用日期2026-10-14]