标题：Kerberos
概述
Kerberos：网络认证协议
（Kerberos: Network Authentication Protocol）
Kerberos这一名词来源于希腊神话“三个头的狗——地狱之门守护者”
Kerberos 是一种网络认证协议，其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证，无需基于主机地址的信任，不要求网络上所有主机的物理安全，并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下， Kerberos 作为一种可信任的第三方认证服务，是通过传统的密码技术（如：共享密钥）执行认证服务的。
认证过程具体如下：客户机向认证服务器（AS）发送请求，要求得到某服务器的证书，然后 AS 的响应包含这些用客户端密钥加密的证书。证书的构成为： 1) 服务器 “ticket” ； 2) 一个临时加密密钥（又称为会话密钥 “session key”） 。客户机将 ticket （包括用服务器密钥加密的客户机身份和一份会话密钥的拷贝）传送到服务器上。会话密钥可以（现已经由客户机和服务器共享）用来认证客户机或认证服务器，也可用来为通信双方以后的通讯提供加密服务，或通过交换独立子会话密钥为通信双方提供进一步的通信加密服务。
上述认证交换过程需要只读方式访问 Kerberos 数据库。但有时，数据库中的记录必须进行修改，如添加新的规则或改变规则密钥时。修改过程通过客户机和第三方 Kerberos 服务器（Kerberos 管理器 KADM）间的协议完成。有关管理协议在此不作介绍。另外也有一种协议用于维护多份 Kerberos 数据库的拷贝，这可以认为是执行过程中的细节问题，并且会不断改变以适应各种不同数据库技术。
Kerberos又指麻省理工学院为这个协议开发的一套计算机网络安全系统。系统设计上采用客户端/服务器结构与DES加密技术，并且能够进行相互认证，即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止replay攻击、保护数据完整性等场合，是一种应用对称密钥体制进行密钥管理的系统。Kerberos的扩展产品也使用公开密钥加密方法进行认证。
历史
麻省理工研发了Kerberos协议来保护Project Athena提供的网络服务器。这个协议以希腊神话中的人物Kerberos（或者Cerberus）命名，他在希腊神话中是Hades的一条凶猛的三头保卫神犬。目前该协议存在一些版本，版本1-3都只有麻省理工内部发行。
Kerberos版本4的主要设计者Steve Miller和Clifford Neuman，在1980年末发布了这个版本。这个版本主要针对Project Athena。版本5由John Kohl和Clifford Neuman设计，在1993年作为RFC 1510颁布（在2005年由RFC 4120取代），目的在于克服版本4的局限性和安全问题。
麻省理工在版权许可的情况下，制作了一个Kerberos的免费实现工具，这种情况类似于BSD。在2007年，麻省理工组成了一个Kerberos协会，以此推动Kerberos的持续发展。
因为使用了DES加密算法（用56比特的密钥），美国出口管制当局把Kerberos归类为军需品，并禁止其出口。一个非美国设计的Kerberos版本4的实现工具KTH-KRB由瑞典皇家理工研制，它使得这套系统在美国更改密码出口管理条例（2000年）前，在美国境外就可以使用。瑞典的实现工具基于一个叫做eBones的版本，而eBones基于麻省理工对外发行的基于Kerberos版本4的补丁9的Bones（跳过了加密公式和对它们的函数调用）。这些在一定程度上决定了Kerberos为什么没有被叫做eBones版。Kerbberos版本5的实现工具，Heimdal，基本上也是由发布KTH-KRB的同一组人发布。
Windows2000和后续的操作系统都默认Kerberos为其默认认证方法。RFC 3244记录整理了微软的一些对Kerberos协议软件包的添加。RFC4757"微软Windows2000Kerberos修改密码并设定密码协议"记录整理了微软用RC4密码的使用。虽然微软使用了Kerberos协议，却并没有用麻省理工的软件。 
苹果的Mac OS X也使用了Kerberos的客户和服务器版本。 
Red Hat Enterprise Linux4 和后续的操作系统使用了Kerberos的客户和服务器版本。 
IETF Kerberos的工作小组在2005年更新了说明规范，最近的更新包括：
"加密和校验和细则"（RFC 3961） 
"针对Kerberos版本5的高级加密算法（AES）加密"（RFC 3962） 
Kerberos版本5说明规范的新版本"Kerberos网络认证服务（版本5）"（RFC 4120）。这个版本废弃了早先的RFC 1510，用更细化和明确的解释说明了协议的一些细节和使用方法。 
GSS-API的一个新版本"Kerberos版本5 普通的安全服务应用软件交互机制：版本2"（RFC 4121） [1]
协议结构
Kerberos 信息* 客户机/服务器认证交换
<
信息方向 信息类型
客户机向 Kerberos KRB_AS_REQ
Kerberos 向客户机 KRB_AS_REP或KRB_ERROR
* 客户机/服务器认证交换
信息方向 信息类型
客户机向应用服务器 KRB_AP_REQ
[可选项] 应用服务器向客户机 KRB_AP_REP或 KRB_ERRORR
* 票证授予服务（TGS）交换
信息方向 信息类型
客户机向 Kerberos KRB_TGS_REQ
Kerberos 向客户机 KRB_TGS_REP或KRB_ERROR
* KRB_SAFE 交换
* KRB_PRIV 交换
* KRB_CRED 交换
Kerberos的是MIT为雅典娜(Athena)计划开发的认证系统。Kerberos的组成Kerberos应用程序库：应用程序接口，包括创建和读取认证请求，以及创建safe message 和private message的子程序。
加密/解密库：DES等。
Kerberos数据库：记载了每个Kerberos 用户的名字，私有密钥，截止信息(记录的有效时间，通常为几年)等信息。
数据库管理程序：管理Kerberos数据库
KDBM服务器(数据库管理服务器)：接受客户端的请求对数据库进行操作。
认证服务器(AS)：存放一个Kerberos数据库的只读的副本，用来完成principle的认证，并生成会话密钥．
数据库复制软件：管理数据库从KDBM服务所在的机器，到认证服务器所在的机器的复制工作，为了保持数据库的一致性，每隔一段时间就需要进行复制工作．
用户程序：登录Kerberos，改变Kerberos密码，显示和破坏Kerberos标签（ticket）等工作。
Microsoft Windows Server 2003操作系统上实现了Kerberos5身份验证协议。Windows　Server2003总是使用扩展公钥身份验证机制。KerBeros身份验证客户端作为SSP（Security Support Provider）通过访问SSPI（Security Support Provider Interface）来实现身份验证。用户身份验证初始化过程被集成在Winlogon这SSO（Single Sign-On）体系中。
缺陷
1.失败于单点：它需要中心服务器的持续响应。当Kerberos服务结束前，没有人可以连接到服务器。这个缺陷可以通过使用复合Kerberos服务器和缺陷认证机制弥补。
2.Kerberos要求参与通信的主机的时钟同步。票据具有一定有效期，因此，如果主机的时钟与Kerberos服务器的时钟不同步，认证会失败。默认设置要求时钟的时间相差不超过10分钟。在实践中，通常用网络时间协议后台程序来保持主机时钟同步。
3.管理协议并没有标准化，在服务器实现工具中有一些差别。
4.因为所有用户使用的密钥都存储于中心服务器中，危及服务器的安全的行为将危及所有用户的密钥。
5.一个危险客户机将危及用户密码。
专业词语
一种认证标准，通过使用一台中央服务器来提供“票据”，供其他在网络上提供资源的服务器进行识别。在Windows 2000, XP, Server 2003, Vista, 以及Longhorn, 还有UNIX系统，都对它进行支持。