网络工作组C.Neuman征求意见:4120 USC-ISI过时:1510T.Yu先生类别:标准轨道S.HartmanK.雷伯恩麻省理工学院2005年7月Kerberos网络身份验证服务(V5)关于下段备忘本文档为互联网社区,并要求讨论和建议改进。请参阅最新版本的互联网标准化状态的官方协议标准”(STD 1)以及此协议的状态。此备忘录的分发不受限制。版权声明版权所有(C)互联网协会(2005)。摘要本文档提供了第5版的概述和规范Kerberos协议,它已过时副本请求1510澄清方面需要更详细或比中提供的解释更清楚副本请求1510。本文件是旨在提供协议的详细描述用于实施,以及适当用途的说明协议消息和这些消息中的字段。Neuman等人,标准跟踪[第1页]


副本请求4120Kerberos V5 2005年7月目录1.简介。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5
      1.1.Kerberos协议。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6
      1.2.交叉密封操作。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8
      1.3.选择与之沟通的负责人。。。。。。。。。。。。。9
      1.4.授权。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10
      1.5.在不中断互操作性的情况下扩展Kerberos。。。。。。11
           1.5.1.与的兼容性副本请求1510........................11
           1.5.2.发送可扩展消息。。。。。。。。。。。。。。。。。。。。。。。。12
      1.6.环境假设。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12
      1.7.术语表。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。13
   2.票证标志的使用和请求。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。162.1. 初始、预认证和硬件验证票。。。。。。。。。。。。。。。。。。。。。。。。。。。。17
      2.2.无效票据。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。17
      2.3.可续签门票。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。17
      2.4.延期的机票。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。18
      2.5.代理票据和代理票据。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。19
      2.6.可转发票据。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。19
      2.7.转移策略检查。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。20
      2.8.可以作为代表。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。21
      2.9.其他KDC选项。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。21
           2.9.1.可再生-OK。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。21
           2.9.2.ENC-TKT-IN天空。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。22
           2.9.3.无密码硬件验证。。。。。。。。。。。。。。。22
   .消息交换。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。22
      3.1.认证服务交换。。。。。。。。。。。。。。。。。。。。。。。22
           3.1.1.生成KRB_AS_REQ消息。。。。。。。。。。。。。。。。。。。24
           3.1.2.接收KRB_AS_REQ消息。。。。。。。。。。。。。。。。。。。。。。24
           3.1.3.生成KRB_AS_REP消息。。。。。。。。。。。。。。。。。。。24
           3.1.4.KRB_ERROR消息的生成。。。。。。。。。。。。。。。。。。。。27
           3.1.5.接收KRB_AS_REP消息。。。。。。。。。。。。。。。。。。。。。。27
           3.1.6.接收KRB_ERROR消息。。。。。。。。。。。。。。。。。。。。。。。28
      3.2.客户端/服务器身份验证交换。。。。。。。。。。。。。。。。。29
           3.2.1.KRB_AP_REQ消息。。。。。。。。。。。。。。。。。。。。。。。。。。。。。29
           3.2.2.生成KRB_AP_REQ消息。。。。。。。。。。。。。。。。。29
           3.2.3.接收KRB_AP_REQ消息。。。。。。。。。。。。。。。。。。。。。。30
           3.2.4.生成KRB_AP_REP消息。。。。。。。。。。。。。。。。。33
           3.2.5.接收KRB_AP_REP消息。。。。。。。。。。。。。。。。。。。。。。33
           3.2.6.使用加密密钥。。。。。。。。。。。。。。。。。。。。。。。。。。。33
      3.3.票务授权服务(TGS)交换。。。。。。。。。。。。。。。。34
           3.3.1.KRB_TGS_REQ消息的生成。。。。。。。。。。。。。。。。。。35
           3.3.2.接收KRB_TGS_REQ消息。。。。。。。。。。。。。。。。。。。。。37
           3.3.3.生成KRB_TGS_REP消息。。。。。。。。。。。。。。。。。。38
           3.3.4.接收KRB_TGS_REP消息。。。。。。。。。。。。。。。。。。。。。42





Neuman等人,标准跟踪[第2页]


副本请求4120Kerberos V5 2005年7月


      3.4KRB_SAFE交易所。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。42
           3.4.1.生成KRB_SAFE消息。。。。。。。。。。。。。。。。。。。42
           3.4.2.接收KRB_SAFE消息。。。。。。。。。。。。。。。。。。。。。。。。43
      3.5KRB_PRIV交易所。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。44
           3.5.1.生成KRB_PRIV消息。。。。。。。。。。。。。。。。。。。44
           3.5.2.接收KRB_PRIV消息。。。。。。。。。。。。。。。。。。。。。。。。44
      3.6KRB_CRED交易所。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。45
           3.6.1.生成KRB_CRED消息。。。。。。。。。。。。。。。。。。。45
           3.6.2.接收KRB_CRED消息。。。。。。。。。。。。。。。。。。。。。。。。46
      3.7.用户对用户身份验证交换。。。。。。。。。。。。。。。。。。。。。47
   4.加密和校验和规范。。。。。。。。。。。。。。。。。。。。。。。。。48
   5.消息规范。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。50
      5.1ASN.1上的特定兼容性注释。。。。。。。。。。。。。。。。。。。。。51
           5.1.1.ASN.1区别编码规则。。。。。。。。。。。。。。。。。51
           5.1.2.可选整数字段。。。。。。。。。。。。。。。。。。。。。。。。。。。。52
           5.1.3.类型的空序列。。。。。。。。。。。。。。。。。。。。。。。。。。。。52
           5.1.4.无法识别的标签号。。。。。。。。。。。。。。。。。。。。。。。。。。。52
           5.1.5.标签号大于30。。。。。。。。。。。。。。。。。。。。。。。。53
      5.2.基本Kerberos类型。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。53
           5.2.1.KerberosString。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。53
           5.2.2.领域和主体名称。。。。。。。。。。。。。。。。。。。。。。。。。。。。55
           5.2.3Kerberos时间。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。55
           5.2.4.约束整数类型。。。。。。。。。。。。。。。。。。。。。。。。。。55
           5.2.5.主机地址和主机地址。。。。。。。。。。。。。。。。。。。。。。56
           5.2.6.授权数据。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。57
           5.2.7.PA-DATA。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。60
           5.2.8.Kerberos标志。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。64
           5.2.9.与密码系统相关的类型。。。。。。。。。。。。。。。。。。。。。。。。。65
      5.3.门票。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。66
      5.4AS和TGS交易所规范。。。。。。。。。。。。。。。73
           5.4.1.KRB_KDC_REQ定义。。。。。。。。。。。。。。。。。。。。。。。。。。。。。73
           5.4.2.KRB_KDC_REP定义。。。。。。。。。。。。。。。。。。。。。。。。。。。。。81
      5.5.客户端/服务器(CS)消息规范。。。。。。。。。。。。。。。。。84
           5.5.1.KRB_AP_REQ定义。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。84
           5.5.2.KRB_AP_REP定义。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。88
           5.5.3.错误消息回复。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。89
      5.6.KRB_SAFE消息规范。。。。。。。。。。。。。。。。。。。。。。。。。。。。89
           5.6.1.KRB_SAFE定义。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。89
      5.7.KRB_PRIV消息规范。。。。。。。。。。。。。。。。。。。。。。。。。。。。91
           5.7.1.KRB_PRIV定义。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。91
      5.8.KRB_CRED消息规范。。。。。。。。。。。。。。。。。。。。。。。。。。。。92
           5.8.1.KRB_CRED定义。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。92
      5.9.错误消息规范。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。94
           5.9.1.KRB_ERROR定义。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。94
      5.10.应用标签号。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。96






Neuman等人,标准跟踪[第3页]


副本请求4120Kerberos V5 2005年7月


   6.命名约束。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。97
      6.1.领域名称。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。97
      6.2.主要名称。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。99
           6.2.1.服务器主体名称。。。。。。。。。。。。。。。。。。。。。。。。。100
   7常数和其他定义值。。。。。。。。。。。。。。。。。。。。。。。。。。。。101
      7.1.主机地址类型。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。101
      7.2.KDC消息传递:IP传输。。。。。。。。。。。。。。。。。。。。。。。。。。。。。102
           7.2.1.UDP/IP传输。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。102
           7.2.2.TCP/IP传输。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。103
           7.2.3.IP网络上的KDC发现。。。。。。。。。。。。。。。。。。。。。。104
      7.3TGS名称。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。105
      7.4KerberosV5的OID弧。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。106
      7.5.协议常数和相关值。。。。。。。。。。。。。。。。。106
           7.5.1.密钥使用编号。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。106
           7.5.2.预认证数据类型。。。。。。。。。。。。。。。。。。。。。。108
           7.5.3.地址类型。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。109
           7.5.4.授权数据类型。。。。。。。。。。。。。。。。。。。。。。。。。。109
           7.5.5.转换编码类型。。。。。。。。。。。。。。。。。。。。。。。。。。109
           7.5.6.协议版本号。。。。。。。。。。。。。。。。。。。。。。。。。。。109
           7.5.7.Kerberos消息类型。。。。。。。。。。。。。。。。。。。。。。。。。。。。110
           7.5.8.名称类型。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。110
           7.5.9.错误代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。110
   8互操作性要求。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。113
      8.1规范2。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。113
      8.2.建议的KDC值。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。116
   9IANA注意事项。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。116
   10.安全注意事项。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。117
   11.确认。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。121
   A类.ASN.1模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。123
   B类。自以下日期以来的更改副本请求1510........................................131规范性参考文献。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。134参考文献。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。135



















Neuman等人,标准跟踪[第4页]


射频4120Kerberos V5 2005年7月


1.简介本文档描述了概念和模型基于Kerberos网络身份验证系统。它还规定Kerberos协议的版本5。动机、目标、,处理大多数设计决策背后的假设和基本原理粗略;它们在IEEE的一篇论文中得到了更全面的描述通信[NT94型]和前面的Kerberos部分雅典娜技术计划[MNSS87型].本文档不打算向最终用户描述Kerberos,系统管理员或应用程序开发人员。高级论文描述Kerberos系统的版本5[NT94型]和记录版本4[SNS88系列]其他地方都有。Kerberos模型部分基于Needham和Schroeder的可信第三方身份验证协议[NS78型]和上的Denning和Sacco建议的修改[DS81型].  原件Kerberos版本1到4的设计和实现是两位前雅典娜项目工作人员的工作,Steve Miller数字设备公司和Clifford Neuman(现在在南方大学信息科学研究所加利福尼亚州),以及项目技术总监Jerome SaltzerAthena和麻省理工学院校园网络经理Jeffrey Schiller。其他许多雅典娜项目的成员也为以下方面的工作做出了贡献Kerberos。Kerberos协议的版本5(在本文档中描述)具有因为新的需求和对功能的渴望而发展版本4中提供。第5版的设计由Clifford领导Neuman和John Kohl向社区提供了大量意见。这个麻省理工学院参考实现的开发由John Kohl和Theodore Ts'o在许多人的帮助下贡献了代码其他。副本请求1510许多人提出协议的扩展和修订。本文件反映了其中一些建议。如果此类变更涉及重大变更文件引用了提案人的贡献。Kerberos版本4和版本5的参考实现是公开可用的,并且商业实现已经开发和广泛应用。以下各项之间差异的详细信息版本4和5可以在中找到[KNT94系列].关键词“必须”、“不得”、“必需”、“应”、“不应”、,本文件中的“宜”、“宜不”、“建议”、“可”和“可选”文件的解释如[RFC2119协议].Neuman等人,标准跟踪[第5页]


副本请求4120Kerberos V5 2005年7月


1.1.Kerberos协议Kerberos提供了一种验证主体身份的方法,(例如,工作站用户或网络服务器)(未受保护的)网络。这是在不依赖于主机操作系统的断言,而不是基于主机的信任地址,而不需要上所有主机的物理安全网络,并假设数据包沿着网络可以随意读取、修改和插入。Kerberos在这些条件下作为可信的第三方执行身份验证-使用传统(共享机密)的一方身份验证服务密钥)加密。Kerberos的扩展(不在此范围内文档)可以提供在身份验证协议的某些阶段。此类扩展支持使用公钥注册的用户的Kerberos身份验证认证机构并提供公钥的某些好处在需要的情况下进行加密。基本Kerberos身份验证过程如下:A客户端向身份验证服务器(AS)发送请求给定服务器的“凭据”。AS回应如下在客户端密钥中加密的凭据。凭据包括服务器的“票证”和临时加密密钥(通常称为“会话密钥”)。客户端传输票证(包含客户端的标识和会话密钥的副本,所有加密在服务器密钥中)。会话密钥(现在由客户端和服务器共享)用于对客户端进行身份验证并且可以选择用于验证服务器。它也可能用于加密双方之间的进一步通信,或交换用于进一步加密的单独子会话密钥沟通。注意,许多应用程序使用Kerberos的函数仅在基于流的网络连接启动时。除非应用程序对数据流,身份验证仅适用于启动连接,但不保证连接上的后续消息来自同一个负责人。基本协议的实现包括一个或多个在物理安全主机上运行的身份验证服务器。这个身份验证服务器维护主体(即用户)数据库和服务器)及其密钥。代码库提供加密并实现Kerberos协议。为了添加对其事务的身份验证,一种典型的网络应用程序直接或通过Generic添加对Kerberos库的调用安全服务应用程序编程接口(GSS-API)在单独的文档中描述[RFC4121协议].  这些调用导致传输实现身份验证所需的消息。Neuman等人,标准跟踪[第6页]


射频4120Kerberos V5 2005年7月Kerberos协议由几个子协议(或交易所)。客户可以通过两种基本方法询问凭据的Kerberos服务器。在第一种方法中,客户回复以客户端的密钥加密发送。通常情况下此请求是针对票证授予票据(TGT)的,稍后可以与票证授予服务器(TGS)一起使用。在第二种方法中,客户端向TGS发送请求。客户端使用TGT以相同的方式向TGS验证自己联系任何其他需要Kerberos的应用程序服务器身份验证。回复在会话密钥中加密,来自TGT公司。虽然协议规范描述了AS和TGS作为单独的服务器,实际上它们的实现方式不同单个Kerberos服务器中的协议入口点。获得凭据后,可以使用凭据验证事务中的主体,以确保消息的完整性在他们之间交换,或保护消息的隐私。这个应用程序可以自由选择任何必要的保护。要验证事务中主体的身份,请使用客户端将票据发送到应用程序服务器。因为票是“明文”发送的(部分是加密的,但这加密不会阻止重播),并且可能会被截取和重用攻击者会发送附加信息来证明消息来源于向其签发票据的负责人。此信息(称为验证器)在会话密钥,包括时间戳。时间戳证明消息是最近生成的,不是重播。加密会话密钥中的authenticator证明它是由拥有会话密钥的一方。因为除了请求者之外没有其他人主体和服务器知道会话密钥(它从不被发送网络),这保证了客户端。主体之间交换的消息的完整性还可以通过使用会话密钥(传入票据和包含在凭据中)。这种方法可以检测重播攻击和消息流修改攻击。它是通过生成和传输防碰撞客户端的校验和(其他地方称为哈希或摘要函数)消息,使用会话密钥键入。隐私和完整性主体之间交换的消息可以通过加密来保护使用中包含的会话密钥传递的数据票证或在验证器中找到的子会话密钥。Neuman等人,标准跟踪[第7页]


副本请求4120Kerberos V5 2005年7月上述身份验证交换需要只读访问到Kerberos数据库。然而,有时必须修改数据库,例如添加新主体或更改校长的密钥。这是使用客户端和第三个Kerberos服务器,即Kerberos管理服务器(KADM)。还有一个用于维护多个Kerberos数据库的副本。这些协议都不是如本文件所述。1.2.交叉运行Kerberos协议旨在跨组织运行边界。一个组织中的客户端可以通过另一台服务器。希望运行Kerberos的每个组织服务器建立自己的“领域”。域的名称客户端已注册是客户端名称的一部分,可以由终端服务决定是否接受请求。通过建立“内部重述”密钥,两个领域的管理员可以允许在本地域中经过身份验证的客户端证明其其他领域中服务器的标识。互发邮件的交换键(每个方向可以使用一个单独的键)注册每个领域的票务授予服务作为另一个领域的主体领域。然后,客户端可以获得远程域的TGT来自其本地领域的售票服务。当使用TGT时,远程票证授予服务使用内部密钥(它通常不同于其自身的普通TGS密钥)来解密TGT;因此可以肯定的是,该票据是由客户自己的TGS签发的。远程售票服务发出的票证将表明客户端从另一个域进行身份验证的最终服务。在没有跨领域操作和适当许可的情况下客户端可以在远程领域并与该领域的服务。然而,即使是少数客户,这也会成为下面介绍了一些繁琐且更自动化的方法必要的。一个领域被称为与另一个领域通信,如果这两个领域共享一个互读密钥,或者如果本地域共享互读密钥带有与远程通信的中间域的密钥王国。身份验证路径是中间域的序列在从一个领域到另一个领域的通信中转换的。领域可以按层次进行组织。每个领域与共享一个密钥它的父项和每个子项的不同键。如果互发邮件密钥不是由两个领域(层次结构)直接共享的组织允许轻松构造身份验证路径。Neuman等人,标准跟踪[第8页]


副本请求4120Kerberos V5 2005年7月如果不使用分层组织,则可能需要查阅数据库以构建身份验证路径在领域之间。虽然领域通常是分层的,但中间领域可能绕过以通过替代实现跨域身份验证身份验证路径。(这些可能是为了两个领域之间的通信更加高效。)这很重要最终服务在决定时要知道哪些领域被转移在认证过程中要给予多少信任。为了方便这个决定,每个票据中的一个字段包含参与验证客户端的域。应用服务器最终负责接受或拒绝身份验证,并应检查传输字段。这个应用程序服务器可以选择依赖密钥分发中心(KDC)用于应用程序服务器的域,以检查传输的字段。应用服务器的KDC将设置在这种情况下,TRANSITED-POLICY-CHECKED标志。的KDC中间领域也可以在发布时检查过渡场其他领域的TGT,但我们鼓励他们不要这样做客户可以请求KDC不通过以下方式检查传输字段设置DISABLE-TRANSITED-CHECK标志。KDC应该尊重这一点标志。1.3.选择与之沟通的委托人Kerberos协议提供了验证方法(根据中的假设第1.6节)与之合作的实体通信是在KDC中注册的同一实体使用声明的身份(主体名称)。这仍然是必要的以确定该标识是否对应于具有你打算传达什么。提前交换适当数据后,应用程序可以基于应用程序在语法上执行此确定协议规范、用户提供的信息,以及配置文件。例如,服务器主体名称telnet服务器的(包括领域)可以从用户特定的主机名(从telnet命令行),“host/”应用程序协议规范中指定的前缀,以及映射到从域语法派生的Kerberos域指定主机名的一部分和本地Kerberos领域数据库。您还可以依赖可信任的第三方来实现这一点确定,但仅当从第三方获得数据时居住在第三方时受到适当的诚信保护Neuman等人,标准跟踪[第9页]


副本请求4120Kerberos V5 2005年7月服务器和传输时。因此,例如,不应依赖将主机别名映射到主名称服务器,接受主名称作为目标方联系,因为攻击者可以修改映射并模拟聚会。Kerberos和基于Kerberos的协议的实现不得使用不安全的DNS查询规范化的主机名组件服务主体名称(即,它们不得使用不安全的DNS查询将一个名称映射到另一个名称,以确定要与之通信的主要名称)。在环境中如果没有安全的名称服务,应用程序作者可能会附加将域名静态配置为之前未限定的主机名将名称传递给安全机制,但它们不应该这样做不止如此。安全名称服务设施(如果可用)可能可以信任主机名规范化,但这种规范化KDC实现不应要求由客户端执行。实现说明:许多当前的实现在一定程度上所提供服务名称的规范化,通常甚至使用DNS尽管这会带来安全问题。然而,没有实现之间关于服务名称是否为大小写折叠为小写或是否使用反向分辨率。收件人最大限度地提高互操作性和安全性,应用程序应该提供具有折叠用户产生的名称的安全机制-输入名称以小写,而不执行任何其他修改或规范化。1.4.授权作为身份验证服务,Kerberos提供了一种验证方法网络上主体的身份。身份验证通常是主要用作授权过程的第一步,确定客户端是否可以使用服务,哪些对象客户端允许访问,以及每个客户端允许的访问类型。Kerberos本身不提供授权。拥有服务的客户端票证仅提供对该服务的客户端,如果没有单独的授权程序,应用程序不应将其视为授权使用该服务。可作为应用程序实施单独的授权方法-特定的访问控制功能,并可以利用应用程序服务器,在单独颁发的授权凭据上例如基于代理的[Neu93号机组],或经其他授权服务。单独验证的授权凭证可以是当由KDC发布的授权数据元素。Neuman等人,标准跟踪[第10页]


射频4120Kerberos V5 2005年7月申请不应仅接受签发服务票通过Kerberos服务器(甚至通过修改后的Kerberos server)作为授予使用服务的权限,因为此类应用可能应用程序身份验证的其他选项所在的环境或者它们与其他KDC互操作。1.5.在不破坏互操作性的情况下扩展Kerberos随着Kerberos实现部署基础的增长Kerberos变得更加重要。不幸的是,对现有的Kerberos协议产生了互操作性问题,因为关于特定可扩展性处理的不确定性一些实现的选项。本节包括指南这将使未来的实现能够保持互操作性。Kerberos提供了一种通用的协议扩展机制。一些协议消息包含类型化的漏洞——子消息包含一个八进制字符串和一个定义如何解释八进制字符串。整数类型被注册集中,但它们既可以用于供应商扩展,也可以用于通过IETF标准化的扩展。在本文件中,单词“extension”是指通过定义要插入到现有类型孔中的新类型协议消息。它不是指通过添加新的字段设置为ASN.1类型,除非文本明确指出否则。1.5.1.与兼容副本请求1510请注意,现有的Kerberos消息格式不能通过向ASN.1类型添加字段进行扩展。正在发送其他字段通常会导致在没有错误指示。本规范的未来版本将提供确保可以添加ASN.1字段而无需创建互操作性问题。同时,所有新的或修改过的Kerberos实现接收未知消息扩展名应保留扩展,但忽略其存在。收件人不得只因为存在扩展就拒绝请求。这条规则有一个例外。如果未知授权数据元素类型由票证以外的服务器接收-在AP-REQ或包含在AP-REQ,则身份验证必须失败。的主要用途之一授权数据用于限制票据的使用。如果Neuman等人,标准跟踪[第11页]


副本请求4120Kerberos V5 2005年7月服务无法确定该限制是否适用于服务,如果票证可以用于该服务。可选的授权元素应封装在AD-IF-RELEVANT元件中。票务授予服务必须忽略但传播到衍生工具记录任何未知的授权数据类型,除非这些数据类型嵌入在MANDATORY-FOR-KDC元素中,在这种情况下请求将被拒绝。这种行为是适当的,因为要求售票服务了解未知信息授权数据类型需要升级KDC软件在应用程序之前了解新的应用程序级别限制使用了这些限制,降低了授权数据的效用作为限制门票使用的机制。没有安全性问题的产生是因为向其发出票证的服务将验证授权数据。实施说明:许多副本请求1510实现忽略未知授权数据元素。根据这些实现遵守授权数据限制可能会造成安全漏洞。1.5.2.发送可扩展消息必须小心确保旧的实现可以理解发送给他们的消息,即使他们不理解扩展已使用。除非发送方知道扩展名是支持,扩展不能更改核心的语义消息或以前定义的扩展。例如,包含以下所需关键信息的扩展解密KDC-REP的加密部分只能在已知接收人支持延期的情况。因此,在设计此类扩展时,提供一种方法很重要收件人通知发件人支持扩展。例如,如果扩展更改KDC-REP回复键,客户端可以通过在AS-REQ序列中包含一个padata元素。KDC应仅当此padata元素出现在按要求。即使策略要求使用扩展最好返回一个错误,指示需要扩展而不是在收件人可能不支持的情况下使用扩展。在以下情况下,调试不互操作的实现更容易返回错误。1.6.环境假设Kerberos对它可以在其中运行的环境强加了一些假设正确运行,包括以下内容:Neuman等人,标准跟踪[第12页]


副本请求4120Kerberos V5 2005年7月*Kerberos无法解决“拒绝服务”攻击。那里协议中入侵者可以阻止应用程序无法参与正确的身份验证步骤。检测和解决此类攻击(其中一些可能会出现不是系统常见的“正常”故障模式)通常最好留给人工管理员和用户。*校长必须对自己的密钥保密。如果入侵者不知怎么偷了校长的钥匙,它就能伪装成或向合法用户模拟任何服务器负责人。*Kerberos无法解决“密码猜测”攻击。如果用户选择错误的密码,攻击者可能会通过重复成功发起脱机字典攻击试图用字典中的连续条目进行解密,使用从用户的密码。*网络上的每个主机都必须有一个“松散”的时钟同步”到其他主机的时间;此同步用于减少应用服务器的簿记需求当他们进行回放检测时。“松动”程度可以是按每服务器配置,但通常是按订单配置5分钟。如果时钟在网络上同步,时钟同步协议本身必须网络攻击者。*主要标识符不会在短期内回收。A类访问控制的典型模式将使用访问控制列表(ACL)向特定主体授予权限。如果是陈腐的已删除主体和主体的ACL条目保留标识符被重用,新主体将继承权限在过时的ACL条目中指定。通过不重新使用本金标识符,消除了意外访问的危险。1.7.术语表以下是本文档中使用的术语列表。身份验证验证主体的声明身份。身份验证标头包含要显示的票据和验证器的记录作为身份验证过程的一部分发送到服务器。Neuman等人标准轨道[第13页]


副本请求4120Kerberos V5 2005年7月身份验证路径身份验证中传输的一系列中间域从一个领域通信到另一个领域时的过程。身份验证器包含可以显示为最近使用客户端已知的会话密钥生成和服务器。授权确定客户是否可以使用服务的过程,允许客户端访问哪些对象,以及每个都允许访问。能力授予持有者访问对象或服务。在Kerberos中,这可能是一个票据,其用途是受授权数据字段内容的限制,但它没有列出网络地址以及会话密钥必须使用票据。密文加密函数的输出。加密转换明文转换为密文。顾客代表用户使用网络服务的过程。请注意,在某些情况下,服务器本身可能是某些其他服务器(例如,打印服务器可以是文件的客户端服务器)。资格证书票证加上使用该票证所需的秘密会话密钥在身份验证交换中成功。加密类型(etype)当与加密数据关联时,加密类型标识用于加密数据的算法,用于选择用于解密数据的适当算法。加密类型标签在其他消息中进行通信以枚举算法希望、支持、首选或允许用于各方之间的数据加密。此首选项是组合的使用本地信息和策略来选择要执行的算法已使用。KDC公司关键配送中心。提供票证的网络服务以及临时会话密钥;或该服务的实例或Neuman等人,标准跟踪[第14页]


副本请求4120Kerberos V5 2005年7月它在其上运行的主机。KDC为初始票据和票证授予票证请求。初始票据部分为有时被称为认证服务器(或服务)。票证授予票证部分有时被称为票务授予服务器(或服务)。Kerberos雅典娜项目认证服务的名称该服务使用的协议,或用于实现身份验证服务。这个名字取自三个头守卫地狱的狗。密钥版本号(kvno)与加密数据关联的标记标识使用的密钥用于在与主体关联的长期密钥时进行加密随时间变化。在转换到新密钥期间使用这样解密消息的一方就可以知道数据使用旧密钥或新密钥加密。纯文本加密函数的输入或解密的输出功能。解密将密文转换为明文。负责人参与网络的命名客户端或服务器实体通信,使用一个被认为是规范的名称。主体标识符用于标识每个不同主体的规范名称独特地。印章以如下方式对包含多个字段的记录进行加密:如果不了解以下内容,则无法单独替换字段加密密钥或留下篡改证据。密钥由主体和KDC共享的加密密钥,分布式超出系统范围,具有较长的生命周期。对于人类用户的主体,可以导出密钥来自密码。服务器向网络提供资源的特定主体客户。服务器有时被称为应用程序服务器。Neuman等人,标准跟踪[第15页]


副本请求4120Kerberos V5 2005年7月服务为网络客户端提供的资源;通常由更多多个服务器(例如,远程文件服务)。会话密钥在两个主体之间使用的临时加密密钥生命周期限制为单个登录“会话”的持续时间。Kerberos系统,会话密钥由KDC生成。这个会话密钥不同于下面描述的子会话密钥。子会话密钥在选定的两个主体之间使用的临时加密密钥并由主体使用会话密钥进行交换生命周期限制为单个关联的持续时间。这个子会话密钥也称为子密钥。门票帮助客户端向服务器验证自身身份的记录;包含客户端的标识、会话密钥、时间戳和其他信息,全部使用服务器的密钥密封。仅用于在客户端与全新验证器。2.票证标记使用和请求每个Kerberos票证都包含一组用于指示该票据的属性。大多数标志可能由获得票据时的客户端;有些自动打开并根据需要由Kerberos服务器关闭。以下部分解释各种标志的含义并举例说明原因使用它们。除INVALID标志外,客户端必须忽略无法识别的票证标志。KDC必须忽略KDC无法识别的选项。的一些实现副本请求1510已知会拒绝未知的KDC选项,因此客户端可能需要如果请求被拒绝,则在不使用新KDC选项的情况下重新发送请求发送时添加了选项副本请求1510。因为新KDC将忽略未知选项,客户端必须确认票证已返回KDC满足了他们的需求。请注意,通常不可能确定由于不理解或因为通过配置或策略被拒绝。添加时Kerberos协议的新选项,设计者应该考虑区别对他们的选择是否重要。如果是,aKDC返回选项指示的机制理解但被拒绝需要在规范中提供选项。在这种情况下,机制通常需要广泛足以允许返回错误或原因。Neuman等人,标准跟踪[第16页]


副本请求4120Kerberos V5 2005年7月


2.1初始、预验证和硬件验证票据INITIAL标志表示票据是使用AS发出的协议,而不是基于TGT发布。应用程序服务器需要证明客户的秘密密钥(例如,密码更改程序)可以坚持此标志为设置他们接受的任何票,因此可以确保客户端的密钥最近被提供给了身份验证服务器。PRE-AUTHET和HW-AUTHENT标志提供了附加信息关于初始身份验证,无论当前票据是直接签发的(在这种情况下,还将设置INITIAL)或根据TGT发布(在这种情况下,INITIAL标志为清除,但PRE-AUTHENT和HW-AUTHENT标志被结转来自TGT)。2.2。无效票据INVALID标志表示票证无效。应用程序服务器必须拒绝设置了此标志的票据。过期的门票将以这种形式发放。无效门票必须在使用之前由KDC验证,方法是在指定VALIDATE选项的TGS请求。KDC只会在票证的开始时间过后验证票证。验证是要求在他们之前被盗的延期票starttime可能会永久无效(通过热列表机构)(参见第3.3.3.1节).2.3.可再生门票应用程序可能希望持有长期有效的门票时间段。然而,这可能会将其凭据暴露给同样长时间的潜在盗窃,以及被盗凭据将一直有效,直到票据。只需使用短期门票并获得新门票定期要求客户长期访问密钥,风险更大。可续签门票可用于减轻偷窃的后果。可续订门票有两张“过期时间”:第一个是票证过期,第二个是个人到期时间。应用程序客户端必须定期(即到期前)向KDC出示一张可续签的门票KDC请求中设置的RENEW选项。KDC将发布新的票证具有新的会话密钥和稍后的到期时间。所有其他续订过程不会修改票据的字段。当最新允许的到期时间到达时,票据永久过期。每次续约时,KDC可能会查阅热门名单以确定自Neuman等人,标准跟踪[第17页]


副本请求4120Kerberos V5 2005年7月上次更新;它将拒绝续订被盗门票,因此被盗车票的使用寿命缩短。票据中的RENEWABLE标志通常仅由售票服务(在下文中讨论第3.3节).  它可以通常被应用服务器忽略。然而,一些特别小心的应用程序服务器可能不允许更新门票。如果可续签的机票在到期前未续签,KDC不会续签机票。RENEWABLE标志默认重置,但客户端可能会通过在中设置RENEWABLE选项来请求进行设置KRB_AS_REQ消息。如果已设置,则中的续订字段车票上有一段时间后,车票可能不会更新。2.4.延期的机票应用程序有时可能需要获得大量使用的门票后期;例如,批量提交系统需要票据有效在为批处理作业提供服务时。然而,这是危险的在批处理队列中持有有效票据,因为它们将在线时间更长,更容易被盗。延期的门票提供了一种在作业提交时从KDC获得这些票据,但让它们“休眠”,直到它们被激活并由KDC的进一步请求。如果在在过渡期间,KDC将拒绝验证罚单,而小偷会被挫败。票证中的MAY-POSTDATE标志通常仅由售票服务。应用程序服务器可以忽略它。必须在TGT中设置此标志才能签发过期票据根据出示的票。默认重置;客户可能通过在KRB_AS_REQ中设置ALLOW-POSTDATE选项来请求消息。此标志不允许客户端获取过期的TGT;只有通过请求后注日期才能获得后注日期的TGT在KRB_AS_REQ消息中。的寿命(结束时间开始时间)过期的机票将是TGT在请求,除非还设置了RENEWABLE选项,在这种情况下它可以是TGT的完整生命周期(endtime-starttime)。KDC可能限制一张票在未来可以延期多久。POSTDATED标志表示票据已过期。这个应用服务器可以检查票据中的authtime字段以查看原始身份验证发生时。一些服务可能会选择拒绝过期的门票,或者他们只能在原始身份验证后的特定时间。当KDC发出一张POSTDATED票据,它也将被标记为INVALID,以便Neuman等人,标准跟踪[第18页]


副本请求4120Kerberos V5 2005年7月应用程序客户端必须向KDC出示票据使用前进行验证。2.5.Proxiable和Proxy票据有时,委托人可能需要允许服务代表其执行操作。服务必须能够客户身份,但仅用于特定目的。A类主体可以通过向服务授予代理来允许服务执行此操作。使用代理和可代理授予代理的过程标志用于提供与特定服务一起使用的凭据。虽然概念上也是一个代理,但用户希望委派他们的以可用于所有目的的形式提供的身份必须使用车票在下一节中描述的转发机制来转发TGT。票据中的PROXIABLE标志通常仅由售票服务。应用程序服务器可以忽略它。设置后,此标志告知票证授予服务器可以使用不同的网络地址发行新票证(但不是TGT)基于这张票。如果客户端在上请求,则设置此标志初始身份验证。默认情况下,客户端将请求请求TGT时设置,请求时重置任何其他票。此标志允许客户端将代理传递给服务器以执行代表其发出远程请求(例如,打印服务客户端可以打印服务器是访问特定客户端文件的代理文件服务器以满足打印请求)。为了使被盗凭据的使用复杂化,Kerberos票证通常仅从这些网络地址有效具体包括在票中,但作为允许请求并在没有网络的情况下发出票证的策略选项指定的地址。授予代理时,客户必须指定使用代理的新网络地址,或表明代理将从任何地址发出以供使用。当TGS发出代理时,它会在票据中设置PROXY标志门票。应用服务器可能会检查此标志;并由他们选择他们可能需要代理提供额外的身份验证代理以提供审计跟踪。2.6.可转发票据身份验证转发是一个代理实例,其中服务即完全使用客户的身份。一个例子当用户登录到远程系统时,它可能被使用Neuman等人标准轨道[第19页]


副本请求4120Kerberos V5 2005年7月并希望通过该系统进行身份验证,就像登录一样都是当地人。票据中的FORWARDABLE标志通常仅由售票服务。应用程序服务器可以忽略它。FORWARDABLE标志的解释与PROXIABLE标志,除了TGT也可以用不同的网络发出地址。默认情况下会重置此标志,但用户可能会要求他们请求他们的初始TGT。此标志允许身份验证转发,而无需用户再次输入密码。如果未设置标志,则不允许身份验证转发,但相同的结果可以如果用户参与AS交换,则仍然可以实现请求的网络地址,并提供密码。当客户端出示票据时,TGS设置FORWARDED标志设置了FORWARDABLE标志并请求转发票据指定FORWARDED KDC选项并提供一组地址购买新机票。它也设置在所有基于设置了FORWARDED标志的票。应用服务器可以选择以不同于处理非FORWARDED票据的方式处理FORWARD票据。如果无地址票据从一个系统转发到另一个系统,客户仍应使用此选项获取新的TGT,以便在不同的系统上具有不同的会话密钥。2.7.过渡策略检查在Kerberos中,应用服务器最终负责接受或拒绝身份验证,并且只应检查依赖适当可信的KDC对主体进行身份验证。票据中的transited字段标识哪些领域(因此身份验证过程中涉及哪些KDC),以及应用服务器通常会检查此字段。如果其中任何一个不受信任,无法对指定的客户端主体进行身份验证(可能由基于realm的策略决定),身份验证必须拒绝尝试。此列表中存在受信任的KDC不提供任何担保;不受信任的KDC可能伪造了列表。虽然最终服务器会决定身份验证是否有效,终端服务器领域的KDC可以应用特定于领域的验证传输字段和接受凭据的策略用于跨领域身份验证。当KDC进行此类检查时接受这种跨领域身份验证,它将设置TRANSITED-POLICY-CHECKED标志在其发布的服务票据中Neuman等人,标准跟踪[第20页]


副本请求4120Kerberos V5 2005年7月在跨领域TGT上。客户端可能会请求KDC不检查通过设置DISABLE-transited-CHECK标志,传输字段。我们鼓励KDC,但不要求KDC尊重这一面旗帜。应用程序服务器必须执行传输重发检查他们自己或拒绝跨领域门票TRANSITED-POLICY-CHECKED集合。2.8.OK作为代表对于某些应用程序,客户端可能需要将权限委托给服务器代表其联系其他服务。这个要求客户端将凭据转发给中间层服务器。客户端获取服务票证的功能服务器没有向客户端传递有关服务器是否应被信任接受委派凭据。这个OK-AS-DELEGATE为KDC提供了一种与本地域通信的方式关于中间服务器是否受信任接受此类凭据。KDC回复加密部分中票证标志的副本可以设置OK-AS-DELEGATE标志,以向客户端指示票证中指定的服务器已由策略确定成为一个合适的授权接受者。客户可以使用此标志的存在来帮助它决定是否授权凭据(授予代理或转发的TGT)到此服务器。可以忽略此标志的值。设置此选项时标志,管理员应考虑运行服务的服务器,以及服务需要使用委派的凭据。2.9其他KDC选项在客户端的KDC的请求。2.9.1.可再生-OKRENEWABLE-OK选项表示客户端将接受可续签车票,如果具有要求寿命的车票不能续签提供。如果无法提供具有所需寿命的车票,那么KDC可能会签发一张续期机票,续期时间等于请求的结束时间。续订字段的值可能仍为根据现场确定的限制或单个主体或服务器。Neuman等人,标准跟踪[第21页]


副本请求4120Kerberos V5 2005年7月


2.9.2.ENC-TKT-IN天空在其基本形式中,Kerberos协议支持在客户端-服务器设置,不适合在对等环境,因为用户的长期密钥初次登录后不留在工作站上。的身份验证Kerberos在其用户对用户变体中可以支持此类对等点。ENC-TKT-IN-SKEY选项支持通过允许KDC使用从另一个TGT发送给另一个用户的会话密钥。这个ENC-TKT-IN-SKEY选项仅通过票务授予实现服务。它表示将要签发的票已结束服务器将从附加的与请求一起提供的第二TGT。请参见第3.3.3节针对特定的详细信息。2.9.3.无密码硬件验证OPT-HARDWARE-AUTH选项表示客户端希望使用某种形式的硬件身份验证,而不是客户端密码或其他长期有效的加密密钥。OPT-HARDWARE-AUTH仅由身份验证服务提供。如果受策略支持和允许,KDC将返回错误代码KDC_ERR_PREAUTH_REQUIRED并将所需的METHOD-DATA包含到执行这种身份验证。.消息交换以下各节描述了网络之间的交互客户端和服务器以及这些交换中涉及的消息。3.1.身份验证服务交换总结消息方向消息类型章节
         1.客户端到Kerberos KRB_AS_REQ 5.4.12.Kerberos到客户端KRB_AS_REP或5.4.2KRB_错误5.9.1客户端和Kerberos身份验证服务器由客户端在希望获得给定服务器的身份验证凭据,但当前没有凭据。在其基本形式中,客户的密钥用于加密和解密。此交换是通常用于启动登录会话以获取票证授权服务器的凭据,随后将用于获取其他服务器的凭据(请参阅第3.3节)Neuman等人,标准跟踪[第22页]


副本请求4120Kerberos V5 2005年7月无需进一步使用客户端的密钥。这个exchange还用于请求必须不是通过票务服务进行调解,而是需要了解主体的密钥,例如密码-更改服务(密码更改服务拒绝请求除非请求者能够证明对用户的旧密码;需要此知识可以防止未经授权的密码某人进入无人值守会话时所做的更改)。此交换本身并不能保证用户的身份。验证登录到本地的用户系统中,可以首先使用在AS交换中获得的凭据在TGS交换中获取本地服务器的凭据;那些然后,本地服务器必须通过验证凭据成功完成客户端/服务器交换。AS交换包含两条消息:来自客户端的KRB_AS_REQ发送至Kerberos,并回复KRB_AS_REP或KRB_ERROR。的格式这些消息在章节中进行了描述5.4.1,5.4.2、和5.9.1在请求中,客户机发送(明文)自己的身份和请求凭据的服务器的标识,有关其请求的凭据的其他信息,以及随机生成的nonce,可用于检测重播和将回复与匹配的请求相关联。此时此刻必须由客户随机生成并记住以进行检查预期回复中的当前时间。响应KRB_AS_REP包含客户端向服务器提供的票据和会话密钥它将由客户端和服务器共享。会话密钥和其他信息在客户端的密钥中加密。KRB_AS_REP消息的加密部分还包含nonce必须与KRB_AS_REQ消息中的nonce匹配。如果没有预身份验证,身份验证服务器不知道客户端是否实际是请求中指定的主体。它只是发送一个回复,而不知道或关心他们是否是相同的。这是可以接受的,因为只有校长在请求中给定的身份将能够使用回复。关键信息在该主体的密钥中加密。然而,攻击者可以发送KRB_AS_REQ消息以获取已知明文以攻击校长的钥匙。特别是如果密钥是基于对于密码,这可能会造成安全隐患。所以最初的请求支持可用于传递的可选字段初始交换可能需要的其他信息。此字段应用于预身份验证,如部分3.1.15.2.7Neuman等人,标准跟踪[第23页]


副本请求4120Kerberos V5 2005年7月可能会发生各种错误;这些由错误响应指示(KRB_ERROR)而不是KRB_AS_REP响应。错误消息是未加密。KRB_ERROR消息包含以下信息:用于将其与回复的消息关联。这个KRB_ERROR消息的内容不受完整性保护。作为这样,客户端就无法检测到重放、伪造或修改。此问题的解决方案将包含在协议的未来版本。3.1.1.生成KRB_AS_REQ消息客户端可以在初始请求中指定许多选项。这些选项包括预身份验证是否执行;申请的机票是否可以续签,可代理或可转发;是否应注明日期或允许衍生票据的后注;以及可续期机票是否会如果所要求的票被接受,则被接受以代替不可续期的票不可续签的机票不能满足到期日的要求(由于配置约束)。客户端准备KRB_AS_REQ消息并将其发送给KDC。3.1.2.接收KRB_AS_REQ消息如果一切顺利,处理KRB_AS_REQ消息将导致为客户机创建一个票证以呈现给服务器。票据的格式如所述第5.3节由于Kerberos可以在不可靠的传输(如UDP)上运行KDC必须做好重新发送响应的准备,以防响应丢失。如果KDC收到与其最近收到的请求相同的请求处理成功后,KDC必须使用KRB_AS_REP进行响应消息而不是重播错误。为了减少密文对于潜在攻击者,KDC可能会发送相同的响应首次处理请求时生成。KDC必须遵守重播行为,即使实际使用的传输是可靠的。3.1.3.生成KRB_AS_REP消息身份验证服务器查找客户端和服务器主体在其数据库中的KRB_AS_REQ中命名,提取各自的按键。如果请求中指定的请求客户端主体是未知,因为它不存在于KDC的主数据库中,然后返回带有KDC_ERR_C_PRINCIPAL_UNKNOWN的错误消息。如果需要这样做,服务器会对请求进行预身份验证,并且如果预身份验证检查失败,将显示一条错误消息,其中包含代码返回KDC_ERR_PREAUTH_FAILED。如果预身份验证是Neuman等人,标准跟踪[第24页]


副本请求4120Kerberos V5 2005年7月需要,但请求中不存在,错误消息为返回代码KDC_ERR_PREAUTH_REQUIRED,并返回METHOD-DATA对象将存储在KRB-ERROR消息的电子数据字段中,以指定可接受的预身份验证机制。通常情况下这将包括PA-ETYPE-INFO和/或PA-ETYPE-INFO2元素如下所述。如果服务器无法容纳任何加密客户端请求的类型,带有代码的错误消息返回KDC_ERR_ETYPE_NOSUPP。否则,KDC会生成“随机”会话密钥,这意味着除其他外,它应该是无法根据过去的知识猜测下一个会话密钥会话密钥。虽然这可以在伪随机中实现数字生成器如果它是基于密码原理的,那么它就是更希望使用真正的随机数生成器,例如基于随机物理现象的测量。请参见[RFC4086协议]以深入讨论随机性。如果有多个加密密钥,则响应AS请求为Kerberos数据库中的客户机注册,然后输入etypeKDC使用AS请求中的字段来选择加密用于保护KRB_AS_REP加密部分的方法发送到客户端的消息。如果有多个在etype列表中支持强加密类型,KDC应该使用加密密钥所在的第一个有效的强etype可用。当用户的密钥由密码或密码短语生成时特定加密密钥类型的字符串对密钥函数为使用,如[RFC3961号文件].  盐价和附加值字符串对键函数的参数具有默认值(由指定第4节通过加密机制规范)可能被覆盖预认证数据(PA-PW-SALT、PA-AFS3-SALT、PA-ETYPE-INFO、,PA-ETYPE-INFO2等)。由于KDC被假定存储仅结果键,不应为更改这些值基于密码的密钥,更改主体密钥时除外。当AS服务器要在KRB-ERROR或在AS-REP中,它必须使用PA-ETYPE-INFO2,而不是PA-ETYPE-INFO,如果客户端的AS-REQ的etype字段中至少列出一个“较新”加密类型。否则(当客户端的AS-REQ没有列出任何“较新”的加密类型),它必须发送PA-ETYPE-INFO2和PA-ETYPE-INFO(都带有每个enctype)。一个“较新”的enctype是任何首先正式使用的enctype与本RFC发布同时或之后指定。加密类型DES、3DES或RC4以及中定义的任何加密类型[RFC1510协议]不是“较新”的enctypes。Neuman等人,标准跟踪[第25页]


副本请求4120Kerberos V5 2005年7月在给定通行证的情况下,不可能可靠地生成用户密钥短语,因为不知道是否需要备用盐或参数值。KDC将尝试分配随机会话密钥的类型从etype字段中的方法列表中。KDC将选择使用提供的方法和信息列表的适当类型来自Kerberos数据库,指示可接受的加密方法用于应用程序服务器。KDC不会发行带有弱会话密钥加密类型。如果缺少请求的开始时间,则表示过去的时间,或在KDC和尚未指定POSTDATE选项,则票证设置为身份验证服务器的当前时间。如果是这样表示未来的时间超出可接受的时钟偏差,但尚未指定POSTDATED选项,则返回错误返回KDC_ERR_CANNOT_POSTDATE。否则,请求根据本地域的策略检查starttime(管理员可能会决定禁止某些类型或范围的过期票据),如果票据的开始时间可以接受根据要求设置,并在新票据中设置INVALID标志。在使用之前,必须将过期票据出示给到达启动时间后的KDC。票据的到期时间将设置为请求的结束时间和由本地策略确定的时间,可能由使用领域或委托特定因素。例如到期时间可以设置为以下时间中最早的一个:*KRB_AS_REQ中请求的到期时间(结束时间)消息。*票证的开始时间加上允许的最长生存期与身份验证中的客户端主体关联服务器的数据库。*票证的开始时间加上允许的最长生存期与服务器主体关联。*票证的开始时间加上地方政府的政策。如果请求的到期时间减去开始时间(根据确定以上)小于站点确定的最小生存期,错误返回代码为KDC_ERR_NEVER_VALID的消息。如果请求票的到期时间超过了上述确定的时间,如果请求“RENEWABLE-OK”选项,则“RENEUABLE”Neuman等人,标准跟踪[第26页]


副本请求4120Kerberos V5 2005年7月标志在新票证中设置,并且续订值设置为请求了“RENEWABLE”选项(字段和选项名称为在中详细描述第5.4.1节).如果已请求RENEWABLE选项,或者如果RENEWABLE-OK已设置选项并将签发可续签的票据,然后renew-till字段可以设置为以下值中的最早值:*它的请求值。*票证的开始时间加上两个最大值中的最小值与主体数据库关联的可更新生命周期条目。*票证的开始时间加上最长可续签寿命由本地域的策略设置。新票据的flags字段将设置以下选项如果他们被要求,如果当地的政策允许:可转发、可能后发、后发、接近、可更新。如果新的票证已过期(开始时间在未来),则其还将设置INVALID标志。如果上述所有操作都成功,服务器将加密密文使用从服务器提取的加密密钥的票据的一部分Kerberos数据库中使用加密类型的主体记录与服务器主体的密钥关联。(此选项不是受请求中的etype字段影响。)然后格式化KRB_AS_REP消息(请参阅第5.4.2节),复制中的地址请求到响应的caddr中,放置任何必需的pre-验证数据到响应的padata中,并对客户端密钥中使用可接受加密的密文部分在请求的etype字段或某些键中请求的方法由使用的预身份验证机制指定。3.1.4.生成KRB_ERROR消息可能会出现多个错误,身份验证服务器的响应为向客户端返回错误消息KRB_error,并使用错误代码和电子文本字段设置为适当的值。错误消息内容和详细信息如所述第5.9.1节3.1.5.接收KRB_AS_REP消息如果回复消息类型为KRB_AS_REP,则客户端会验证的明文部分中的cname和crealm字段回复符合要求。如果存在任何padata字段,它们可用于派生正确的密钥来解密Neuman等人,标准跟踪[第27页]


副本请求4120Kerberos V5 2005年7月消息。客户端解密响应的加密部分使用其密钥并验证加密的部件匹配它在请求中提供的nonce(以检测重播)。它还验证响应中的sname和srealm匹配请求中的值(或其他预期值),以及主机地址字段也正确。然后存储票证、会话密钥、开始和过期时间等供以后使用的信息。last-req字段(和不推荐使用的密钥到期字段)可以是选中以通知用户密钥即将到期。这使建议补救措施的客户端程序,例如密码更改。验证KRB_AS_REP消息后(通过检查返回的与KRB_AS_REQ消息中发送的消息相比),客户知道KDC上的当前时间是从authtime字段读取的回复的加密部分。客户端可以选择使用此值用于后续消息中的时钟同步用票据记录authtime值和本地时钟。然后可以使用此偏移同一用户在以下情况下调整从系统时钟读取的时间生成消息[DGT96型].当调整时钟偏差时,必须使用此技术,而不是直接更改系统时钟,因为KDC回复验证给使用了密钥的用户,但不验证给系统或工作站。如果时钟被调整,攻击者与登录工作站的用户勾结可能会同意密码,生成正确验证的KDC回复即使它不是来自受信任的KDC工作站。正确解密KRB_AS_REP消息不足以主机验证用户身份;用户和攻击者可以合作生成KRB_AS_REP格式的消息来解密正确,但不是来自正确的KDC。如果主人愿意验证用户身份,必须要求用户出示可以使用安全存储的主机的密钥。如果可以验证这些凭据,则可以确保用户的身份。3.1.6.接收KRB_ERROR消息如果回复消息类型为KRB_ERROR,则客户端将对其进行解释并执行任何特定于应用程序的任务恢复所必需的。Neuman等人标准轨道[第28页]


副本请求4120Kerberos V5 2005年7月


3.2客户端/服务器身份验证交换总结消息方向消息类型部分客户端到应用服务器KRB_AP_REQ 5.5.1[可选]应用程序服务器到客户端KRB_AP_REP或5.5.2KRB_错误5.9.1网络使用客户端/服务器身份验证(CS)交换应用程序向服务器验证客户端,反之亦然。客户端必须已获取服务器的凭据使用AS或TGS交换。3.2.1.KRB_AP_REQ消息KRB_AP_REQ包含应为已验证事务中第一条消息的一部分。包含票证、验证器和一些额外的簿记信息(请参见第5.5.1节精确格式)。车票由本身不足以对客户端进行身份验证,因为票证是以明文形式通过网络传递(票据包含加密和未加密部分,因此此处的明文是指整个单元,可以从一条消息中复制并在中重放另一个没有任何加密技能)。使用了身份验证器通过向服务器证明客户端知道票证的会话密钥,因此有权使用票据。KRB_AP_REQ消息在别处引用作为“身份验证头”。3.2.2.生成KRB_AP_REQ消息当客户端希望向服务器发起身份验证时获取(通过凭证缓存、AS交换机或TGS交换)所需服务的票证和会话密钥。这个客户可以重复使用其持有的任何票据,直至其到期。要使用票证,客户端从系统中构造一个新的Authenticator时间及其名称,也可以选择来自特定于应用程序的校验和,用于KRB_SAFE或KRB_PRIV消息和/或谈判中使用的会话子键用于此特定会话唯一的会话密钥。认证装置不得重复使用,如果在服务器上重播,则应拒绝使用。请注意,这可能会使应用程序基于不可靠的传输很难正确编码。如果运输可以交付重复消息,必须为其生成新的身份验证器每次重试,或应用程序服务器必须匹配请求和回复并针对检测到的重复内容重放第一个回复。Neuman等人,标准跟踪[第29页]


副本请求4120Kerberos V5 2005年7月如果要包括序列号,则应随机选择因此,即使在交换了许多消息之后,也不太可能与使用中的其他序列号冲突。客户端可能会指示相互身份验证的要求或使用基于会话密钥的票证(用于用户对用户身份验证,看见第3.7节)通过在ap-options中设置适当的标志消息的字段。Authenticator在会话密钥中加密,并与生成KRB_AP_REQ消息的票据,然后发送到终端服务器以及任何其他特定于应用程序的信息。3.2.3.接收KRB_AP_REQ消息身份验证基于服务器的当前时间(时钟必须松散同步)、验证器和票证。可能有几个错误。如果发生错误,服务器将应使用KRB_ERROR消息回复客户端。这个如果消息是原始的,则可以将其封装在应用协议中协议不接受这种形式。错误消息的格式如所述第5.9.1节用于验证验证信息的算法如下。如果消息类型不是KRB_AP_REQ,服务器将返回KRB_AP_ERR_MSG_TYPE错误。如果KRB_AP_REQ中的票证不是服务器可以使用的票证(例如,它指示旧密钥,并且服务器不再拥有旧密钥),则返回KRB_AP_ERR_BADKEYVER错误。如果USE-SESSION-KEY标志在ap-options字段中设置,表示正在使用用户对用户身份验证的服务器,并且票证是在服务器的TGT的会话密钥中加密的而不是在服务器的密钥中。请参见第3.7节以获得更完整的描述用户对用户身份验证对all的影响Kerberos协议中的消息。因为服务器可以在多个领域,每个领域中有不同的键KRB_AP_REQ中票据的未加密部分用于指定服务器应该使用哪个密钥对其进行解密门票。如果服务器没有正确的钥匙来破译罚单。使用服务器密钥的版本解密票证由票据指定。如果解密例程检测到修改票据(每个加密系统必须提供检测修改密文的安全措施)Neuman等人,标准跟踪[第30页]


副本请求4120Kerberos V5 2005年7月返回KRB_AP_ERR_BAD_INTEGRITY错误(很可能使用不同的密钥进行加密和解密)。使用从中提取的会话密钥解密身份验证器解密的票据。如果解密显示已被修改,返回KRB_ AP_ERR_BAD_INTEGRITY错误。名称和领域将票证中客户端的验证器。如果它们不匹配,KRB_AP_ERR_BADMATCH返回错误;通常这是由客户端错误或试图攻击。票据中的地址(如果有)是搜索与报告的操作系统匹配的地址客户的地址。如果找不到匹配项或服务器坚持票据地址,但票据中不存在返回KRB_AP_ERR_BADADDR错误。如果本地(服务器)时间和验证器中的客户端时间差异大于允许的时钟偏差(例如,5分钟),KRB_AP_ERR_skew错误为返回。除非应用服务器提供了自己合适的方法来防止重播(例如,挑战响应序列在身份验证或使用服务器后由服务器启动-生成的加密子密钥),服务器必须使用重播缓存记住允许时钟内出现的任何验证器歪斜。仔细分析应用程序协议和建议在消除此缓存之前实现。这个重播缓存将至少存储服务器名称以及最近sen中的客户端名称、时间和微秒字段验证器,如果找到匹配的元组,则返回KRB_AP_ERR_REPEAT错误。请注意,这里的拒绝是限于同一主体到同一主体的身份验证器服务器。与同一服务器通信的其他客户端主体主体不应拒绝其身份验证器,如果微秒字段正好与其他客户端的字段相匹配验证器。如果服务器无法跟踪允许时钟偏差,它必须拒绝所有请求,直到时钟偏移间隔已过,确保任何丢失或重播的验证器将超出允许的时钟偏差并且不能再成功地重放。如果不这样做,攻击者可以通过记录票据来破坏身份验证以及通过网络发送到服务器并回放的验证器他们跟踪了一个导致服务器失去跟踪的事件最近看到的验证器。实施说明:如果客户端向具有相同时间戳的KDC,包括微秒字段,但收到的第一个请求将作为重播被拒绝。这个Neuman等人,标准跟踪[第31页]


副本请求4120Kerberos V5 2005年7月例如,如果客户端时钟的分辨率为太粗糙了。客户端实现应确保时间戳不会被重用,可能是通过增加中的微秒字段时钟多次返回相同时间时的时间戳请求。如果有多个服务器(例如,一台机器上的不同服务,或在多台机器上实现的单个服务)共享服务原则(我们一般不建议这样做,但我们承认将在某些情况下使用),或者他们必须共享此重播缓存或应用程序协议必须设计为以消除对它的需要。请注意,这适用于所有服务。如果任何应用程序协议没有重播内置保护,与此类服务一起使用的身份验证器可以稍后将回放到具有相同服务的不同服务如果前者没有记录公共重播缓存中的验证器信息。如果验证器中提供了序列号,则服务器将其保存以供以后处理KRB_SAFE和/或KRB_PRIV时使用信息。如果存在子项,服务器会将其保存为稍后使用或使用它来帮助生成自己的子键选择以KRB_AP_REP消息返回。服务器计算票证的期限:本地(服务器)时间减去票证中的开始时间。如果开始时间晚于当前时间超过允许的时钟偏差,或者如果为INVALID如果在票证中设置了标志,则返回KRB_AP_ERR_TKT_NYV错误。否则,如果当前时间晚于结束时间超过允许的时钟偏差,KRB_AP_ERR_TKT_EXPIRED错误为返回。如果所有这些检查都成功而没有出现错误,则服务器得到了保证客户端拥有中指定的主体的凭据票据,因此,客户机已通过身份验证服务器。通过这些检查仅提供对指定的校长;它并不意味着授权使用命名服务。应用程序必须根据经过身份验证的用户名、请求的操作、本地访问控制信息,如.k5login或.k5users文件,可能还有一个单独的分布式授权服务。Neuman等人,标准跟踪[第32页]


副本请求4120Kerberos V5 2005年7月


3.2.4.生成KRB_AP_REP消息通常,客户机的请求将包括两个身份验证信息及其在同一消息中的初始请求,以及服务器无需明确回复KRB_AP_REQ。然而,如果相互身份验证(不仅向服务器,以及服务器到客户端)KRB_AP_REQ消息将在其AP-options中设置MUTUAL-REQUIRED字段,则需要KRB_AP_REP消息作为响应。错误消息,此消息可能会封装在应用程序中协议,如果应用程序不接受其“原始”形式协议。回复中使用的时间戳和微秒字段必须是客户端的时间戳和微秒字段(如验证器)。如果要包括序列号,则应如上所述为认证器随机选择。一个子键如果服务器希望协商不同的子键。KRB_AP_REP消息在会话密钥中加密从票据中提取。请注意,在Kerberos版本4协议中回复是客户的时间戳加一。这在中是不必要的版本5,因为版本5消息的格式如下不可能通过明智的消息操作来创建回复(即使是加密形式)不知道适当的加密密钥。3.2.5.接收KRB_AP_REP消息如果返回KRB_AP_REP消息,客户端将使用会话密钥从服务器获取的凭据中解密消息并验证时间戳和微秒字段是否与中的字段匹配发送到服务器的验证器。如果它们匹配,那么客户端确信服务器是正版的。序列号和子键(如果存在)被保留以供以后使用。(请注意,对于加密KRB_AP_REP消息,不使用子会话密钥,即使它存在于身份验证中。)3.2.6.使用加密密钥发生KRB_AP_REQ/KRB_AP _REP交换后,客户和服务器共享应用程序可以使用的加密密钥。在某些情况下,此会话密钥的使用将隐含在协议;在其他情况下,使用方法必须从以下几种方法中选择选择。应用程序可以选择实际的加密密钥用于KRB_PRIV、KRB_SAFE或其他特定应用基于票证中的会话密钥和KRB_AP_REP消息和验证器。实施协议可以提供基于会话密钥选择子密钥的例程Neuman等人,标准跟踪[第33页]


副本请求4120Kerberos V5 2005年7月和随机数,并生成要返回的协商密钥KRB_AP_REP消息。为了减轻随机数生成失败对客户,强烈鼓励用于后续使用的应用包括导出的完整密钥熵来自票证中携带的KDC生成的会话密钥。我们离开如何使用密钥的协议协商(例如,用于选择加密或校验和类型)。这个Kerberos协议不约束实现选项,但下面是如何做到这一点的示例。应用程序可以选择协商要使用的密钥的一种方法为了后续的完整性和隐私保护,客户需要在验证器的子密钥字段中提出密钥。服务器然后可以使用客户端建议的密钥作为输入来选择密钥,在应用程序的子密钥字段中返回新的子密钥回复。然后可以使用此键进行后续通信。通过单向和双向身份验证交换应注意不要向对方发送敏感信息没有适当的保证。尤其是需要隐私或完整性应使用来自服务器到客户端,以确保客户端和服务器的对等身份。如果应用程序协议要求其隐私消息,它可以使用KRB_PRIV消息(第3.5节).  这个KRB_SAFE消息(第3.4节)可用于确保完整性。3.3.票务服务(TGS)交易所总结消息方向消息类型章节
         1.客户端到Kerberos KRB_TGS_REQ 5.4.12.Kerberos到客户端KRB_TGS_REP或5.4.2KRB_错误5.9.1启动客户机和Kerberos TGS之间的TGS交换当客户端试图获取给定的服务器(可能在远程域中注册),当它寻求续签或验证现有票据,或寻求获取代理票证。在第一种情况下,客户必须已经已经使用AS获取了票证授予服务的票证交换(TGT通常是在客户最初向系统进行身份验证,例如当用户登录时)。这个TGS交换的消息格式与AS交换。主要区别是加密和TGS交换中的解密不会在客户端的Neuman等人,标准跟踪[第34页]


副本请求4120Kerberos V5 2005年7月键。相反,来自TGT或可续订票证的会话密钥,或使用来自Authenticator的子会话密钥。正如以下情况所有应用服务器,TGS不接受过期票据,因此,一旦可续期或TGT到期,客户必须使用单独的兑换以获得有效门票。TGS交换由两条消息组成:请求(KRB_TGS_REQ)从客户端到Kerberos Ticket-Granting Server,并返回(KRB_TGS_REP或KRB_ERROR)。KRB_TGS_REQ消息包括对客户端进行身份验证的信息以及凭据请求。身份验证信息由身份验证标头组成(KRB_AP_REQ),包括客户之前获得的票证授予、可续签或无效票证。在TGT和代理中在这种情况下,请求可能包括以下一个或多个:列表网络地址的一组类型化授权数据密封在票据中供应用程序服务器授权使用,或其他票据(其使用将在后面介绍)。这个TGS回复(KRB_TGS_REP)包含请求的加密凭据在TGT或可续签票据的会话密钥中,或者,如果存在,在Authenticator的子会话密钥中(属于身份验证标头)。KRB_ERROR消息包含错误代码以及解释出错原因的文本。KRB_ERROR消息不是加密。KRB_TGS_REP消息包含的信息可以用于检测重播,并将其与消息关联它回答道。KRB_ERROR消息还包含可以用于将其与回复的消息关联。这个关于KRB_ERROR消息完整性保护的相同评论在中提到第3.1节适用于TGS交易所。3.3.1.KRB_TGS_REQ消息的生成在向票务授予服务发送请求之前,客户端必须确定应用程序服务器被认为属于哪个领域注册。这可以通过几种方式来实现。它可能会事先知道(因为领域是主体的一部分标识符),它可能存储在名称服务器中,也可能是从配置文件中获取。如果要使用的领域是从名称服务器获取,如果提供域名的nameservice没有经过身份验证。这个可能导致使用已被破坏的领域会导致攻击者破坏应用程序服务器到客户端的身份验证。如果客户机知道服务主体名称和领域,并且它知道还没有拥有相应领域的TGT,那么必须获得。首先通过请求TGT客户机所在的Kerberos服务器的目标域拥有一个TGT(通过递归使用KRB_TGS_REQ消息)。这个Neuman等人,标准跟踪[第35页]


副本请求4120Kerberos V5 2005年7月Kerberos服务器可能会返回所需领域的TGT,在这种情况下我们可以继续。或者,Kerberos服务器可能会返回TGT对于“更接近”所需领域的领域(沿着客户端领域和请求的领域服务器的领域)。注意,在这种情况下Kerberos服务器的错误配置可能会导致生成的身份验证路径,客户端应该小心发现并避免。如果Kerberos服务器返回比所需领域,客户端可以使用本地策略配置验证使用的身份验证路径是否可接受。或者,客户端可以选择自己的身份验证路径,而不是依赖Kerberos服务器来选择一个。在任何一种情况下案例中,用于选择或验证身份验证路径,无论是通过Kerberos服务器还是通过必须从可信来源获取客户端。当客户获得“更接近”目的地的TGT时领域,客户端可能会缓存此票证并在将来重用它KRB-TGS与“更紧密”领域的服务进行交换。然而,如果客户将从获取“更近”领域的TGT初始KDC,而不是作为获得另一张门票的一部分,然后可以使用到“更近”领域的较短路径。这个更短路径可能是可取的,因为知道所涉及票据的会话密钥。因此,客户应该评估他们是否信任过渡的王国获得当决定在未来使用门票时,“更接近”门票。一旦客户机获得适当领域的TGT确定哪个Kerberos服务器为该域提供服务并联系一个服务器其中之一。可以通过配置文件或网络服务,或者它可能由领域的名称生成。只要王国交换的密钥是保密的,只有使用虚假Kerberos服务器导致拒绝服务。与As交换一样,客户端可以在KRB_TGS_REQ消息。其中一个选项是ENC-TKT-IN-SKEY用于用户对用户身份验证的选项。用户概述-可以在中找到对用户的身份验证第3.7节。生成时KRB_TGS_REQ消息,此选项指示客户端包括从应用服务器获得的TGT请求的附加票据字段,KDC应使用会话密钥加密应用服务器的票证从这个附加票证,而不是从主体数据库。Neuman等人,标准跟踪[第36页]


副本请求4120Kerberos V5 2005年7月客户端准备KRB_TGS_REQ消息,提供身份验证头作为padata字段的元素,以及包括与KRB_as_REQ消息中使用的字段相同的字段有几个可选字段:的enc-authorization-data字段应用程序服务器的使用和某些用户需要的额外票证选项。在准备身份验证标头时,客户端可以选择子-Kerberos服务器响应将使用的会话密钥加密。如果客户端选择子会话密钥,必须小心用于确保所选子会话密钥的随机性。如果未指定子会话密钥,则来自TGT的会话密钥将使用。如果存在enc-authorization-data,则必须在子会话密钥中加密(如果存在),来自身份验证器验证标头的一部分,如果不存在,则使用来自TGT的会话密钥。准备好后,将消息发送到Kerberos服务器目标领域。3.3.2.接收KRB_TGS_REQ消息KRB_TGS_REQ消息的处理方式与KRB_AS_REQ消息,但还有许多其他检查需要已执行。首先,Kerberos服务器必须确定哪个服务器随附的票据是针对的,它必须选择适当的密钥进行解密。对于正常的KRB_TGS_REQ消息,它将用于将使用票务授予服务和TGS的密钥。如果TGT是由另一个领域发出的,然后是相应的互读密钥必须使用。如果(a)随附的机票不是当前领域,但用于当前领域中的应用服务器,(b) RENEW、VALIDATE或PROXY选项在请求,以及(c)请求票证的服务器是附带票证中命名的服务器,则KDC将解密使用服务器密钥的身份验证标头中的票证它是为其发布的。如果在padata中找不到票字段中返回KDC_ERR_PADATA_TYPE_NOSUPP错误。一旦随附的票证被解密,用户将提供必须根据内容验证验证器中的校验和如果校验和正确,则必须拒绝消息不匹配(错误代码为KRB_AP_ERR_MODIFIED)或校验和不是防冲突的(错误代码为KRB_AP_ERR_INAPP_CKSUM)。如果不支持校验和类型,则返回KDC_ERR_SUMTYPE_NOSUPP错误。如果授权数据则使用来自身份验证器。Neuman等人,标准跟踪[第37页]


副本请求4120Kerberos V5 2005年7月如果任何解密指示完整性检查失败,则返回KRB_AP_ERR_BAD_INTEGRITY错误。如中所述第3.1.2节,KDC必须发送有效的KRB_TGS_REP消息,如果它收到的KRB_TGS_REQ消息与它拥有的消息相同最近处理过。然而,如果验证器是重播,但是请求的其余部分不相同,则KDC应该返回KRB_AP_ERR_重复。3.3.3.生成KRB_TGS_REP消息KRB_TGS_REP消息与KRB_AS_REP共享其格式(KRB_KDC_REP),但其类型字段设置为KRB_TGS_REP详细规范见第5.4.2节响应将包括请求的服务器或要联系的中间KDC的票证授予服务器获取请求的票证。查询Kerberos数据库检索相应服务器的记录(包括密钥票据将被加密)。如果请求是针对远程领域的TGT,如果没有密钥与请求的共享领域,则Kerberos服务器将选择“最接近”的领域它与之共享密钥并使用该域的请求域而不是。这是KDC的响应将与客户端请求的服务器不同。默认情况下,地址字段、客户端名称和领域、列表传输域的时间、初始身份验证的时间、过期时间和新颁发的授权数据车票将从TGT或可续签车票中复制。如果translated字段需要更新,但translated类型没有受支持,将返回KDC_ERR_TRTYPE_NOSUPP错误。如果请求指定了结束时间,则新的票证被设置为(a)该请求,(b)结束时间的最小值(c)TGT的启动时间加上以下最小值应用程序服务器的最大寿命和本地域(请求主体的最大寿命为已在TGT发布时应用)。如果新票是续订,则上述结束时间替换为最小值(a)票据的renewtill字段的值和(b)starttime新票加上旧票的生命周期(结束时间-开始时间)门票。如果请求了FORWARDED选项,则生成的票证将包含客户端指定的地址。此选项将只有在TGT中设置了FORWARDABLE标志时,才能获得荣誉。代理人选项类似;生成的票证将包含地址Neuman等人,标准跟踪[第38页]


副本请求4120Kerberos V5 2005年7月由客户端指定。只有当PROXIABLETGT中的标志已设置。代理选项在请求额外的TGT。如果所请求的开始时间不存在、指示过去的时间,或在KDC和尚未指定POSTDATE选项,则ticket被设置为身份验证服务器的当前时间。如果是这样表示未来的时间超出可接受的时钟偏差,但尚未指定POSTDATED选项或MAY-POSTDATE标志未在TGT中设置,则错误KDC_ERR_CANNOT_POSTDATE为返回。否则,如果TGT设置了MAY-POSTDATE标志,则生成的票证将被推迟,并且请求的开始时间根据本地域的策略进行检查。如果可以接受票证的开始时间按请求设置,并设置INVALID标志。在使用之前,必须将过期票据出示给到达启动时间后的KDC。然而,在任何情况下可以是新发布的开始时间、结束时间或续订时间延期的机票超出了TGT的续签时间。如果指定了ENC-TKT-IN-SKEY选项票证已包含在请求中,它指示客户端正在使用用户对用户身份验证向无法访问永久密钥的服务器。第3.7节描述了此选项对整个Kerberos协议的影响。生成KRB_TGS_REP消息时KRB_TGS_REQ消息通知KDC解密附加票据使用附加票证所在服务器的密钥发布并验证其是否为TGT。如果请求的名称请求中缺少服务器将使用额外的票证。否则,请求的名称服务器将与附加的门票。如果不同,请求将被拒绝。如果请求成功,来自附加票证的会话密钥将为用于加密颁发的新票证,而不是使用将使用新票证的服务器的密钥。如果(a)提交给作为身份验证头一部分的KDC不是TGS的KDC本身,(b)服务器在KDC域中注册,以及(c)如果请求RENEW选项,则KDC将验证票据中设置了RENEWABLE标志,表示未设置INVALID标志在罚单上,续签期限仍在未来。如果请求VALIDATE选项,KDC将检查starttime已过,并且设置了INVALID标志。如果代理人选项,则KDC将检查PROXIABLE标志Neuman等人,标准跟踪[第39页]


副本请求4120Kerberos V5 2005年7月是在票上设定的。如果测试成功并且票证通过下一节中描述的热列表检查,KDC将发出适当的新票。KRB_TGS_REP消息中响应的密文部分为在Authenticator的子会话密钥中加密(如果存在),或在TGT的会话密钥中。它没有使用客户端的密钥。此外,客户端密钥的到期日期和关键版本号字段被省略,因为这些值是与客户端的数据库记录一起存储,该记录是不需要满足基于TGT的请求。3.3.3.1.检查被吊销的机票每当向票证授予服务器发出请求时出示的票与热门票清单进行核对已经取消的。此热门列表可能由实现存储“可疑票据”的一系列发行时间戳;如果是提交的票据的authtime在该范围内,将被拒绝。这样,被盗的TGT或可续签的车票就不能用来获得一旦发生盗窃事件,则需要额外的罚单(续签或其他)向KDC报告服务器所在领域的信息。任何在报告被盗之前获得的普通车票仍将是有效(因为票证不需要与KDC交互),但仅直到其正常到期时间。如果TGT已针对跨领域身份验证,使用跨领域TGT将不会受影响,除非热列表传播到域的KDC为其发行了此类跨领域门票。3.3.3.2.对转换字段进行编码如果TGT中提供给KDC的服务器标识作为身份验证标头的一部分,是票证授予的标头服务,但TGT是从另一个领域发布的,KDC将显示获取与该领域共享的领域间密钥,并使用该密钥解密票据。如果门票有效,KDC将兑现请求,受上述章节中概述的限制描述AS交换。客户身份的领域部分将取自TGT。发出如果TGT不是客户端主体的领域,则将其添加到待发行票据的过渡字段。这已经完成了通过从TGT(被视为无序领域名称集),将新领域添加到该集,以及然后构造并写出它的编码(速记)形式(这个可能涉及现有编码的重新排列)。请注意,票务授予服务没有添加其自己的领域。相反,它的责任是添加Neuman等人,标准跟踪[第40页]


副本请求4120Kerberos V5 2005年7月上一个领域。这可以防止恶意Kerberos服务器故意省略自己的名字(然而,它可以省略其他名字领域名称)。本地领域和主体领域的名称都不是被包括在过渡字段中。它们出现在票证和都参与了对校长。由于不包括端点,因此本地和传输字段中的单跳帧间认证结果那是空的。因为此字段中添加了每个过渡域的名称,它可能会很长。要缩短此长度字段中,对其内容进行编码。最初支持的编码是针对领域间通信的正常情况进行了优化:a使用域或X.500样式的领域层次结构领域名称。此编码(称为DOMAIN-X500-COMPRESS)现在是描述。转换字段中的领域名称由“,”分隔。“,”,“\”、尾随“.”s和前导空格(“”)是特殊字符,如果它们是域名的一部分,则必须在通过在它们前面加上“\”来转换字段。以“.”结尾的领域名称被解释为前缀为前一个领域。例如,我们可以对EDU的遍历进行编码,麻省理工学院。雅典EDU。麻省理工学院。华盛顿EDU。EDU和CS。华盛顿。EDU为:“麻省理工学院EDU,华盛顿州雅典,密西西比州EDU”。请注意,如果任一雅典人。麻省理工学院。EDU或CS。华盛顿。EDU是端点,它们将不包括在该字段中,我们将具有:“EDU,麻省理工学院,华盛顿,EDU”以“/”开头的领域名称被解释为附加到前一个领域。为了附加,领域在第一个列出的领域之前的领域被视为空领域(“”)。如果以“/”开头的域名是独立的,那么它应该在前面加一个空格(“”)。例如,我们可以编码遍历/COM/HP/APOLLO、/COM/HP、/COM和/COM/DEC为:“/COM、/HP、/APOLLO、/COM/DEC”。如上例所示,如果/COM/HP/APOLLO和/COM/DEC端点,它们将不包括在该字段中,我们将具有:Neuman等人,标准跟踪[第41页]


副本请求4120Kerberos V5 2005年7月“/COM,/HP”“,”前面或后面的空子字段表示前一个领域和下一个领域之间的领域已遍历。为了解释空子字段客户领域被认为先于过渡领域的领域,服务器的领域被认为遵循它们。因此,“,”表示客户端和服务器之间的路径上的所有域都具有已遍历。“、EDU、/COM”表示客户的领域一直到EDU(在域样式层次结构中)遍历,从/COM到服务器域的所有内容在X.500样式中也进行了遍历。如果一个层次结构中的EDU领域直接与共享内部密钥另一个层次结构中的/COM领域。3.3.4.接收KRB_TGS_REP消息当客户端收到KRB_TGS_REP时,它将在中进行处理与上述KRB_as_REP处理方式相同。这个主要区别在于,响应的密文部分必须使用来自Authenticator的子会话密钥进行解密,如果是在请求中指定的,或者是来自TGT的会话密钥而不是客户端的密钥。回复中返回的服务器名称是服务的真正主体名称。3.4KRB_SAFE交易所KRB_SAFE消息可能会被需要以下能力的客户使用检测它们交换的消息的修改。它通过以下方式实现这一点包括用户数据的键控防碰撞校验和和一些控制信息。校验和用加密密钥加密(通常是通过子密钥协商的最后一个密钥,或者如果没有进行协商)。3.4.1.生成KRB_SAFE消息当应用程序希望发送KRB_SAFE消息时,它会收集其数据和适当的控制信息,并计算对它们进行校验。校验和算法应该是键控的校验和必须与所使用的加密系统一起实现用于子会话或会话密钥。校验和是使用生成的子会话密钥(如果存在)或会话密钥。一些实现对KRB_SAFE使用不同的校验和算法消息,但以互操作的方式这样做并不总是可能。KRB_SAFE消息的控制信息包括时间戳和序列号。应用程序的设计者Neuman等人,标准跟踪[第42页]


副本请求4120Kerberos V5 2005年7月使用KRB_SAFE信息时,必须至少选择其中一个机制。此选择应基于应用程序协议。当收到所有发送的消息时,序列号很有用被同龄人。当前需要保持连接状态会话密钥,因此不应维护下一个序列号提出了另一个问题。如果应用程序协议预计会容忍丢失消息在不重新发送的情况下,时间戳的使用是适当的重放检测机制。使用时间戳也是多播协议的适当机制对等方共享一个通用子会话密钥,但会发送一些消息到同龄人的一个子集。计算校验和后,客户端然后发送以消息格式发送给收件人的信息和校验和在中指定第5.6.1节3.4.2.接收KRB_SAFE消息当应用程序接收到KRB_SAFE消息时,它会将其验证为跟随。如果发生任何错误,将报告错误代码供使用应用程序。首先通过验证协议版本来检查消息和类型字段分别与当前版本和KRB_SAFE匹配。不匹配会生成KRB_AP_ERR_BADVERSION或KRB_AP-ERR_MSG_TYPE错误。应用程序验证使用的校验和是否为使用与兼容的密钥的防撞键校验和适当的子会话或会话密钥(或应用程序从会话或子会话密钥派生的密钥)。如果不是,则为生成KRB_AP_ERR_INAPP_CKSUM错误。发件人地址必须包含在控制信息中;收件人验证操作系统对发件人地址的报告与邮件中的发件人地址,以及(如果收件人地址是指定或收件人需要地址)收件人的地址显示为收件人的地址消息。要使用网络地址转换,发送方可以使用中指定的定向地址类型第8.1节对于发件人地址,不包括收件人地址。的匹配失败这两种情况都会生成KRB_AP_ERR_BADADDR错误。然后是时间戳并且检查usec和/或序列号字段。如果时间戳和usec是预期的但不存在,或者如果它们存在但不存在则产生KRB_AP_ERR_SKEW错误。时间戳不是要求严格有序;他们只需要在倾斜窗口。如果服务器名称以及客户端名称、时间,Neuman等人,标准跟踪[第43页]


副本请求4120Kerberos V5 2005年7月和来自Authenticator的微秒字段匹配最近看到的任何字段(发送或接收)此类元组,KRB_AP_ERR_REPEAT错误为生成。如果包含错误的序列号,或者如果序列号应为但不存在,KRB_AP_ERR_BADORDER生成错误。如果既没有时间戳和usec也没有序列如果出现数字,则生成KRB_AP_ERR_MODIFIED错误。最后,通过数据和控件计算校验和信息,如果它与收到的校验和不匹配生成KRB_AP_ERR_MODIFIED错误。如果所有检查都成功,则应用程序可以确保消息由其对等方生成,未在传输过程中修改。实现应接受其实现的任何校验和算法既有足够的安全性,又有与子系统兼容的密钥-会话或会话密钥。无键校验和或非冲突校验和是不适合此用途。3.5KRB_PRIV交易所需要保密的客户可能会使用KRB_PRIV消息以及检测交换消息修改的能力。通过加密消息和添加控制来实现这一点信息。3.5.1.生成KRB_PRIV消息当应用程序希望发送KRB_PRIV消息时,它会收集其数据和适当的控制信息(在第5.7.1节)并使用加密密钥(通常为通过子密钥协商的最后一个密钥,如果没有协商,则为会话密钥已发生)。作为控制信息的一部分,客户端必须选择使用时间戳或序列号(或两者);看见中的讨论第3.4.1节获取使用指南。用户数据和控制信息加密后,客户端将密文和一些“信封”信息传输到收件人。3.5.2.接收KRB_PRIV消息当应用程序接收到KRB_PRIV消息时,它会将其验证为跟随。如果发生任何错误,将报告错误代码供使用应用程序。首先通过验证协议版本来检查消息和类型字段分别与当前版本和KRB_PRIV匹配。不匹配会生成KRB_AP_ERR_BADVERSION或KRB_AP-ERR_MSG_TYPE错误。然后应用程序解密密文并处理Neuman等人,标准跟踪[第44页]


副本请求4120Kerberos V5 2005年7月生成的明文。如果解密显示数据修改后,将生成KRB_AP_ERR_BAD_INTEGRITY错误。控制信息中必须包含发送方的地址;这个收件人验证操作系统对发件人的地址与邮件中发件人的地址相匹配。如果收件人指定了地址,或者收件人需要一个地址,然后是一个收件人的地址也必须显示为收件人的消息中的地址。发件人或收件人的地址可能由于网络原因,与消息中的地址不匹配地址转换,可以编写应用程序来使用地址代替实际网络的定向地址类型地址。两种情况的匹配失败都会生成KRB_AP_ERR_BADADDR错误。要使用网络地址转换,实现可以使用中定义的定向地址类型第7.1节对于发件人地址,不包括收件人地址。接下来,时间戳和usec和/或序列号字段是选中的。如果时间戳和usec是预期的但不存在,或者如果它们存在但不是当前的,KRB_AP_ERR_SKEW错误为生成。如果服务器名称以及客户端名称、时间和Authenticator中的微秒字段与最近的任何此类字段匹配-则生成KRB_AP_ERR_REPEAT错误。如果包含错误的序列号,或者如果序列号应为但不存在,则生成KRB_AP_ERR_BADORDER错误。如果既不存在时间戳和usec也不存在序列号,则生成KRB_AP_ERR_MODIFIED错误。如果所有检查都成功,应用程序可以假定消息是由对等方生成并安全传输(无入侵者查看未加密的内容)。3.6KRB_CRED交易所需要以下能力的客户可以使用KRB_CRED消息将Kerberos凭据从一台主机发送到另一台主机。它实现了这一点通过将票据与包含会话密钥和与票据相关的其他信息。3.6.1.生成KRB_CRED消息当应用程序希望发送KRB_CRED消息时,它首先(使用KRB_TGS交换)获得要发送给远程主机。然后使用票据构造KRB_CRED消息或获得的票证,放置使用每个票证所需的会话密钥Neuman等人,标准跟踪[第45页]


副本请求4120Kerberos V5 2005年7月对应的KrbCredInfo序列的键字段中的票据KRB_CRED消息的加密部分。与每张票相关并在KRB_TGS交换也放置在相应的KrbCredInfo中KRB_CRED消息加密部分中的序列。当前时间,如果应用程序特别需要nonce、s-address和r-address字段被放置在加密的KRB_CRED消息的一部分,然后根据之前在KRB_AP交换中交换的加密密钥(通常通过子密钥协商的最后一个密钥,如果没有,则为会话密钥已进行协商)。实施说明:为构建KRB_CRED消息时包含在GSSAPI初始上下文标记中,MIT实现如果会话密钥是DES或三重DES键。为了与麻省理工学院实现互操作性Microsoft实施不会加密GSSAPI中的KRB_CRED令牌(如果它使用DES会话密钥)。从1.2.5版开始,MIT Kerberos可以接收和解码加密或未加密GSSAPI交易所中的KRB_CRED代币。Heimdal实施Kerberos也可以接受加密或未加密的KRB_CRED信息。因为GSSAPI令牌中的KRB_CRED消息是加密的在验证器中,MIT行为不提供安全性问题,尽管这违反了Kerberos规范。3.6.2.接收KRB_CRED消息当应用程序收到KRB_CRED消息时,它会进行验证。如果如果发生任何错误,将报告错误代码供应用程序。通过检查协议来验证消息版本和类型字段与当前版本和KRB_CRED匹配,分别是。不匹配会生成KRB_AP_ERR_BADVERSION或KRB_AP_ERR_MSG_TYPE错误。然后应用程序解密密文并处理生成的明文。如果解密显示要修改的数据,KRB_AP_ERR_BAD_INTEGRITY生成错误。如果存在或需要,接收人可以验证操作系统对发件人地址的报告与发件人地址相匹配在邮件中,收件人的地址之一显示为邮件中收件人的地址。地址检查没有提供任何额外的安全性,因为地址(如果存在)已经在KRB_AP_REQ消息中进行了检查,并且没有攻击者在反射KRB_CRED消息时获得的好处回到它的发起者。因此,收件人可能会忽略该地址即使它是为了在网络地址中更好地工作而存在翻译(NAT)环境。两种情况都不匹配Neuman等人,标准跟踪[第46页]


副本请求4120Kerberos V5 2005年7月生成KRB_AP_ERR_BADADDR错误。收件人可以跳过地址检查,因为KRB_CRED消息通常无法反映回到发起者。时间戳和usec字段(以及nonce字段(如果需要)。如果时间戳和usec是不存在,或者如果它们存在但不是当前的生成KRB_AP_ERR_SKEW错误。如果所有检查都成功,应用程序将存储每个新的凭证缓存中的票证以及会话密钥和相应KrbCredInfo序列中的其他信息KRB_CRED消息的加密部分。3.7.用户对用户身份验证交换用户对用户身份验证提供了一种执行验证程序无法访问长期服务密钥。在运行服务器(用于例如,窗口服务器)作为工作站上的用户。在这种情况下,服务器可以访问用户登录时获得的TGT但因为服务器是作为没有特权的用户,它可能无法访问系统密钥。类似运行对等应用程序时可能会出现这种情况。总结消息方向消息类型节0.未指定来自应用程序服务器的消息1.客户端到Kerberos KRB_TGS_REQ 3.3和5.4.12.Kerberos到客户端KRB_TGS_REP或3.3&5.4.2KRB_错误5.9.13.客户端到应用程序服务器KRB_AP_REQ 3.2和5.5.1为了解决这个问题,Kerberos协议允许客户端请求使用TGT向将验证身份验证。必须通过以下方式从验证器处获得TGTKerberos协议外部的交换,通常作为应用程序协议。此消息显示在上面的摘要中作为消息0。注意,因为TGT是在KDC的密钥,未经拥有,不能用于身份验证相应密钥的。此外,因为验证者不泄露相应的密钥,提供验证器的TGT不允许模拟验证器。上表中的消息0表示特定于应用程序客户端和服务器之间的协商,在协商结束时已确定将使用用户对用户身份验证,并且客户端已获得服务器的TGT。Neuman等人,标准跟踪[第47页]


副本请求4120Kerberos V5 2005年7月接下来,客户端将服务器的TGT作为附加票据包含在其向KDC发出的KRB_TGS_REQ请求(上表中的消息1)和在其请求中指定ENC-TKT-IN-SKEY选项。如果根据中的说明进行验证第3.3.3节,的应用程序票证返回给客户端(表中的消息2将使用附加的票证,客户端在使用或存储申请单。使用为用户对用户获取的票证联系服务器时身份验证(上表中的消息3),客户端必须在ap-options字段中指定USE-SESSION-KEY标志。这说明应用程序服务器使用与其TGT关联的会话密钥以解密在应用程序请求中提供的服务器票证。4加密和校验和规范本文档中描述的Kerberos协议旨在使用流加密或块加密对任意大小的消息进行加密密码。加密用于证明网络的身份参与消息交换的实体。密钥分发每个领域的中心都由在其中注册的所有主体信任域以秘密存储密钥。知识证明此密钥用于验证主体的真实性。KDC使用主体的密钥(在AS交换中)或共享会话密钥(在TGS交换中),用于对响应进行加密票务请求;获取密钥或会话密钥的能力意味着了解适当的密钥和KDC。主体解密KDC响应和出示票据和格式正确的身份验证器(使用生成KDC响应的会话密钥)验证委托人身份;同样,服务的能力从Ticket中提取会话密钥并证明其知识其在响应中验证服务的身份。[RFC3961号文件]定义用于定义加密和校验和的框架用于Kerberos的机制。它还定义了几个这样的在该文档的未来更新中,可能会添加更多机制。提供的字符串对键操作[RFC3961号文件]用于生产主体的长期密钥(通常用于用户)。默认值如果通过预身份验证数据没有提供salt字符串,则为按顺序连接主体的领域和名称组件,没有分隔符。除非另有说明,否则默认中定义的字符串到键不透明参数集[RFC3961号文件]使用。Neuman等人标准轨道[第48页]


副本请求4120Kerberos V5 2005年7月加密数据、密钥和校验和使用中定义的EncryptedData、EncryptionKey和Checksum数据对象第5.2.9节.加密、解密和校验和操作本文档中描述的使用相应的加密,中描述的解密和get_mic操作[RFC3961型],使用使用“key usage”值隐式生成“specific key”在每个EncryptedData或Checksum对象的描述中指定更改每个操作的键。请注意,在某些情况下要使用的值取决于选择键或消息的上下文。密钥用法是无符号32位整数;不允许为零。这个加密或校验和Kerberos消息的密钥使用值为如所示第5节以及消息定义。钥匙使用值512-1023保留给Kerberos内部使用实施。(例如,播种一个伪随机数生成器,其值由使用会话密钥和不用于任何其他目的的密钥使用值。)1024和2047(含)之间的密钥使用值保留给应用使用;应用程序应使用偶数值进行加密和此范围内校验和的奇数值。关键使用值是也在中的表中进行了总结第7.5.1节可能还有其他文档根据以下方面定义协议这个副本请求1510加密类型或校验和类型。这些文件不知道密钥用法。为了使这些规格如果没有密钥使用,则在更新之前保持有意义值,则密钥用法1024和1025必须用于分别导出加密密钥和校验和密钥。(这是真的不适用于独立于这个框架,通过直接使用Kerberos生成的密钥身份验证交换。)根据定义的新协议Kerberos加密和校验和类型应该使用它们自己的密钥用法值。除非另有说明,否则不进行密码状态链接从一个加密操作到另一个。实施说明:虽然不建议使用,但一些应用程序协议将继续直接使用密钥数据,即使只有在当前现有的协议规范。实现因此,为了支持通用Kerberos应用程序,可能需要提供关键数据以及属性和操作中描述的[RFC3961号文件].  直接原因之一是执行加密是对协商和选择“足够强”的加密算法(在给定应用程序的上下文)。虽然Kerberos不直接提供在Neuman等人,标准跟踪[第49页]


副本请求4120Kerberos V5 2005年7月应用程序客户端和服务器,有几种方法可以使用Kerberos以促进此协商。例如,客户可以只从KDC请求“足够强”的会话密钥类型,并且希望KDC返回的任何类型都能被理解由应用程序服务器支持。5.消息规范此处收集的ASN.1应与附录A。在发生冲突的情况下附录A应优先考虑。这里根据抽象语法定义了Kerberos协议符号一(ASN.1)[X680型],提供用于指定协议消息的抽象布局及其编码。未使用现有ASN.1编译器或提醒支持库了解实际的ASN.1彻底规范以确保正确实施行为。符号比现在更复杂很明显,ASN.1的一些教程和指南如下误导或错误。注意,在几个地方,从副本请求1510已经完成。这部分是为了解决普遍存在的假设不同的实现者所做的,在某些情况下导致无意违反ASN.1标准。这些显然是标记它们发生的位置。抽象类型之间的差异在里面副本请求1510和此文档中的抽象类型可能导致当某些编码规则,例如,使用打包编码规则(PER)。这个理论不兼容性与Kerberos无关,因为Kerberos显式指定使用区分编码规则(德国)。对于寻求使用Kerberos的协议来说,这可能是一个问题具有其他编码规则的类型。(不建议采用这种做法。)除了极少数例外(最显著的是BIT STRING的使用)使用DER产生的编码在中定义的类型射频1510以及本文档中定义的类型。本节中的类型定义假定ASN.1模块以下形式的定义:Neuman等人,标准跟踪[第50页]


副本请求4120Kerberos V5 2005年7月KerberosV5Spec2{iso(1)识别组织(3)dod(6)internet(1)安全(5)kerberosV5(2)模块(4)krb5spec2(2)}定义明确标签::=开始--此处显示其余定义结束这指定模块的标记上下文为显式和非自动。请注意,在一些其他出版物中(例如[RFC1510协议]和[RFC1964号文件]),对象标识符的“dod”部分错误指定为具有值“5”。在以下情况下RFC 1964年,使用“正确的”OID值会导致导线发生变化协议;因此,目前它保持不变。请注意,在本文件的其他地方,各种消息类型不一致,但主要遵循C语言约定,包括使用下划线(_)字符和全大写名称的拼写应为数字常量。此外,在一些位置、标识符(尤其是那些引用常量的标识符)是用全大写字母书写,以区别于周围解释性文本。ASN.1表示法不允许在标识符中使用下划线,因此在实际ASN.1定义中,下划线替换为连字符(-)。此外,ASN.1中的结构成员名称和定义值必须以小写字母开头,而类型名称必须以大写字母。5.1ASN.1的特定兼容性说明出于兼容性的目的,实现者应该注意以下几点关于在Kerberos中使用ASN.1的具体说明。这些注释不要描述与ASN.1标准用法的偏差。目的这些笔记中的一部分是描述一些历史怪癖和各种实现的不遵从性,以及历史歧义,尽管它们是有效的ASN.1,但可能导致实施过程中的混乱。5.1.1.ASN.1区分编码规则Kerberos协议消息的编码应遵守ASN.1的区分编码规则(DER),如中所述[X690型].一些实现(主要被认为是从DCE派生的实现1.1和更早版本)已知使用更通用的基本编码Neuman等人,标准跟踪[第51页]


副本请求4120Kerberos V5 2005年7月规则(BER);特别是,这些实现发送不确定长度编码。实现可以在向后兼容性的好处,尽管实现者是警告说,解码完全通用的误码率是充满危险的。5.1.2.可选整数字段一些实现在内部不区分省略的可选整数值和传输值为零。这些地方在相关的协议中包括各种微秒字段、Nonce和序列号。实施应处理省略了可选整数值,因为它是用值为零,如果应用程序期望如此。5.1.3.类型的空序列协议中有些地方的消息包含SEQUENCEOF类型作为可选成员。这可能导致编码包含空的SEQUENCE OF编码。Kerberos协议可以没有在语义上区分缺少的可选序列OF类型和当前可选但为空的SEQUENCE OF类型。实现不应发送空的编码序列标记为可选,但应将其视为等同于省略了OPTIONAL类型。在描述Kerberos的ASN.1语法中消息,这些有问题的可选序列类型的实例用注释表示。5.1.4.无法识别的标记号此协议的未来修订可能包括新的消息类型不同的应用类别标签号。此类修订应通过只向发送消息类型来保护旧的实现已知了解这些信息的各方;例如,通过旗帜接收器在前一个请求中设置的位。为了稳健的错误处理,实现应该优雅地处理接收带有无法识别的标记的消息,并返回错误消息(如果适用)。特别是,KDC应该返回KRB_AP_ERR_MSG_TYPE,如果通过TCP传输发送的标签不正确。KDC不应响应通过UDP传输接收到的带有未知标记的消息为了避免拒绝服务攻击。对于非KDC应用程序,Kerberos实现通常指示应用程序出错,该应用程序根据应用程序协议。Neuman等人,标准跟踪[第52页]


副本请求4120Kerberos V5 2005年7月


5.1.5.标签号大于30DER ASN.1解码器的简单实现可能会遇到问题ASN.1标签号大于30,因为此类标签号使用多个字节进行编码。本协议的未来修订可以使用大于30的标签号,并且实现应该准备在适当的时候优雅地返回错误不要识别标签。5.2.基本Kerberos类型本节定义了一些可能的基本类型用于多个Kerberos协议消息。5.2.1.KerberosString中Kerberos协议的原始规范副本请求1510使用GeneralString在许多地方用于人类可读的字符串数据。Kerberos的历史实现无法利用全部功能此ASN.1类型需要使用指定和ISO-2022/ECMA-35中规定的调用转义序列[ISO-2022/ECMA-35]切换字符集,默认指定为G0的字符集是ISO-646/ECMA-6[ISO-646/ECMA-6]国际参考版本(IRV)(亦称美国。ASCII),这基本上是可行的。ISO-2022/ECMA-35定义了四个字符集代码元素(G0..G3)和两个控制功能代码元素(C0..C1)。DER禁止将字符集指定为除G0和C0集之外的任何字符集。不幸的是,这似乎有副作用,禁止ISO-8859(ISO拉丁语)的使用[ISO-8859标准]字符集或任何其他使用96个字符集的字符集,如ISO-2022/ECMA-35禁止将其指定为G0代码元素。这种副作用正在ASN.1标准社区进行调查。实际上,许多实现将GeneralString视为是实现中设置的任意字符的8位字符串默认为,不考虑字符集的正确用法指定转义序列。默认字符集通常是由当前用户的操作系统相关区域设置确定。至少有一个主要实现将未转义的UTF-8编码GeneralString中的Unicode字符。未能遵守GeneralString规范导致了互操作性问题当Kerberos使用冲突的字符编码时客户端、服务和KDC。Neuman等人,标准跟踪[第53页]


射频4120Kerberos V5 2005年7月这种不幸的情况是由于不正确的文件先前Kerberos中ASN.1 GeneralString类型的限制规范。下面定义的新(post-RFC 1510)类型KerberosString是一个约束为仅包含中的字符的GeneralStringIA5字符串。KerberosString::=通用字符串(IA5String)通常,US-ASCII控制字符不应用于KerberosString.主体中不应使用控制字符名称或域名。为了兼容性,实现可以选择接受GeneralString包含不允许的字符的值IA5String,但他们应该知道字符集指定代码可能不存在,编码可能是几乎在所有方面都被视为特定于本地的。5月实施也可以选择发出超出这些值的GeneralString值IA5String允许,但他们应该知道这样做是从互操作性角度来看,风险极高。一些现有的实现使用GeneralString来编码未转义的特定于区域设置的字符。这违反了ASN.1标准。大多数实现都在左半部分,只要实现只传输US-ASCII,在这方面没有违反ASN.1标准。尽快因此,实现对特定于非转义语言环境的代码进行编码它违反了ASN.1标准。已知其他实现使用GeneralString来包含UTF-8编码。这也违反了ASN.1标准,因为UTF-8是不同的编码,而不是定义的94或96个字符的“G”集根据ISO 2022。据信,这些实现甚至使用ISO 2022转义序列更改字符编码。即使实现要通过使用该转义序列,ASN.1标准禁止使用任何转义序列,而不是用于指定/调用“G”或“C”的转义序列GeneralString允许的集合。未来对该协议的修订几乎肯定会允许可能是主体名称的更具互操作性的表示包括UTF8String。请注意,将新约束应用于以前未受约束的类型构成新ASN.1类型的创建。在这方面在这种情况下,更改不会导致DER下的编码发生更改。Neuman等人,标准跟踪[第54页]


副本请求4120Kerberos V5 2005年7月


5.2.2.领域和主体名称领域::=KerberosString主体名称::=序列{名称类型[0]Int32,name-string[1]KerberosString序列}Kerberos领域名称编码为KerberosStrings。王国应不包含代码为0的字符(US-ASCII NUL)。大多数领域通常由几个组件组成,这些组件由句点(.),格式为Internet域名,或由分隔斜线(/),X.500名称样式。领域的可接受形式名称在中指定第6.1节.PrincipalName是类型化的由以下子字段组成的组件序列:名称-类型此字段指定后面的名称类型。预定义此字段的值在中指定第6.2节.名称类型应视为提示。忽略名称类型,没有两个名称可以是相同的(即,至少一个组件,或领域,必须不同)。名称字符串此字段对组成名称的组件序列进行编码,每个组件编码为KerberosString的组件PrincipalName和Realm构成主体标识符。大多数PrincipalNames将只有几个组件(通常是一个或二)。5.2.3.Kerberos时间KerberosTime::=GeneralizedTime--无小数秒Kerberos中使用的时间戳编码为GeneralizedTimes。A类KerberosTime值不应包括秒。根据DER的要求,其进一步不应包括分隔符,并应指定UTC时区(Z)。示例:UTC时间的唯一有效格式为6分27秒,晚9点后6点1985年11月为19851106210627Z。5.2.4.受约束的整数类型某些类型的整数成员应约束为值以32位表示,以便与合理的实施限制。Neuman等人,标准跟踪[第55页]


副本请求4120Kerberos V5 2005年7月整数32::=整数(-2147483648..2147483647)--以32位表示的有符号值UInt32::=整数(0..4294967295)--无符号32位值微秒::=整数(0..99999)--微秒虽然这会导致从副本请求
   1510版本,DER中的编码应保持不变。历史实现通常限于32位整数值无论如何,指定的数字应该落在整数空间中以32位表示的值,以提高互操作性无论如何。消息中的几个整数字段被约束为固定值。聚乙烯醇编号同样是TKT-VNO或AUTHENTICATOR-VNO,这个重复出现的字段总是常数整数5。制作这个字段没有简单的方法转换为有用的协议版本号,因此其值是固定的。消息类型此整数字段通常与应用程序标记相同包含消息类型的编号。5.2.5.HostAddress和HostAddresses主机地址::=序列{地址类型[0]Int32,地址[1]八位字节字符串}--注意:主机地址始终用作可选字段,并且--不应为空。主机地址——注:与rfc1510型,--但有一个值映射并进行相同的编码::=主机地址序列主机地址编码由两个字段组成:地址类型此字段指定后面的地址类型。预处理-此字段的定义值在中指定第7.5.3节地址此字段对addr-type类型的单个地址进行编码。Neuman等人,标准跟踪[第56页]


副本请求4120Kerberos V5 2005年7月


5.2.6.授权数据--注:AuthorizationData始终用作可选字段--不应为空。授权数据::=序列序列{广告类型[0]Int32,ad-data[1]八位字节字符串}广告数据此字段包含要根据解释的授权数据对应ad类型字段的值。广告类型此字段指定ad-data子字段的格式。全部负值保留供本地使用。非负值保留供注册使用。每个类型和数据序列都被称为授权元素。元素可能是特定于应用的;然而,有一个所有人都应该理解的通用递归元素集实现。这些元素包含嵌入的其他元素以及封装元素的解释确定必须解释哪些嵌入元素,以及这可能会被忽略。这些常见的授权数据元素是递归定义的,这意味着这些类型的广告数据本身将包含其解释受以下因素影响的授权数据序列封装元素。取决于封装元件,可以忽略封装元件,可能被解释为由KDC直接发布,也可能是存储在票据的单独明文部分。的类型封装元素被指定为Kerberos的一部分因为基于这些值的行为应该是跨实现理解,而其他元素只需要被它们影响的应用程序理解。如果授权数据元素存在于票证或验证器。如果未知授权数据元素服务器在AP-REQ或票证中接收类型包含在AP-REQ中,除非它封装在已知的修改元素关键性的授权数据元素它包含,身份验证必须失败。授权数据为旨在限制票据的使用。如果服务不能确定该限制是否适用于该服务,然后Neuman等人,标准跟踪[第57页]


副本请求4120Kerberos V5 2005年7月如果票证可以用于此目的,则可能会导致安全漏洞服务。可选的授权元素可以包含在AD-IF-RELEVANT元件。在下面的定义中元素将被指定为子节编号,ad-data的值如所示子节标题之后的ASN.1结构。广告数据内容广告类型AD-IF-RELEVANT 1的DER编码AD-KDC发布的DER编码4AD-AND-OR 5的DER编码AD-MANDATORY-FOR-KDC 8的DER编码5.2.6.1.IF-解除AD-IF-相关::=授权数据封装在if-relevant元素中的AD元素旨在仅由理解嵌入元素的特定ad类型。应用程序服务器不了解嵌入在if-relevant元素可能会忽略无法解释的元素。这个元素可以促进跨实现的互操作性具有本地授权扩展。的广告类型AD-IF-RELEVANT为(1)。5.2.6.2.KDC已发布AD-KDC发布::=序列{ad-checksum[0]校验和,i-realm[1]领域可选,i-sname[2]主体名称可选,元素[3]授权数据}ad-checksum公司根据的DER编码计算的加密校验和“elements”字段中的AuthorizationData,与会话一起键入键。其校验和类型是会话密钥的加密类型,其密钥使用值为19。Neuman等人标准轨道[第58页]


副本请求4120Kerberos V5 2005年7月我的领域,我的陷阱发行主体的名称(如果与KDC本身。当KDC可以验证签发负责人签署的要素的真实性,以及允许此KDC将有效性通知应用程序服务器这些元素中的一个。元素KDC发布的授权数据元素序列。KDC发布的ad-data字段旨在为嵌入自身权限的Kerberos主体凭据属性和其他积极授权机制,扩大校长的特权使用没有这种a-data元素的凭据。如果没有此元素,则无法提供上述方法,因为authorization-data字段的定义允许元素TGT持有人在其要求时自愿添加服务票证,也可以将元素添加到委托票证中通过包含在验证器中。对于KDC发布的元素,这是可以避免的,因为这些元素KDC通过包含使用服务器密钥(用于加密票据或密钥的相同密钥源自该键)。发布的KDC中封装的元素如果此“签名”,则应用程序服务器必须忽略元素不存在。此外,封装在此元素中的元素由KDC解释,并用作基础根据在中包含新签名元素的策略衍生工具票据,但不会复制到衍生工具直接购票。如果直接复制到衍生票据如果KDC不知道该元素,则签名将不会对于应用程序票证元素是正确的,并且该字段将是被应用程序服务器忽略。可以安全地忽略此元素及其封装的元素由未实现的应用程序、应用程序服务器和KDC此元素。ad-KDC-ISSUED的广告类型为(4)。5.2.6.3.与或AD-AND-OR::=序列{条件计数[0]Int32,元素[1]授权数据}Neuman等人,标准跟踪[第59页]


副本请求4120Kerberos V5 2005年7月当限制性AD元素封装在and或中时元素,当且仅当条件中指定的最小封装元素数-计数满足要求。因此,此元素可用于通过将condition-count字段设置为,实现“or”操作1,它可以通过设置条件指定“and”操作计数嵌入元素的数量。应用程序服务器不实现此元素必须拒绝包含此类型的授权数据元素。ad-AND-OR的广告类型为(5)。5.2.6.4.KDC强制AD-MANDATORY-FOR-KDC::=授权数据封装在mandatory-for-kdc元素中的AD元素是由KDC解释。KDC不了解嵌入到强制for-kdc元素中的元素必须拒绝请求。ad-MANDATORY-for-KDC的广告类型为(8)。5.2.7.PA-数据在历史上,PA-DATA被称为“预身份验证数据”,这意味着它们用于增强初始身份验证与KDC合作。从那时起,它们也被用作键入用于扩展与KDC的协议交换的孔。PA-DATA::=序列{--注意:第一个标记是[1],而不是[0]padata类型[1]Int32,padata值[2]八位字节字符串--可能编码为AP-REQ}padata-类型指示padata-value元素的方式解释。padata-type的负值保留给未注册使用;非负值用于注册元素类型的解释。padata-值通常包含另一种类型的DER编码;padata类型字段标识此处编码的类型。Neuman等人,标准跟踪[第60页]


副本请求4120Kerberos V5 2005年7月padata-type名称padata-value的内容AP-req的1 pa-tgs-req DER编码pa-enc-timestamp的2 pa-enc-timstamp DER编码3 pa-pw-盐(非ASN.1编码)etype-info的11 pa-etype-info DER编码etype-info2的19 pa-etype-info2 DER编码此字段还可能包含某些Kerberos协议的扩展。例如,它可能是用于在任何返回响应。padata字段还可以包含帮助KDC或客户端选择生成或解密响应。这种形式的padata对于支持使用Kerberos的某些令牌卡。这个此类扩展的详细信息在单独的文档中指定。请参见[第92页]用于此字段的其他用途。5.2.7.1.PA-TGS-REQ公司如果要求额外门票(KRB_TGS_REQ),padata值将包含一个编码的AP-REQ。中的校验和验证器(必须防碰撞)将被计算KDC-REQ-BODY编码。5.2.7.2.加密的时间戳预身份验证有一些预身份验证类型可用于预-通过加密的时间戳对客户端进行身份验证。PA-ENC-TIMESTAMP::=加密数据--PA-ENC-TS-ENCPA-ENC-TS-ENC::=序列{patimestamp[0]KerberosTime--客户端时间--,pausec[1]微秒可选}Patimestamp包含客户端的时间,而pausec包含微秒,如果客户端不会生成更多每秒超过一个请求。密文(padata-value)包括PA-ENC-TS-ENC编码,使用客户机密加密密钥和密钥使用值为1。Neuman等人,标准跟踪[第61页]


副本请求4120Kerberos V5 2005年7月此预身份验证类型不存在于副本请求1510,但很多实现支持它。5.2.7.3.PA-PW-盐此预身份验证类型的padata-value包含salt用于客户端使用的字符串对键以获取的密钥解密AS-REP消息的加密部分。不幸的是,由于历史原因,要使用的字符集未指定而且可能是特定于本地的。此预身份验证类型不存在于副本请求1510,但很多实现支持它。在任何情况下字符串到键算法的salt不是默认值。在这个微不足道的例子中,零长度的salt字符串非常常见对于已将其主数据库从Kerberos版本4。发出KRB-ERROR消息时,KDC不应发送PA-PW-SALT这需要额外的预身份验证。实施说明:某些KDC实现在发出请求额外预身份验证的KRB-ERROR消息。因此,客户应该忽略伴随请求附加预身份验证的KRB-ERROR消息。作为在中注明第3.1.3节,KDC不得发送PA-PW-SALT客户端的AS-REQ包括至少一个“较新”的etype。5.2.7.4.PA类型信息ETYPE-INFO预身份验证类型由KDC在KRB-ERROR表示需要额外的预身份验证。它通常用于通知客户端要为加密加密的时间戳以发送PA-ENC-TIMESTAMP预身份验证值。也可以通过AS-REP向客户提供有关要使用哪种关键盐的信息用于客户端用于获取密钥的字符串对密钥用于解密AS-REP加密部分。ETYPE-INFO-ENTRY::=序列{etype[0]Int32,salt[1]八位字节字符串可选}ETYPE-INFO::=ETYPE-信息输入序列与PA-PW-salt盐一样,盐也完全未指定与字符集有关,并且可能是特定于区域设置的。Neuman等人,标准跟踪[第62页]


副本请求4120Kerberos V5 2005年7月如果在AS-REP中发送ETYPE-INFO,则只有一个ETYPE-INFO-ENTRY,其ETYPE应与中enc部分的ETYPE相匹配AS-REP。此预身份验证类型不存在于射频1510,但很多支持pre加密时间戳的实现-身份验证还需要支持ETYPE-INFO。如中所述第3.1.3节,当客户端AS-REQ包括至少一个“较新”的etype。5.2.7.5.PA-类型-信息ETYPE-INFO2预身份验证类型由KDC在KRB-ERROR表示需要额外的预身份验证。它通常用于通知客户端要为加密加密的时间戳以发送PA-ENC-TIMESTAMP预身份验证值。也可以通过AS-REP向客户提供有关要使用哪种关键盐的信息用于客户端用于获取密钥的字符串对密钥用于解密AS-REP加密部分。ETYPE-INFO2-ENTRY::=序列{etype[0]Int32,salt[1]KerberosString可选,s2kparams[2]八位字节字符串可选}ETYPE-INFO2::=ETYPE-INFO2-ENTRY的序列大小(1..MAX)盐的类型是KerberosString,但现有的安装可能在salt字符串中存储特定于locale的字符,以及实现者可以选择处理它们。s2kparams的解释是在密码系统中指定的与etype关联的描述。每个密码系统都有一个如果该元素为ETYPE-INFO2-ENTRY编码中省略。如果在AS-REP中发送ETYPE-INFO2,则只有一个ETYPE-INFO2-ENTRY,其ETYPE应与AS-REP。“提示”预身份验证数据的首选顺序影响客户端密钥选择的是:ETYPE-INFO2,其次是ETYPE-INFO,然后是PW-SALT。如中所述第3.1.3节,KDC不得发送ETYPE-INFO或PW-SALT,当客户端的AS-REQ包括至少一个“较新”etype。Neuman等人,标准跟踪[第63页]


射频4120Kerberos V5 2005年7月ETYPE-INFO2预身份验证类型不存在于副本请求15105.2.8.Kerberos标志对于几种消息类型,使用KerberosFlags。Kerberos标志::=位字符串(大小(最大32))--应发送最少位数,--但不少于32兼容性说明:以下段落描述了对这个副本请求1510将导致如果实现严格遵循符合ASN.1 DER和副本请求1510ASN.1位字符串有多种用途。位的最简单用法字符串包含一个位向量,没有特定的含义连接到单个位。这个比特向量不一定八位长的倍数。位字符串在Kerberos中的使用作为一个紧凑的布尔向量,其中每个元素都有一个不同的意义带来了一些问题。紧凑的自然表示法布尔向量是ASN.1“NamedBit”表示法,DER要求使用“NamedBit”表示法的位字符串编码排除任何尾随零位。这种截断很容易忽略,尤其是给定自然选择存储的C语言实现布尔向量作为32位整数。例如,如果KDCOptions的符号包括“NamedBit”表示法,如射频1510,KDCOptions值为encoded只有“可转发”(位号1)位集,即DER编码必须只包含两个位:第一个保留位(“保留”,位号零,值零)和单值位(位第一)表示“可转发”。大多数现有的Kerberos实现都无条件发送32对用作布尔向量的位字符串进行编码时,线路上的位。此行为违反了中用于标志值的ASN.1语法无线电频率控制
   1510,但它发生在广泛安装的基础上正在修改描述以适应它。因此,本文档删除了个人信息,将其降级为评论。上的大小约束KerberosFlags类型要求在尽管宽松的实现可能会选择接受更少的32位,并将丢失的位设为零。Neuman等人,标准跟踪[第64页]


副本请求4120Kerberos V5 2005年7月目前,没有使用KerberosFlags指定超过32位的值标记,尽管本文档的未来版本可能会这样做。何时在KerberosFlags值中传输超过32位,本文件的未来修订可能会规定对编号最高的位进行编码所需的最小位数-应发送有值的位。这与DER有点类似用“NamedBit”声明的位字符串的编码符号。5.2.9.与加密系统相关的类型许多Kerberos协议消息包含EncryptedData作为用于任意加密数据的容器,通常另一数据类型的编码。EncryptedData辅助中的字段接收方选择用于解密所附内容的密钥数据。加密数据::=序列{etype[0]Int32--加密类型--,kvno[1]UInt32可选,cipher[2]八位字符串--密文}etype类型此字段标识使用的加密算法对密码进行加密。kv编号此字段包含数据所在键的版本号已加密。它只存在于长时间加密的消息中持久密钥,例如主体的密钥。密码此字段包含编码为OCTET的加密文本字符串。(请注意[RFC3961号文件]还必须包含完整性保护,因此无需额外需要校验和。)EncryptionKey类型是使用加密密钥的方式用于加密的。加密密钥::=序列{keytype[0]Int32--实际加密类型--,keyvalue[1]八位字节字符串}Neuman等人,标准跟踪[第65页]


副本请求4120Kerberos V5 2005年7月密钥类型此字段指定加密密钥的加密类型它位于keyvalue字段中。虽然它的名字是“keytype”,它实际上指定了一种加密类型。以前,执行不同加密的多个加密系统,但能够使用具有相同特性的钥匙允许共享指定的编号以指定类型密钥;此用法现已弃用。键值此字段包含密钥本身,编码为八位字符串。包含待验证明文数据的消息通常通过使用类型为Checksum的成员来执行此操作。校验和的大多数实例使用键控哈希,但会注意到异常。校验和::=序列{cksumtype[0]Int32,校验和[1]八位字节字符串}cksumtype型此字段指示用于生成随附校验和。校验和此字段包含校验和本身,编码为八位字节字符串。请参见第4节有关加密和Kerberos中的校验和。5.3.门票本节介绍的格式和加密参数票证和验证器。当票证或验证器包含在协议消息中,它被视为不透明对象。A类ticket是一个记录,用于帮助客户端对服务进行身份验证。A类票据包含以下信息:票证::=[应用程序1]序列{tkt-vno[0]整数(5),领域[1]领域,sname[2]主体名称,enc-part[3]加密数据--EncryptedTicketPart}--票据的加密部分Neuman等人,标准跟踪[第66页]


副本请求4120Kerberos V5 2005年7月EncTicketPart::=[应用程序3]序列{标志[0]TicketFlags,密钥[1]加密密钥,crealm[2]王国,cname[3]负责人姓名,传输[4]传输编码,authtime[5]KerberosTime,starttime[6]KerberosTime可选,endtime[7]KerberosTime,renew-till[8]KerberosTime可选,caddr[9]主机地址可选,authorization-data[10]授权数据可选}--编码的Transited字段传输编码::=序列{tr-type[0]Int32--必须注册--,目录[1]八位字节字符串}TicketFlags::=KerberosFlags--保留(0),--可转发(1),--转发(2),--可代理(3),--代理(4),--可以在日期(5)之后,--后注日期(6),--无效(7),--可再生能源(8),--首字母(9),--预授权(10),--硬件验证(11),--以下是1510年以来的新内容--过渡政策检查(12),--ok-as-delegate(13)tkt-vno公司此字段指定票据格式的版本号。本文档描述了版本号5。领域此字段指定发出票证的领域。它还可以用于标识服务器主体的领域部分标识符。因为Kerberos服务器只能为服务器在其领域内,两者总是相同的。Neuman等人,标准跟踪[第67页]


副本请求4120Kerberos V5 2005年7月斯内姆此字段指定服务器的标识,包括标识特定服务的实例。电子控制部分此字段保存EncTicketPart的加密编码顺序。它在Kerberos和端服务器(服务器的密钥),使用密钥使用值2旗帜此字段指示使用了哪些选项或出票时提出要求。旗帜的含义具体如下:位名称描述0保留用于将来扩展此字段。1可转发forwardable标志通常仅由TGS解释,可以忽略通过终端服务器。当设置时,此标志告知可以使用的票证授予服务器使用不同的网络发布新的TGT根据出示的票证的地址。2转发设置后,此标志表示票已被转发或基于涉及的身份验证发布转发TGT。3可代理proxiable标志通常仅由TGS解释,可以忽略通过终端服务器。PROXIABLE标志具有解释与FORWARDABLE标志,PROXIABLE除外flag告诉票证授予服务器只有非TGT可以发行不同的网络地址。4代理设置后,此标志表示票证是代理。5月5日后发may-postdate标志通常仅由TGS解释,可以忽略通过终端服务器。此标志表示Neuman等人,标准跟踪[第68页]


副本请求4120Kerberos V5 2005年7月发布日期的票证授予服务器票证可根据本TGT签发。6 postdated此标志表示此票据已已延期。终端服务可以检查authtime字段以查看原始发生身份验证。7无效此标志表示票据无效,必须由KDC验证使用前。应用服务器必须拒绝设置了此标志的票。8可再生renewable标志通常仅由TGS解释,通常可以被终端服务器忽略(一些特别是小心的服务器可能不允许更新门票)。可续签车票可用于获取到期日为的补票稍后的日期。9首字母此标志表示此票据使用AS协议发布,但未发布基于TGT。10预授权此标志指示在初始身份验证,客户端已通过身份验证在签发罚单之前由KDC批准。这个预身份验证方法的优点是未注明,但KDC可接受。11 hw-authent此标志表示协议用于所需的初始身份验证预期拥有的硬件的使用仅由指定的客户端执行。硬件身份验证方法由KDC选择而该方法的优点不是表明。12 transited-此标志表示政策检查了领域已检查了传输字段针对可信的领域定义策略证明人。如果此标志被重置(0),则应用程序服务器必须检查过渡场本身,如果无法做到因此,它必须拒绝身份验证。如果设置标志(1),然后应用程序服务器可能会跳过自己对Neuman等人,标准跟踪[第69页]


副本请求4120Kerberos V5 2005年7月中转场,取决于验证由KDC执行。根据其选择应用程序服务器可能仍然应用它自己的基于单独的策略进行验证验收。此标志是自副本请求151013 ok-as-delegate此标志表示服务器(而不是客户端)中指定的由领域策略决定为合适的授权接受者。客户可以使用此标志的存在来帮助它决定是否委派凭据(授予代理或转发TGT)此服务器。客户可以随意忽略此标志的值。设置此选项时标志,管理员应考虑服务器的安全性和位置服务将运行的位置,以及服务是否需要使用委托凭据。此标志是自副本请求151014-31保留供将来使用。钥匙该字段存在于票据和KDC响应中,并被使用将会话密钥从Kerberos传递到应用程序服务器和客户。奶油此字段包含客户端所在领域的名称注册并进行初始身份验证。中国名称此字段包含客户端主体的名称部分标识符。过渡的此字段列出参与的Kerberos领域的名称验证向其颁发此票证的用户。不指定域传输的顺序。请参见第3.3.3.2节有关此字段如何对穿越了各个领域。当CA的名称要嵌入到转换字段(对于Neuman等人,标准跟踪[第70页]


副本请求4120Kerberos V5 2005年7月协议),CA的X.500名称应映射到项目中在过渡场中使用定义的映射RFC 2253号文件授权时间此字段指示初始身份验证的时间指定的负责人。这是原始票的发行时间这张罚单的依据。它包含在前往向终端服务提供附加信息,并提供实施“热门名单”的必要信息KDC的服务。特别偏执的终端服务可以拒绝接受首张身份验证在过去发生得“太远”了。此字段也是作为KDC响应的一部分返回。当它是作为初始身份验证响应的一部分返回(KRB_AS_REP),这是Kerberos服务器上的当前时间。不建议使用此时间值来调整工作站的时钟,因为工作站无法可靠地确定这样的KRB_AS_REP实际上来自及时。开始时间票证中的此字段指定票证之后的时间有效。此字段与结束时间一起指定这张票。如果票据中没有starttime字段,则应在其位置使用authtime字段来确定车票的有效期。结束时间此字段包含票据到期后的时间已兑现(到期时间)。请注意,个别服务可能对车票的有效期设定自己的限制,可能会拒绝尚未过期的票。因此,这真的是一个票证到期时间的上限。更新时间此字段仅存在于具有RENEWABLE标志的票据中在flags字段中设置。它指示可能的最大结束时间包括在续约中。它可以被认为是绝对的机票的到期时间,包括所有续订。球童票据中的此字段包含零(如果省略)或更多(如果存在)主机地址。这些是地址票可以使用。如果没有地址,票可以是从任何位置使用。KDC决定发布或终端服务器接受无地址票证是一个策略决定并留给Kerberos和最终服务管理员;他们可拒绝签发或接受此类车票。因为宽Neuman等人,标准跟踪[第71页]


射频4120Kerberos V5 2005年7月部署网络地址转换,建议政策允许签发和接受此类门票。票证中包含了网络地址,以便更难攻击者使用偷来的凭据。因为会话密钥是没有以明文形式通过网络发送,凭据不能仅仅通过听网络窃取;攻击者必须获得访问会话密钥(可能通过操作系统安全漏洞或粗心用户的无人参与会话)使用偷来的票。请注意,从中接收连接的网络地址无法可靠确定。即使可能,攻击者危及客户工作站的人可以使用来自那里的凭据。仅包括网络地址使攻击者行走更加困难,而不是不可能用偷来的凭据注销,然后从“保险箱”使用位置。授权数据authorization-data字段用于传递授权数据从代表其签发罚单的委托人处应用程序服务。如果不包括授权数据字段将被省略。经验表明这个字段令人困惑,更好的名称应该是“限制”。不幸的是,无法更改此时命名。此字段包含对在使用票据进行身份验证的基础。任何情况下都可能发生拥有凭证的负责人将条目添加到授权数据字段,因为这些条目进一步限制了可以用票完成。可以通过以下方式添加指定获得新票据时的附加条目在TGS交换期间,或在链接期间添加使用的授权数据字段的委派验证器。因为条目可以由凭据,除非条目由封装在KDC-issued元素中,不允许的授权数据字段中存在条目票证,以扩大使用门票。此字段中的数据可能特定于终端服务;这个字段将包含特定于服务的对象的名称对这些对象的权利。描述了此字段的格式Neuman等人,标准跟踪[第72页]


副本请求4120Kerberos V5 2005年7月在里面第5.2.6节。虽然Kerberos与子字段内容的格式,它确实携带类型信息(广告类型)。通过使用authorization_data字段,主体能够发布针对特定目的有效的代理。例如,希望打印文件的客户端可以获得文件服务器代理传递给打印服务器。通过指定文件名在authorizationdata字段中,文件服务器知道打印服务器只能在访问要打印的特定文件。提供授权或认证组的单独服务可以使用authorization-data字段构建成员身份。在这种情况下,授予授权的实体(不是授权的实体实体)可以自己的名义获得票证(例如,票证是以特权服务器的名义发布),此实体添加对自身权限的限制,并将受限制的通过代理授权给客户。然后客户会将此授权凭据呈现给应用程序服务器独立于身份验证交换。或者,这样授权凭证可以嵌入票据中当授权为使用KDC发布的授权数据进行单独身份验证元件(见5.2.6.2)。类似地,如果指定代理并将主机地址留空,则生成票证会话密钥可以被视为一种功能。请参见[Neu93号机组]的这个领域的一些建议用途。authorization-data字段是可选的,不必是包括在门票中。5.4AS和TGS交换机规范本节指定了客户端和Kerberos服务器之间的交换。的格式可能的错误消息出现在第5.9.1节5.4.1.KRB_KDC_REQ定义KRB_KDC_REQ消息没有自己的应用程序标签号。相反,它被并入KRB_AS_REQ或KRB_TGS_REQ,每个都有一个应用程序标记,具体取决于请求是第一张票或附加票。在任何一种情况下在这种情况下,消息从客户端发送到KDC以请求服务的凭据。Neuman等人,标准跟踪[第73页]


副本请求4120Kerberos V5 2005年7月消息字段如下:AS-REQ::=[应用程序10]KDC-REQTGS-REQ::=[应用程序12]KDC-REQKDC-REQ::=序列{--注意:第一个标记是[1],而不是[0]pvno[1]整数(5),消息类型[2]整数(10--AS-|12--TGS-),padata[3]PA-DATA序列可选--注意:不为空--,需求体[4]KDC-req-body}KDC-REQ-BODY::=序列{kdc选项[0]kdc选项,cname[1]主体名称可选--仅用于AS-REQ--,领域[2]领域--服务器的领域--客户也在AS-REQ中--,sname[3]PrincipalName可选,来自[4]KerberosTime可选,直到[5]KerberosTime,rtime[6]KerberosTime可选,现时[7]UInt32,etype[8]Int32序列--加密类型--按优先顺序--,地址[9]主机地址可选,enc-authorization-data[10]加密数据可选--授权数据--,附加标签[11]票证顺序可选--注:不为空}KDCOptions::=KerberosFlags--保留(0),--可转发(1),--转发(2),--可代理(3),--代理(4),--allow-postdate(5),--后注日期(6),--未使用7(7),--可再生能源(8),--未使用9(9),--未使用10(10),Neuman等人,标准跟踪[第74页]


副本请求4120Kerberos V5 2005年7月--opt-hardware-auth(11),--未使用12(12),--未使用13(13),--15被保留用于规范化--未使用15(15),--1510年有26个未使用--禁用转换检查(26),----可再生ok(27),--enc-tkt-in-skey(28),--更新(30),--验证(31)此消息中的字段如下:聚乙烯醇编号此字段包含在每条消息中,并指定协议版本号。本文件规定了协议版本5。消息类型此字段指示协议消息的类型。它会的几乎总是与关联的应用程序标识符相同带有消息。包含它是为了使标识符更加易于应用程序访问。对于KDC-REQ消息,此类型为KRB_AS_REQ或KRB_TGS_REQ。帕达塔包含预身份验证数据。额外门票申请(KRB_TGS_REQ)必须包含PA-TGS-REQ的padata。padata(预身份验证数据)字段包含以下序列凭据之前可能需要的身份验证信息可以被发布或解密。需求体此字段是一个占位符,用于分隔其余字段的范围领域。如果要根据请求计算校验和,则为通过KDC-REQ-BODY序列的编码计算,该编码为包含在req-body字段中。kdc选项该字段出现在KRB_AS_REQ和KRB_TGS_REQ请求中KDC并指示客户端希望在票据以及要修改的其他信息KDC的行为。在适当的情况下,期权的名称可以与该选项设置的标志相同。虽然在大多数情况下,选项字段中的位与在flags字段中,这是不保证的,因此它不是Neuman等人,标准跟踪[第75页]


副本请求4120Kerberos V5 2005年7月只需将options字段复制到flags字段即可。在选择之前,必须进行各种检查无论如何都很荣幸。kdc_options字段是一个位字段,其中所选选项由正在设置的位(1)和未选择的选项指示和正在重置的保留字段(0)。位的编码为在中指定第5.2节。更多信息中介绍了这些选项上述细节见第2节选项的含义如下跟随:位名称描述0保留用于未来扩展此字段。1 FORWARDABLE前进选项指示要签发的罚单设置其可转发标志。只能在初始设置请求,或在后续请求中如果它所依据的TGT是也可转发。2 FORWARDED FORWARD选项仅在对的请求中指定售票服务器,并且仅如果TGT提出请求已设置其FORWARDABLE位。这个选项指示这是一个请求转发。这个来自的主机的地址由此产生的票证是有效的包含在地址字段中请求的。3可编程可编程选项表示要签发的机票它的可代理标志集。可能只有根据初始请求设置,或如果TGT它所基于的也是可代理的。4代理代理选项表示是对代理的请求。这个只有当请求中的TGT具有其PROXIABLE位设置。的地址Neuman等人,标准跟踪[第76页]


副本请求4120Kerberos V5 2005年7月生成票证的主机是有效的,包含在地址请求的字段。5 ALLOW-POSTDATE ALLOW-POSTDATE选项表示要签发的罚单设置MAY-POSTDATE标志。只能在初始设置请求,或在后续请求中如果它所依据的TGT也已设置MAY-POSTDATE标志。6 POSTDATED POSTDATED选项表示这是一个延期的请求门票。此选项将仅如果它所在的TGT已设置MAY-POSTDATE标志。生成的票据还将具有它的INVALID标志集,以及该标志可以通过后续请求重置在中的启动时间之后发送到KDC票已经到了。7保留此选项目前未使用。8可再生能源可再生能源选项表明要签发的机票其RENEWABLE标志集。可能只有根据初始请求进行设置,或请求所在的TGT基础也是可再生的。如果这样选项,然后rtime请求中的字段包含所需的绝对过期时间这张票。9为PK-Cross保留。10保留供将来使用。11保留用于opt-hardware-auth。12-25保留供将来使用。26禁用传输-检查默认情况下,KDC将检查TGT对面前的地方政策将基于Neuman等人,标准跟踪[第77页]


副本请求4120Kerberos V5 2005年7月在TGT上。如果此标志设置在请求,检查转换字段被禁用。在没有执行此检查将TRANSITED-POLICY-CHECKED标志,向应用服务器指示过渡场必须是本地检查。KDC是鼓励但不要求荣誉DISABLE-TRANSITED-CHECK选项。此标志是自副本请求151027 RENEWABLE-OK RENEWABLE-OK选项指示一张可续期的票如果车票带有要求的寿命不能是提供,在这种情况下,可续期车票可以续签-直到等于请求的结束时间。续订字段的值可能仍受当地限制限制,或由单个主体或服务器。28 ENC-TKT-IN-SKEY此选项仅由售票服务。ENC公司-TKT-IN-SKEY选项表示最终服务器的票证是在会话密钥中加密提供额外的TGT。29保留供将来使用。30 RENEW此选项仅由售票服务。最新消息选项表示当前请求续订。这个提供的票证在其上的服务器的密钥它是有效的。此选项将仅如果车票renewed已设置其RENEWABLE标志如果续约时间字段尚未传递。到的机票被更新在padata中传递Neuman等人,标准跟踪[第78页]


射频4120Kerberos V5 2005年7月字段作为身份验证的一部分收割台。31验证此选项仅由售票服务。这个VALIDATE选项指示请求是验证后发日期门票。只有当出示的票是过期的,当前设置了INVALID标志,否则可在这次。票不能是在启动前验证。这个提交用于验证的票据是在服务器的密钥中加密对其有效并已通过在padata字段中作为身份验证标头。cname和sname这些字段与中描述的票据字段相同第5.3节。只有当ENC-TKT-IN-已指定SKEY选项。如果sname不存在,则为服务器取自传递的票证中的客户端名称作为额外的口袋。enc-授权-数据enc-authorization-data,如果存在(并且只能存在在TGS_REQ格式中),是所需的授权-在子会话密钥下加密的数据(如果存在)在Authenticator中,或者从TGT(Authenticator和TGT都来自KRB_TGS_REQ)。加密时使用的密钥使用值为5如果使用了子会话密钥,或者如果使用了会话密钥,则为4。领域此字段指定服务器主体的领域部分标识符。在AS交换中,这也是客户端的主要标识符。此字段包含在KRB_AS_REQ和KRB_TGS_REQ票据中请求将所请求的票证延期。为请求的票证指定所需的开始时间。如果这样字段被省略,则KDC应使用当前时间而不是。Neuman等人,标准跟踪[第79页]


副本请求4120Kerberos V5 2005年7月直到此字段包含客户端在中请求的到期日期票务申请。它不是可选的,但如果请求结束时间为“19700101000000Z”,请求的票据应具有KDC策略允许的最大结束时间。实施注意:这个特殊的时间戳对应于UNIX time_t值在大多数系统上为零。时间此字段是从客户端发送到的请求续订截止时间票据请求中的KDC。它是可选的。现时此字段是KDC请求和响应的一部分。它是用于保存客户端生成的随机数。如果来自KDC的加密响应中包含相同的数字提供证据证明回应是新鲜的被攻击者重放。不得重复使用。etype类型此字段指定要使用的所需加密算法在回应中。地址此字段包含在初始票据请求中可以选择包含在来自票证授予服务器。它指定了要求的票是有效的。通常包括客户端主机的地址。如果请求代理字段将包含其他地址。此字段的内容通常由KDC复制到结果票证。额外的口袋可以选择在向票证授予服务器。如果ENC-TKT-IN-SKEY选项指定,则附加票证中的会话密钥将为用于代替服务器的密钥来加密新票据。何时ENC-TKT-IN-SKEY选项用于用户对用户身份验证,此附加票据可能是由为当前KDC发布的本地域或跨域TGT由远程KDC创建领域。如果需要多个选项指定了附加票据,然后是附加票据按选项顺序指定的顺序使用位(请参阅上面的kdc-options)。Neuman等人,标准跟踪[第80页]


副本请求4120Kerberos V5 2005年7月应用标签号为十(10)或十二(12)取决于请求是针对初始票据(AS-REQ)还是获取附加票据(TGS-REQ)。可选字段(地址、授权数据和其他-票证)仅在执行操作时才包括在内在kdc-options字段中指定。注意,在KRB_TGS_REQ中,协议版本号出现两次出现两种不同的消息类型:KRB_TGS_REQ消息与身份验证标头(KRB_AP_REQ)一样,包含这些字段在padata字段中传递。5.4.2.KRB_KDC_REP定义KRB_KDC_REP消息格式用于KDC的回复初始(AS)请求或后续(TGS)请求。那里不是KRB_KDC_REP的消息类型。相反,类型为KRB_AS_REP或KRB_TGS_REP。用于加密密文的密钥回复的部分内容取决于消息类型。对于KRB_AS_REP密文在客户端的密钥中加密密钥版本号包含在加密数据。对于KRB_TGS_REP,密文在来自Authenticator的子会话密钥;如果没有密文在会话密钥中加密,该会话密钥来自请求。在这种情况下,在加密数据序列。KRB_KDC_REP消息包含以下字段:AS-REP::=[应用程序11]KDC-REPTGS-REP::=[应用程序13]KDC-REPKDC-REP::=序列{pvno[0]整数(5),消息类型[1]整数(11--AS-|13--TGS-),padata[2]PA-DATA序列可选--注:不为空--,crealm[3]领域,cname[4]负责人姓名,票[5]票,enc-part[6]加密数据--EncASRepPart或EncTGSRepPart,--视情况而定}EncASRepPart::=[APPLICATION 25]EncKDCRepPartNeuman等人,标准跟踪[第81页]


副本请求4120Kerberos V5 2005年7月EncTGSRepPart::=[APPLICATION 26]EncKDCRepPartEncKDCRepPart::=序列{密钥[0]加密密钥,last-req[1]上次重传,现时[2]UInt32,key-expiration[3]KerberosTime可选,flags[4]票证标志,authtime[5]KerberosTime,starttime[6]KerberosTime可选,endtime[7]KerberosTime,续订至[8]KerberosTime可选,srealm[9]领域,sname[10]主体名称,caddr[11]主机地址可选}LastReq::=序列序列{lr-类型[0]Int32,lr值[1]KerberosTime}pvno和消息类型这些字段如上所述第5.4.1节.msg类型为KRB_AS_REP或KRB_TGS_REP。帕达塔该字段的详细描述见第5.4.1节.一种可能它的用途是对要使用的备用“salt”字符串进行编码串对键算法。这种能力有助于缓解如果领域名称需要更改(例如,当公司被收购);在这种情况下,所有现有的密码派生条目KDC数据库中会标记为需要特殊盐字符串,直到下次更改密码。crealm、cname、srealm和sname这些字段与中描述的票据字段相同第5.3节新发行的门票,来自第5.3节电子控制部分此字段是密文和相关文本的占位符构成消息加密部分的信息。这个消息加密部分的描述如下此字段的外观。Neuman等人,标准跟踪[第82页]


副本请求4120Kerberos V5 2005年7月AS-REP中加密此字段的密钥使用值为3消息,使用客户端的长期密钥或选择的另一个密钥通过预认证机制。在TGS-REP消息中,键如果使用了TGS会话密钥,则usage值为8;如果使用TGS,则usation值为9使用了authenticator子键。兼容性说明:一些实现无条件地发送此字段中加密的EncTGSRepPart(应用程序标签号26)无论回复是AS-REP还是TGS-REP。在出于兼容性的考虑,实现者可以放松对解密的ENC-PART的标签号。钥匙此字段与中票证的描述相同第5.3节最新修订此字段由KDC返回,并指定委托人的最后一个请求。取决于信息是什么可用,这可能是最后一次请求TGT或最后一次基于TGT的请求是成功。它还可能覆盖某个领域的所有服务器,或者特定服务器。一些实现可能会显示这一点向用户提供信息,以帮助发现未经授权使用一个人的身份。它在精神上与上次登录时间相似登录分时系统时显示。lr-类型此字段指示以下lr-value字段的格式解释。负值表示信息仅适用于响应服务器。非负值属于该领域的所有服务器。如果lr-type字段为零(0),则不传输任何信息通过lr值子字段。如果lr-type的绝对值字段是一(1),则lr值子字段是最后一个时间TGT的初始请求。如果是两(2),则lr值子字段是最后一次初始请求的时间。如果是三(3),那么lr值子字段就是最新TGT的发布时间已使用。如果是四(4),则lr值子域是时间最后一次续约的日期。如果是五(5),则lr值子字段是最后一次请求(任何类型)的时间。如果是(6),那么lr-value子字段就是密码将过期。如果是(7),则lr值子域是当帐户将过期。Neuman等人,标准跟踪[第83页]


副本请求4120Kerberos V5 2005年7月lr值此字段包含上次请求的时间。时间必须根据随附lr的内容进行解释-类型子字段。现时该字段如上所述第5.4.1节钥匙呼气key-expiration字段是KDC和指定客户端密钥到期的时间。过期可能是密码老化或帐户导致的过期。如果存在,则应设置为用户的密钥过期和帐户过期。这个的使用字段已弃用,last-req字段应用于而是传达这些信息。此字段通常为左由于对TGS请求的响应是在会话密钥中加密,无需客户端信息从KDC数据库中检索。取决于应用程序客户端(通常是登录程序)采取适当的操作(例如通知用户)是否即将到期。标志、authtime、starttime、endtime、renew-till和caddr这些字段与加密的所附票据的一部分(参见第5.3节),前提是客户可能会验证它们是否符合预期的请求以帮助正确缓存票证。如果消息是的键入KRB_TGS_REP,则只有在请求请求代理或转发票证,或者如果用户是替换TGT中的地址子集。如果客户端请求的地址不存在或未使用,则票上的地址将与那些相同包含在TGT中。5.5.客户端/服务器(CS)消息规范本节指定用于客户端到应用服务器的身份验证。5.5.1.KRB_AP_REQ定义KRB_AP_REQ消息包含Kerberos协议版本号,消息类型KRB_AP_REQ,表示任何选项的选项字段以及票证和身份验证器本身。KRB_AP_REQ消息通常被称为“身份验证头”。Neuman等人,标准跟踪[第84页]


副本请求4120Kerberos V5 2005年7月AP-REQ::=[应用程序14]序列{pvno[0]整数(5),消息类型[1]整数(14),ap-options[2]APOptions,票[3]票,验证器[4]加密数据--验证器}AP选项::=KerberosFlags--保留(0),--使用会话密钥(1),--相互要求(2)pvno和消息类型这些字段如上所述第5.4.1节.msg类型为KRB_AP_REQ公司。ap选项该字段出现在申请请求(KRB_AP_REQ)中,并且影响处理请求的方式。这是一个比特场,其中所选选项由正在设置的位(1)指示,以及重置(0)时未选择的选项和保留的字段。位的编码在中指定第5.2节.  The选项的含义如下:位名称描述0保留用于将来扩展此字段。1 use-session-key use-session-key选项表示客户提交给的票据服务器在来自的会话密钥中加密服务器的TGT。当此选项不可用时指定,票据在服务器的密钥。2相互需要mutual-required选项告诉服务器客户要求双方身份验证,并且它必须响应带有KRB_AP_REP消息。3-31保留供将来使用。此字段是向服务器验证客户端的票证。Neuman等人,标准跟踪[第85页]


副本请求4120Kerberos V5 2005年7月验证器它包含加密的身份验证器,其中包括客户端对子键的选择。加密的验证器包含在AP-REQ中;它证明发送到发送方最近知道加密的服务器键入随附的票据,以帮助服务器检测重播。它还有助于选择“真正的会话密钥”与一起使用特定会议。下面的DER编码是在票证的会话密钥中加密,密钥使用值为11在正常应用程序交换中,或当用作PA-TGS-REQ时为7TGS-REQ交换的PA-DATA字段(参见第5.4.1节):--未加密的身份验证器身份验证器::=[应用程序2]序列{authenticator-vno[0]整数(5),crealm[1]境界,cname[2]负责人姓名,cksum[3]校验和可选,cusec[4]微秒,ctime[5]KerberosTime,subkey[6]加密密钥可选,序列号[7]UInt32可选,authorization-data[8]授权数据可选}验证器-编号此字段指定格式的版本号验证器。本文件规定了版本5。crealm和cname这些字段与中描述的票据字段相同第5.3节校验和此字段包含应用程序数据的校验和KRB_AP_REQ附带,使用密钥使用值10计算在正常应用程序交换中,或在TGS-REQ中使用时为6PA-TGS-REQ AP-DATA字段。库塞克此字段包含客户端的微秒部分时间戳。其值(加密前)范围为0到999999。它经常与ctime一起出现。使用了这两个字段一起指定一个合理准确的时间戳。连续时间此字段包含客户端主机上的当前时间。Neuman等人,标准跟踪[第86页]


射频4120Kerberos V5 2005年7月子项此字段包含客户端对加密密钥的选择用于保护此特定应用程序会话。除非应用程序另行指定,如果省略此字段,则将使用票证中的会话密钥。序列号此可选字段包括要执行的初始序列号序列号时由KRB_PRIV或KRB_SAFE消息使用用于检测回放。(也可以通过应用程序使用特定消息。)当包含在验证器中时,此字段指定来自客户端到服务器。当包含在AP-REP消息中时初始序列号是从服务器发送到客户。当在KRB_PRIV或KRB_SAFE消息中使用时,它是每个消息发送后递增一。序列号落在0到2^32-1的范围内,然后换行到零值2^32-1。用于支持回放检测的序列号充分地说,它们应该是不重复的,即使是跨连接边界。初始序列号应该是随机的均匀分布于可能序列的整个空间数字,这样攻击者就无法猜到它和连续的序列号不重复其他序列。如果超过2^32条消息在一系列KRB_PRIV或KRB_SAFE消息中生成,重新键入应在序列号与相同的加密密钥。实施说明:从历史上看,一些实施会传输序列号的有符号双补数。为了兼容,实现可以接受等效负数,其中正数大于应为2^31-1。实现说明:如前所述,一些实现省略了当其值为零时的可选序列号。在以下情况下,实现可以接受省略的序列号期望值为零,并且不应传输初始序列号为零的验证器。授权数据此字段与中对票据的描述相同第5.3节它是可选的,只有在附加限制时才会出现除了携带的车票外,还应使用车票票本身。Neuman等人,标准跟踪[第87页]


副本请求4120Kerberos V5 2005年7月


5.5.2.KRB_AP_REP定义KRB_AP_REP消息包含Kerberos协议版本号,消息类型和加密的时间戳。消息已发送响应申请请求(KRB_AP_REQ)在ap-options中选择了相互身份验证选项字段。AP-REP::=[应用程序15]序列{pvno[0]整数(5),消息类型[1]整数(15),enc-part[2]加密数据--EncAPRepPart}EncAPRepPart::=[APPLICATION 27]序列{ctime[0]KerberosTime,cusec[1]微秒,subkey[2]加密密钥可选,序列号[3]UInt32可选}编码的EncAPRepPart在的共享会话密钥中加密这张票。可选子键字段可以在应用程序安排的协商以选择每个关联会话键。pvno和消息类型这些字段如上所述第5.4.1节.msg类型为KRB_AP_REP公司。电子控制部分该字段如上所述第5.4.2节。它是经过计算的密钥使用值为12。连续时间此字段包含客户端主机上的当前时间。库塞克此字段包含客户端的微秒部分时间戳。子项此字段包含用于保护这个特定的应用程序会话。请参见第3.2.6节对于有关如何使用此字段协商密钥的详细信息。除非应用程序另行指定,如果省略此字段,则来自身份验证器的子会话密钥,或者如果后者也是如果不使用,将使用票据中的会话密钥。Neuman等人,标准跟踪[第88页]


副本请求4120Kerberos V5 2005年7月序列号该字段如上所述第5.3.2节5.5.3.错误消息回复如果在处理应用程序请求时发生错误将发送KRB_ERROR消息作为响应。请参见第5.9.1节对于错误消息的格式。cname和crealm字段可能是如果服务器无法根据相应的KRB_AP_REQ消息。如果身份验证器是ctime和cusec字段将包含来自它。5.6.KRB_SAFE消息规范本节指定可由应用程序的任意一方(客户端或服务器)发送篡改-向其对等方发送证明消息。它假定会话密钥具有之前交换过(例如,通过使用KRB_AP_REQ/KRB_AP _REP消息)。5.6.1.KRB_SAFE定义KRB_SAFE消息包含用户数据以及防碰撞用通过子密钥协商的最后一个加密密钥键入校验和,如果未发生协商,则使用会话密钥。信息字段如下:KRB-SAFE::=[应用程序20]序列{pvno[0]整数(5),消息类型[1]整数(20),保险箱[2]KRB-safe-body,校验和[3]}KRB-SAFE-BODY::=序列{user-data[0]OCTET字符串,时间戳[1]KerberosTime可选,usec[2]微秒可选,序列号[3]UInt32可选,s地址[4]主机地址,r地址[5]主机地址可选}pvno和消息类型这些字段如上所述第5.4.1节.msg类型为KRB_安全。Neuman等人,标准跟踪[第89页]


副本请求4120Kerberos V5 2005年7月保险箱此字段是KRB-SAFE消息正文的占位符。校验和此字段包含计算的应用程序数据的校验和密钥使用值为15。校验和通过KRB-SAFE编码计算顺序。首先,将cksum设置为零类型,长度为零值,校验和根据KRB的编码计算-SAFE序列。然后将校验和设置为计算。最后,再次对KRB-SAFE序列进行编码。此方法虽然不同于副本请求
      1510,符合现有实践。用户数据此字段是KRB_SAFE和KRB_PRIV消息的一部分,并且包含从中传递的特定于应用程序的数据发件人到收件人。时间戳此字段是KRB_SAFE和KRB_PRIV消息的一部分。内容是发送方已知的当前时间消息。通过检查时间戳,消息的接收者能够确保它是最近生成的,而不是重播。通用电气公司此字段是KRB_SAFE和KRB_PRIV标题的一部分。包含时间戳的微秒部分。序列号该字段如上所述第5.3.2节s地址发件人地址。此字段指定发件人使用的地址消息。r地址此字段指定收件人使用的地址消息。对于某些用途(如广播),可以省略协议),但接收方可以任意拒绝信息。此字段和s-address可用于帮助检测错误或恶意的消息发送给错误的收件人。Neuman等人,标准跟踪[第90页]


副本请求4120Kerberos V5 2005年7月


5.7.KRB_PRIV消息规范本节指定可由向应用程序的任意一侧(客户端或服务器)发送消息它的同行安全且私密。它假定会话密钥具有先前已交换(例如,通过使用KRB_AP_REQ/KRB_AP _REP消息)。5.7.1.KRB_PRIV定义KRB_PRIV消息包含会话密钥中加密的用户数据。消息字段如下:KRB-PRIV::=【应用程序21】序列{pvno[0]整数(5),消息类型[1]整数(21),--注意:没有[2]标签enc-part[3]加密数据--EncKrbPrivPart}EncKrbPrivPart::=[应用程序28]序列{user-data[0]OCTET字符串,时间戳[1]KerberosTime可选,usec[2]微秒可选,序列号[3]UInt32可选,s-address[4]主机地址--发件人的地址--,r-address[5]主机地址可选--收件人的地址}pvno和消息类型这些字段如上所述第5.4.1节.msg类型为KRB_PRIV公司。电子控制部分此字段保存EncKrbPrivPart序列的编码在会话密钥下加密,密钥使用值为13。此加密编码用于KRB-PRIV消息。用户数据、时间戳、usec、s地址和r地址这些字段如上所述第5.6.1节序列号该字段如上所述第5.3.2节Neuman等人,标准跟踪[第91页]


副本请求4120Kerberos V5 2005年7月


5.8.KRB_CRED消息规范本节指定可用于将Kerberos凭据从一个主体发送到另一个主体。它是本文旨在鼓励转发票据或向提供代理时的应用程序从属服务器。它假定会话密钥已经可能通过使用KRB_AP_REQ/KRB_AP _REP消息进行交换。5.8.1.KRB_CRED定义KRB_CRED消息包含要发送的票证序列,以及使用票证所需的信息,包括来自每个。使用票据所需的信息在加密密钥之前与KRB_CRED消息。消息字段如下:KRB-CRED::=【应用程序22】序列{pvno[0]整数(5),消息类型[1]整数(22),票[2]票序列,enc-part[3]加密数据--EncKrbCredPart}EncKrbCredPart::=[应用程序29]序列{ticket-info[0]KrbCredInfo序列,nonce[1]UInt32可选,timestamp[2]KerberosTime可选,usec[3]微秒可选,s-address[4]主机地址可选,r地址[5]主机地址可选}KrbCredInfo::=序列{密钥[0]加密密钥,前置胶片[1]领域可选,pname[2]PrincipalName可选,flags[3]TicketFlags可选,authtime[4]KerberosTime可选,starttime[5]KerberosTime可选,endtime[6]KerberosTime可选,续订至[7]KerberosTime可选,srealm[8]领域可选,sname[9]PrincipalName可选,caddr[10]主机地址可选}Neuman等人,标准跟踪[第92页]


副本请求4120Kerberos V5 2005年7月pvno和消息类型这些字段如上所述第5.4.1节.msg类型为克雷德。门票这些是从KDC获得的专用票由预定收件人提供。连续的票与来自KRB的enc-part的相应KrbCredInfo序列-CRED消息。电子控制部分此字段保存EncKrbCredPart序列的编码在发送方和预期收件人,密钥使用值为14。这个加密的编码用于KRB-CRED消息的enc-part字段。实施说明:某些应用程序的实施,大多数特别是Kerberos GSS-API机制的某些实现,不要单独加密的EncKrbCredPart的内容发送KRB-CRED消息。如果是GSS-API机制,这不是安全漏洞,因为整个KRB-CRED消息本身嵌入加密消息。现时如果可行,应用程序可能需要包含nonce由邮件收件人生成。如果相同的值是作为nonce包含在消息中,它提供了以下证据消息是最新的,攻击者尚未重播。A类不得重复使用nonce。时间戳和usec这些字段指定KRB-CRED消息的时间生成。时间用于确保消息新鲜。s地址和r地址这些字段如上所述第5.6.节。它们被使用可选地为KRB-CRED消息。钥匙此字段存在于KRB传递的相应票证中-CRED消息,用于从发送方传递会话密钥发送给预期接收人。字段的编码如所述第5.2.9节Neuman等人标准轨道[第93页]


副本请求4120Kerberos V5 2005年7月以下字段是可选的。如果存在,可以与远程票证文件中的凭据关联。如果离开则假定凭证的接收者已经知道他们的价值观。prealm和pname委托主体标识的名称和领域。标志、身份验证时间、开始时间、结束时间、续订时间、运行状况、快照,和caddr这些字段包含中相应字段的值在售票处找到的票。字段说明与KDC-REP消息中的描述相同。5.9.错误消息规范本节指定KRB_ERROR消息的格式。这个消息中包含的字段旨在返回有关错误的尽可能多的信息。不希望所有字段所需的信息将对所有人可用错误类型。如果没有适当的信息编写消息时,将保留相应的字段消息之外。注意,由于KRB_ ERROR消息不是完整性保护的,入侵者很可能合成或修改它特别是,这意味着客户端不应在此消息用于安全关键目的,例如设置系统时钟或生成新的验证器。消息可以是然而,对于建议用户某些故障的原因很有用。5.9.1.KRB_ERROR定义KRB_ERROR消息由以下字段组成:KRB-错误::=[APPLICATION 30]序列{pvno[0]整数(5),消息类型[1]整数(30),ctime[2]KerberosTime可选,cusec[3]微秒可选,stime[4]科尔伯罗斯时间,susec[5]微秒,错误代码[6]Int32,crealm[7]领域可选,cname[8]PrincipalName可选,领域[9]领域--服务领域--,sname[10]PrincipalName--服务名称--,e-text[11]KerberosString可选,Neuman等人,标准跟踪[第94页]


副本请求4120Kerberos V5 2005年7月电子数据[12]八位字节字符串可选}pvno和消息类型这些字段如上所述第5.4.1节.msg类型为KRB_错误。ctime和cusec这些字段如上所述第5.5.2节.如果值因为生成错误的实体知道这些字段(如如果响应生成KRB-ERROR,则为失败的身份验证服务请求),则应填充在KRB-ERROR中。如果这些值不可用,则这些字段可以省略。刺激此字段包含服务器上的当前时间。它是类型KerberosTime。苏塞克此字段包含服务器的微秒部分时间戳。其值范围为0到999999。它出现了和斯提姆在一起。这两个字段一起用于指定相当准确的时间戳。错误代码此字段包含Kerberos或请求失败时的服务器。解释此字段的值请参阅中的错误代码列表第7.5.9节。实现是鼓励在展览中提供国家语言支持共条错误消息。crealm和cname这些字段如上所述第5.3节.当实体生成错误时知道这些值,应该填充这些值在KRB-ERROR中。如果值未知,则crealm和cname字段应省略。领域与蜗牛这些字段如上所述第5.3节电子文本此字段包含有助于解释错误代码的附加文本与失败的请求关联(例如,它可能包括一个未知的主要名称)。Neuman等人标准轨道[第95页]


副本请求4120Kerberos V5 2005年7月电子数据此字段包含有关错误的附加数据,供应用程序帮助它从错误中恢复或处理错误。如果错误代码为KDC_ERR_PREAUTH_REQUIRED,则电子数据字段将包含padata字段序列的编码,每个字段对应于可接受的预认证方法和可选地包含方法的数据:方法数据::=PA-DATA序列对于本文档中定义的错误代码KDC_ERR_PREAUTH_REQUIRED,电子数据字段的格式和内容是实现定义的。类似地,对于未来的错误代码电子数据字段的格式和内容由实现定义除非另有规定。是否由实施或在未来的文档中,电子数据字段可能采用TYPED的形式-数据:类型数据::=序列大小(1..最大值){数据类型[0]Int32,数据值[1]八位字节字符串可选}5.10.应用程序标记号下表列出了使用的应用程序类标记号本节中定义的各种数据类型。标签号类型名称注释0个未使用1票PDU2非PDU身份验证器3 EncTicketPart非PDU4-9个未使用10 AS-REQ PDU11 AS-REP PDU组件12 TGS-REQ PDU13 TGS-REP PDUNeuman等人,标准跟踪[第96页]


副本请求4120Kerberos V5 2005年7月4月14日-REQ PDU4月15日-REP PDU16 RESERVED16 TGT-REQ(用户对用户)17 RESERVED17 TGT-REP(用于用户对用户)18-19未使用20 KRB-SAFE PDU21 KRB-PRIV PDU22 KRB-CRED PDU23-24未使用25非PDU的EncASRepPart26非PDU的EncTGSRepPart27 EncApRepPart非PDU28非PDU的EncKrbPrivPart29 EncKrbCredPart非PDU30 KRB-PDU错误上面标记为“PDU”(协议数据单元)的ASN.1类型是只有ASN.1类型打算作为Kerberos的顶级类型协议,和是中唯一可用作元素的类型另一个使用Kerberos的协议。6.命名约束

6.1.领域名称虽然领域名称编码为GeneralStrings,技术上领域可以选择任何名称,跨领域的互操作性边界要求就如何分配域名达成一致,以及它们意味着什么信息。为了实施这些约定,每个领域都必须符合公约本身,它必须要求共享的内部密钥也符合约定和要求邻居也这样做。Neuman等人,标准跟踪[第97页]


副本请求4120Kerberos V5 2005年7月Kerberos域名区分大小写。不同的领域名称只有在字符不相等的情况下。目前有三种类型的域名:domain、X500和other。每种样式的示例如下:域名:雅典。麻省理工学院。电子数据单元X500:C=美国/O=OSF其他:NAMETYPE:rest/of.name=无限制域名风格的域名必须看起来像域名:它们由由句点(.)分隔的组件,它们既不包含冒号(:)或斜线(/)。虽然域名本身就是这样不敏感,为了使领域匹配,大小写必须匹配为好。基于internet域建立新域名时name按照惯例建议转换字符改为大写。X.500名称包含等号(=),不能包含冒号(:)等号之前。X.500名称的领域名称将为名称的字符串表示形式,其组件由斜线。不包括前导斜杠和尾随斜杠。注释斜杠分隔符与Kerberos实现一致基于副本请求1510,但与推荐的分隔符不同在里面RFC 2253号文件属于其他类别的名称必须以前缀开头不包含等号(=)或句点(.),前缀必须为后面是冒号(:)和名称的其余部分。所有前缀预期那些以used开头的。目前没有分配。保留类别包括不属于前三类。此类别中的所有名称都是保留的。除非有是不使用“其他”类别的有力理由。这些规则保证了各种名称样式。以下附加约束适用于域和X.500类别中的域名分配:域的领域名称或X.500格式必须是由拥有(分配给其的)互联网的组织使用域名或X.500名称,或者,如果没有此类名称已注册,使用领域名称的权限可能源自父域的权限。例如,如果没有域E40.MIT的名称。EDU,然后是麻省理工学院的管理员。EDU领域可以授权创建具有该名称的域。这是可以接受的,因为父级所在的组织assigned大概是授权为其分配名称的组织Neuman等人,标准跟踪[第98页]


副本请求4120Kerberos V5 2005年7月它在X.500和域名系统中的子代。如果父级分配域名,但不在域中注册name或X.500层次结构,家长有责任确保将来不会存在与子级的领域名称,除非它被分配给与领域名称。6.2.主要名称正如域名的情况一样,需要约定来确保所有人都同意主体名称所隐含的信息。作为主体名称一部分的name-type字段表示名称隐含的信息。名称类型应为仅作为解释名称含义的提示。它是检查等效性时不重要。主体名称不同的只是名称类型标识相同的主体。姓名类型不会对名称空间进行分区。忽略名称类型,否两个名称可以相同(即,至少一个组件,或领域,必须不同)。定义了以下名称类型:名称类型值含义NT-UNKNOWN 0名称类型未知NT-PRINCIPAL 1仅为DCE中委托人的姓名,或针对用户NT-SRV-INST 2服务和其他唯一实例(krbtgt)NT-SRV-HST 3以主机名为实例的服务(telnet、rcommands)NT-SRV-XHST 4服务,主机作为剩余组件NT-UID 5唯一IDNT-X500-PRINCIPAL 6编码X.509可分辨名称[RFC2253号文件]NT-SMTP-NAME 7 SMTP电子邮件名称形式的名称(例如。,user@example.com)NT-ENTERPRISE 10企业名称-可以映射到主体名称当名称除了在特定时间,应使用名称类型PRINCIPAL。这个主体名称类型应该用于用户,也可能是用于唯一的服务器。如果名称是唯一的机器生成的保证永远不会被重新分配的ID,然后是应使用UID。(请注意,通常情况下重新分配任何类型的名称,因为访问中可能会保留过时的条目控制列表。)如果名称的第一个组件标识服务,并且其余组件标识服务器特定的方式,则SRV-INST的名称类型应为Neuman等人,标准跟踪[第99页]


副本请求4120Kerberos V5 2005年7月已使用。此名称类型的一个示例是Kerberos票证授予名称包含第一个组件krbtgt和第二个组件的服务标识票证有效领域的组件。如果名称的第一个组件标识服务,并且存在标识实例的服务名称后面的单个组件作为运行服务器的主机,然后输入名称类型应使用SRV-HST。此类型通常用于Internettelnet和Berkeley R命令等服务。如果主机名的组件显示为以下连续组件服务的名称,则应使用名称类型SRV-XHST。此类型可能用于标识X.500主机上的服务器名称,其中斜杠(/)可能不明确。X.509证书被转换为Kerberos名称。编码作为Kerberos主体的X.509名称应符合中指定的编码规则RFC 2253号文件SMTP的名称类型允许名称的形式类似于SMTP电子邮件名称。此名称(包括“@”和域名)是用作主体名称的一个组成部分。当名称的形式为未知。比较名称时,类型为UNKNOWN的名称将匹配使用任何类型的名称进行身份验证的主体。校长然而,使用类型为UNKNOWN的名称进行身份验证时,只会匹配类型为UNKNOWN的其他名称。保留初始组件为“krbtgt”的任何类型的名称用于Kerberos票证授予服务。请参见第7.3节对于此类名称的形式。6.2.1.服务器主体的名称主机上服务器的主标识符通常为由两部分组成:(1)服务器使用的KDC域已注册,且(2)NT-SRV-HST型双组分名称,如果主机名是Internet域名或多组件名称如果主机名称的形式(例如X.500),允许使用斜杠(/)分隔符。的第一个组件两个或多个组件名称将标识服务,并且后面的组件将标识主机。其中主机的名称不区分大小写(例如,对于Internet域名)主机名必须为小写。如果应用程序指定telnet和Berkeley R命令等服务的协议以系统权限运行,第一个组件可能是字符串“主机”而不是特定于服务的标识符。Neuman等人标准轨道[第100页]


副本请求4120Kerberos V5 2005年7月


7常数和其他定义值

7.1.主机地址类型主机地址类型的所有负值都保留给本地使用。所有非负值保留给正式分配类型字段和解释。Internet(IPv4)地址互联网(IPv4)地址是32位(4位八位字节)数量,编码以MSB顺序(最高有效字节在前)。IPv4环回地址不应出现在Kerberos PDU中。IPv4的类型地址是两(2)个。Internet(IPv6)地址IPv6地址[RFC3513协议]是128-bit(16-octet)数量,按MSB顺序编码(最高有效字节在前)。的类型IPv6地址是二十四(24)个。以下地址必须不出现在任何Kerberos PDU中:*未指定地址*环回地址*链接本地地址此限制适用于在地址字段中包含Kerberos PDU,但不发送到可能携带此类PDU。该限制是必要的,因为具有非全局范围的地址可以允许接受从可能具有相同地址的节点发送的消息,但不是添加限制的实体想要的主机。如果需要使用链接本地地址类型进行通信,则不得使用票据中的地址限制(即。,必须使用无地址车票)。IPv4映射的IPv6地址必须表示为的地址类型2。DECnet第四阶段地址DECnet第四阶段地址是16位地址,以LSB编码订单。DECnet第四阶段地址的类型为十二(12)个。Neuman等人,标准跟踪[第101页]


副本请求4120Kerberos V5 2005年7月Netbios地址Netbios地址是16位字节的地址,通常由1个最多15个字母数字字符,并用US-ASCII SPC填充字符(代码32)。第16个八位字节必须是US-ASCII NUL字符(代码0)。Netbios地址的类型是二十(20)个。定向地址在KRB_SAFE和KRB_PRIV消息中包含发件人地址是在许多环境中不受欢迎,因为地址可能是网络地址转换程序更改了传输。然而,如果这些地址被删除,消息可能会受到将消息反射回其发起人。定向地址类型提供了一种避免传输地址和反射攻击。定向地址按网络字节顺序编码为四字节无符号整数。如果信息由发送原件的一方发出KRB_AP_REQ消息,则应使用地址0。如果消息由接收KRB_AP_REQ的一方发出发送,则应使用地址1。涉及的应用程序多方可以指定使用其他地址。定向地址只能用于发送方地址KRB_SAFE或KRB_PRIV消息中的字段。不得使用作为票证地址或在KRB_AP_REQ消息中。此地址类型仅在发送方知道的情况下使用接收方支持地址类型。这个通常意味着只有在以下情况下才能使用定向地址应用程序协议需要它们的支持。定向地址是类型(3)。7.2.KDC消息传递:IP传输Kerberos为通信定义了两种IP传输机制客户端和服务器之间:UDP/IP和TCP/IP。7.2.1.UDP/IP传输支持IP传输的Kerberos服务器(KDC)必须接受UDP请求,并且应该在端口88(十进制)上侦听它们,除非专门配置为侦听备用UDP端口。当为多个同一主机上的域。Neuman等人,标准跟踪[第102页]


副本请求4120Kerberos V5 2005年7月支持IP传输的Kerberos客户端应支持发送UDP请求数。客户端应该使用KDC发现[7.2.3]来确定他们将发送到的IP地址和端口请求。使用UDP/IP联系KDC请求KRB_KDC_REQ时传输时,客户端应发送仅包含对KDC的请求进行编码。KDC将以仅包含回复消息编码的回复数据报(KRB_ERROR或KRB_KDC_REP)发送到发件人的IP地址。对通过UDP/IP发出的请求的响应传输还必须使用UDP/IP传输。如果响应不能使用UDP处理(例如,因为它太大),KDC必须返回KRB_ERR_RESPONSE_TOO_BIG,强制客户端重试请求使用TCP传输。7.2.2.TCP/IP传输支持IP传输的Kerberos服务器(KDC)必须接受TCP请求,并且应该在端口88(十进制)上侦听它们,除非专门配置为侦听备用TCP端口。当为多个同一主机上的领域。客户端必须支持TCP请求的发送,但可以选择尝试最初使用UDP传输的请求。客户应使用KDC发现[7.2.3]以识别IP地址和端口他们会发送他们的请求。实施说明:Kerberos协议的一些扩展将如果任何不支持TCP传输的客户端或KDC卷入的。的实施副本请求1510不需要支持TCP/IP传输。当KRB_KDC_REQ消息通过TCP流发送到KDC时,必须将响应(KRB_KDC_REP或KRB_ERROR消息)返回给客户端位于为建立的同一TCP流上请求。KDC可能会在发送响应后关闭TCP流,但如果出现以下情况,则可能会在合理的时间内保持溪流畅通期待跟进。管理TCP/IP时必须小心连接KDC以防止基于的拒绝服务攻击打开的TCP/IP连接数。客户必须准备让KDC在收到回复后的任何时间。河流截流应不被视为致命错误。相反,如果有多个交易所要求(例如,某些形式的预认证),客户可以准备发送时需要建立新连接Neuman等人,标准跟踪[第103页]


副本请求4120Kerberos V5 2005年7月随后的消息。客户端可能会在收到响应,如果不希望发送,则应关闭流后续消息。客户端在接收响应之前可能会发送多个请求,尽管它必须准备好处理正在关闭的连接在第一次响应之后。每个请求(KRB_KDC_REQ)和响应(KRB_DDC_REP或KRB_ERROR)在通过TCP流发送之前,请求的长度为4个八位字节,按网络字节顺序排列。长度的高位是保留用于未来扩展,当前必须设置为零。如果KDC不知道如何解释长度编码接收具有长度设置,则必须返回带有错误的KRB-ERROR消息KRB_ERR_FIELD_TOOLONG并必须关闭TCP流。如果通过单个TCP连接发送多个请求,并且KDC发送多个响应,不需要KDC发送按照相应请求的顺序进行响应。这可能是允许一些实现尽快发送每个响应准备就绪,即使仍在处理早期的请求(对于例如,等待来自外部设备或数据库的响应)。7.2.3.KDC在IP网络上的发现Kerberos客户端实现必须为客户端提供一种方法确定Kerberos密钥分发中心的位置(KDC)。传统上,Kerberos实现存储了每个客户机上的文件中的配置信息。经验表明,这种存储配置的方法信息表示过时信息的问题,以及扩展,尤其是在使用跨领域身份验证时。这个部分描述了使用域名系统的方法[RFC1035协议]用于存储KDC位置信息。7.2.3.1.DNS与Kerberos:领域名称的区分大小写在Kerberos中,域名区分大小写。虽然它很强大鼓励所有域名都是大写的,这个建议尚未被所有网站采用。一些网站使用所有小写名称和其他使用混合大小写。另一方面,DNS就是这样对查询不敏感。因为域名是“MYREALM”,“myrealm”和“myrealm”都不同,但在域名系统中,只有一种可能领域中使用大小写字符的组合名称。Neuman等人,标准跟踪[第104页]


副本请求4120Kerberos V5 2005年7月


7.2.3.2。使用DNS SRV记录指定KDC位置信息KDC位置信息将使用DNS SRV RR存储[RFC2782协议].  本RR的格式如下:_服务_原型。Realm TTL级SRV优先权端口目标Kerberos的服务名称始终为“Kerberos”。协议可以是“udp”或“tcp”。如果这些SRV记录则必须为所有KDC指定“udp”和“tcp”记录部署。领域是此记录对应的Kerberos领域领域必须是域样式的领域名称。TTL、Class、SRV、Priority、Weight和Target具有标准定义的含义副本请求2782根据副本请求2782,用于“_udp”和“_tcp”SRV的端口号记录应为互联网分配给“kerberos”的值分配的号码权限:88(十进制),除非配置了KDC以在备用TCP端口上侦听。实施说明:许多现有的客户端实现没有支持KDC发现,并配置为向IANA发送请求指定端口(88位小数),因此强烈建议KDC配置为侦听该端口。7.2.3.3.KDC发现IP网络上的域样式领域名称这些是Kerberos领域的DNS记录示例。COM。它有两个Kerberos服务器、kdc1.example.com和kdc2.example.com.Queries应首先按照规定发送至kdc1.example.com优先。这些样本记录中不使用重量。_kerberos公司_udp中。例子。COM.IN SRV 0 0 88 kdc1.example.COM网站。_kerberos公司_udp。例子。COM.IN SRV 1 0 88 kdc2.example.COM网站。_kerberos公司_tcp协议。例子。COM.IN SRV 0 0 88 kdc1.example.COM网站。_kerberos公司_tcp协议。例子。COM.IN SRV 1 0 88 kdc2.example.COM网站。7.3TGS名称售票服务的主要标识符应为由三部分组成:KDC发行TGS票据的领域,和一个由两部分组成的名称,类型为NT-SRV-INST,第一部分为“krbtgt”第二部分是将接受TGT的领域的名称。例如,ATHENA发布的TGT。麻省理工学院。要用于的EDU领域Neuman等人,标准跟踪[第105页]


副本请求4120Kerberos V5 2005年7月从雅典拿到门票。麻省理工学院。EDU KDC的主体标识符为“雅典.麻省理工.EDU”(领域),(“krbtgt”,“雅典.MIT.EDU”)(名称)。TGT公司雅典人协会发布。麻省理工学院。用于从麻省理工学院。EDU领域的主标识符为“ATHENA.MIT.EDU”(领域),(“krbtgt”,“MIT.EDU”)(名称)。7.4KerberosV5的.OID弧此OID可用于标识Kerberos协议消息封装在其他协议中。它还指定OID弧未来IETF操作分配的KerberosV5相关OID。实施说明:副本请求1510中“dod”的值(5)不正确其OID。id-krb5对象标识符::={iso(1)识别组织(3)dod(6)internet(1)安全(5)kerberosV5(2)}id-krb5弧下OID的赋值必须通过以下方式获得联系id-krb5弧的登记员或其指定人员。发布此RFC的时间,此类注册可以是通过联系获得krb5-oid-registrar@mit.edu。7.5.协议常数和相关值下表列出了协议中使用的常量并定义了它们的含义。在“规格”部分中,指定了范围它限制了此处定义值的常量的值。这允许实现对最大值进行假设将为这些常量接收的值。启动位置接收超出“规范”规定范围的值部分可能会拒绝请求,但它们必须完全恢复。7.5.1.关键用法编号中的加密和校验和规范[RFC3961号文件]要求作为输入“密钥使用编号”,以更改任何特定消息,以便进行特定类型的加密进攻难度更大。这些是中分配的关键使用值本文件:1.AS-REQ PA-ENC-TIMESTAMP焊盘数据时间戳,用客户端密钥(第5.2.7.2节)Neuman等人,标准跟踪[第106页]


副本请求4120Kerberos V5 2005年7月2.AS-REP票和TGS-REP票(包括TGS会话密钥或应用程序会话密钥),使用服务密钥(第5.3节)3.AS-REP加密部分(包括TGS会话密钥或应用程序会话密钥),使用客户端密钥加密(第5.4.2节)4.TGS-REQ KDC-REQ-BODY授权数据,用TGS会话密钥(第5.4.1节)5.TGS-REQ KDC-REQ-BODY授权数据,用TGS验证器子项(第5.4.1节)6.TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator cksum,用TGS会话密钥键入(第5.5.1节)7.TGS-REQ PA-TGS-REQ padata AP-REQ验证器(包括TGS验证器子密钥),使用TGS会话加密钥匙(第5.5.1节)8.TGS-REP加密部分(包括应用程序会话密钥),使用TGS会话密钥加密(第5.4.2节)9.TGS-REP加密部分(包括应用程序会话密钥),使用TGS验证器子密钥加密(第5.4.2节)10.AP-REQ Authenticator校验和,用应用程序键入会话密钥(第5.5.1节)11.AP-REQ验证器(包括应用程序验证器子密钥),使用应用程序会话密钥加密(第5.5.1节)12.AP-REP加密部分(包括应用程序会话子密钥),使用应用程序会话密钥加密(第5.5.2节)13.KRB-PRIV加密部分,使用由应用程序(第5.7.1节)14.KRB-CRED加密部分,使用由应用程序(第5.8.1节)15.KRB-SAFE校验和,由应用程序(第5.6.1节)16-18.  保留供将来在Kerberos和相关中使用协议。19.AD-KDC-ISSUED校验和(5.2.6.4中的AD-checksum)20-21.  保留供将来在Kerberos和相关中使用协议。22-25.  保留用于Kerberos版本5 GSS-API机制[RFC4121协议].26-511.  保留供将来在Kerberos和相关中使用协议。512-1023.  保留供Kerberos实现内部使用。1024.加密用于不符合以下条件的协议中的应用程序指定密钥使用值Neuman等人,标准跟踪[第107页]


副本请求4120Kerberos V5 2005年7月1025.在没有指定密钥使用值1026-2047.  保留供应用程序使用。7.5.2.预身份验证数据类型Padata和数据类型Padata-Type注释价值PA-TGS-REQ 1型PA-ENC-时间戳2PA-PW-盐3【保留】4PA-ENC-UNIX-TIME 5(已弃用)PA-SANDIA-安全ID 6PA-SESAME公司7PA-OSF-DCE 8PA-CYBERSAFE-安全9PA-AFS3-盐10PA类型信息11PA-SAM-CHALLENGE 12(SAM/otp)PA-SAM响应13(SAM/otp)PA-PK-AS-REQ_OLD 14(pkinit)PA-PK-AS-REP_OLD 15(pkinit)PA-PK-AS-REQ 16(pkinit)PA-PK-AS-REP 17(pkinit)PA-ETYPE-INFO2 19(取代PA-ETYPE-info)PA-USE-指定-KVNO 20PA-SAM-REDIRECT 21(SAM/otp)PA-GET-FROM-TYPED-DATA 22(嵌入类型化数据)TD-PADATA 22(嵌入PADATA)PA-SAM-类型信息23(SAM/otp)PA-ALT-打印24(crawdad@fnal.gov)PA-SAM-CHALLENGE公司2 30(kenh@pobox.com)PA-SAM回复2 31(kenh@pobox.com)PA-EXTRA-TGT 41预留额外TGTTD-PKINIT-CMS证书101 CMS证书集TD-KRB-PRINCIPAL 102负责人姓名TD-KRB-REALM 103领域来自PKINIT的TD-TRUSTED-CERTIFERS 104来自PKINIT的TD-CERTIFICATE-INDEX 105TD-APP-DEFINED-ERROR 106特定于应用程序TD-REQ-NONCE 107整数TD-REQ-SEQ 108整数PA-PAC-请求128(jbrezak@exchange.microsoft.com)Neuman等人,标准跟踪[第108页]


射频4120Kerberos V5 2005年7月


7.5.3.地址类型地址类型值IPv4 2定向3混沌网5XNS 6ISO 7标准DECNET第四阶段12AppleTalk DDP 16NetBios 20IPv6 247.5.4.授权数据类型授权数据类型Ad-Type值AD-IF-相关1用于服务器2的广告申请类别3的附加申请AD-KDC-发布4AD-AND-OR 5(自动和/或5)AD-管理票-延期6AD-IN-TICKET-扩展7KDC 8的AD-MANDATORY保留值9-63OSF-DCE 64型芝麻65AD-OSF-DCE-PKI-CERTID 66(hemsath@us.ibm.com)AD-WIN2K-PAC 128型(jbrezak@exchange.microsoft.com)AD-ETYPE-谈判129(lzhu@windows.microsoft.com)7.5.5.传输编码类型转换编码类型Tr-Type值域-X500-压缩机1保留值所有其他7.5.6.协议版本号标签值含义或MIT代码pvno 5当前Kerberos协议版本号Neuman等人,标准跟踪[第109页]


副本请求4120Kerberos V5 2005年7月


7.5.7Kerberos消息类型消息类型值含义KRB_AS_REQ 10初始身份验证请求KRB_AS_REP 11对KRB_AS_REQ请求的响应KRB_TGS_REQ 12基于TGT的身份验证请求KRB_TGS_REP 13对KRB_TSS_REQ请求的响应KRB_AP_REQ 14对服务器的应用程序请求KRB_AP_REP 15对KRB_AP_REQ_MUTUAL的回应KRB_RESERVED16 16为用户对用户KRB_tgt_request保留KRB_RESERVED17 17保留给用户对用户KRB_tgt_replyKRB_SAFE 20安全(校验和)应用程序消息KRB_PRIV 21私人(加密)应用程序消息KRB_CRED 22要转发的私人(加密)消息凭证KRB_ERROR 30错误响应7.5.8.名称类型名称类型值含义KRB_NT_UNKNOWN 0名称类型未知KRB_NT_PRINCIPAL 1仅为DCE中的委托人姓名,或针对用户KRB_NT_SRV_INST 2服务和其他唯一实例(krbtgt)以主机名作为实例的KRB_NT_SRV_HST 3服务(telnet、rcommands)KRB_NT_SRV_XHST 4服务,主机作为剩余组件KRB_NT_UID 5唯一IDKRB_NT_X500_PRINCIPAL 6编码X.509可分辨名称[射频2253]KRB_NT_SMTP_NAME 7 SMTP电子邮件名称形式的名称(例如。,user@example.com)KRB_NT_ENTERPRISE 10企业名称;可以映射到主体名称第7.5.9条.错误代码错误代码值含义KDC_ERR_NONE 0无错误KDC_ERR_NAME_EXP 1客户端在数据库中的条目已过期KDC_ERR_SERVICE_EXP 2服务器在数据库中的条目已过期KDC_ERR_BAD_PVNO 3请求的协议版本不支持数字Neuman等人,标准跟踪[第110页]


副本请求4120Kerberos V5 2005年7月KDC_ERR_C_OLD_MAST_KVNO 4客户端密钥加密旧主密钥KDC_ERR_S_OLD_MAST_KVNO 5服务器密钥加密旧主密钥在中找不到KDC_ERR_C_PRINCIPAL_UNKNOWN 6客户端Kerberos数据库在中找不到KDC_ERR_S_PRINCIPAL_UNKNOWN 7服务器Kerberos数据库KDC_ERR_PRINCIPAL_NOT_UNIQUE 8多个主条目在数据库中KDC_ERR_NULL_KEY 9客户端或服务器具有空密钥KDC_ERR_CANNOT_POSTDATE 10票证不符合后定日期KDC_ERR_NEVER_VALID 11请求的启动时间为晚于结束时间KDC_ERR_POLICY 12 KDC策略拒绝请求KDC_ERR_BADOPTION 13 KDC无法容纳请求的选项KDC_ERR_ETYPE_NOSUPP 14 KDC不支持加密类型KDC_ERR_SUMTYPE_NOSUPP 15 KDC不支持校验和类型KDC_ERR_PADATA_TYPE_NOSUPP 16 KDC不支持padata类型KDC_ERR_TRTYPE_NOSUPP 17 KDC不支持过渡型KDC_ERR_CLIENT_REVOKED 18客户端凭据具有已被撤销KDC_ERR_SERVICE_REVOKED 19服务器的凭据具有已被撤销KDC_ERR_TGT_REVOKED 20 TGT已撤销KDC_ERR_CLIENT_NOTYET 21客户端尚未生效;尝试稍后再来KDC_ERR_SERVICE_NOTYET 22服务器无效;尝试稍后再来KDC_ERR_KEY_EXPIRED 23密码已过期;更改密码以重置KDC_ERR_PREAUTH_FAILED 24预身份验证信息无效KDC_ERR_PREAUTH_REQUIRED 25额外预处理-需要身份验证KDC_ERR_SERVER_NOMATCH 26请求的服务器和票证不匹配KDC_ERR_MUST_USE_USER2USER 27服务器主体对有效仅user2userKDC_ERR_PATH_NOT_ACCEPTED 28 KDC策略拒绝过渡路径Neuman等人,标准跟踪[第111页]


副本请求4120Kerberos V5 2005年7月KDC_ERR_SVC_UNAVAILABLE 29服务不可用KRB_AP_ERR_BAD_INTEGRITY 31完整性检查解密字段失败KRB_AP_ERR_TKT_EXPIRED 32票据到期KRB_AP_ERR_TKT_NYV 33车票无效KRB_AP_ERR_REPEAT 34请求是重播KRB_AP_ERR_NOT_US 35门票不适合我们KRB_AP_ERR_BADMATCH 36票证和验证器不匹配KRB_AP_ERR_SKEW 37时钟偏差过大KRB_AP_ERR_BADADDR 38网络地址不正确KRB_AP_ERR_BADVERSION 39协议版本不匹配KRB_AP_ERR_MSG_TYPE 40无效消息类型KRB_AP_ERR_MODIFIED 41消息流已修改KRB_AP_ERR_BADORDER 42消息无序KRB_AP_ERR_BADKEYVER 44指定的密钥版本为不可用KRB_AP_ERR_NOKEY 45维修密钥不可用KRB_AP_ERR_MUT_FAIL 46相互认证失败KRB_AP_ERR_BADDIRECTION 47消息方向不正确KRB_AP_ERR_METHOD 48替代认证所需方法KRB_AP_ERR_BADSEQ 49序列号错误在消息中KRB_AP_ERR_INAPP_CKSUM 50不合适的类型消息中的校验和KRB_AP_PATH_NOT_ACCEPTED 51策略拒绝传输路径KRB_ERR_RESPONSE_TOO_BIG 52响应对于UDP太大;使用TCP重试KRB_ERR_GENERIC 60一般错误(描述电子文本)KRB_ERR_FIELD_TOOLONG 61字段对此太长实施KDC_ERROR_CLIENT_NOT_TRUSTED 62为PKINIT保留KDC_ERROR_KDC_NOT_TRUSTED 63为PKINIT保留KDC_ERROR_INVALID_SIG 64为PKINIT保留KDC_ERR_KEY_TOO_WEAK 65为PKINIT保留KDC_ERR_CERTIFICATE_MISMATCH 66为PKINIT保留KRB_AP_ERR_NO_TGT 67无可用的TGT验证用户对用户KDC_ERR_WRONG_REALM 68保留供将来使用KRB_AP_ERR_USER_TO_USER_REQUIRED 69门票必须用于用户对用户KDC_ERR_CANT_VERIFY_CERTIFICATE 70保留给PKINITKDC_ERR_INVALID_CERFICATE 71为PKINIT保留KDC_ERR_REVOKED_CERTIFICATE 72为PKINIT保留Neuman等人标准轨道[第112页]


副本请求4120Kerberos V5 2005年7月KDC_ERR_REVOCATION_STATUS_UNNOWN 73为PKINIT保留KDC_ERR_REVOCATION_STATUS_UNAVAILABLE 74为PKINIT保留KDC_ERR_CLIENT_NAME_MISMATCH 75为PKINIT保留KDC_ERR_KDC_NAME_MISMATCH 76为PKINIT保留8.互操作性要求Kerberos协议的版本5支持大量选项。其中包括多种加密和校验和类型;可供替代的传输场的编码方案;可选机制预认证;处理没有地址的门票;相互认证选项;用户对用户认证;支持代理;域名的格式;处理授权数据;以及转发、更新和更新门票。为了确保领域的互操作性,有必要定义所有人都必须支持的最小配置实现。此最小配置可能会更改为技术确实如此。例如,如果在稍后的某个日期发现它所需的加密或校验和算法之一不是安全,它将被更换。8.1.规格2本节定义了这些选项的第二个规范。以这种方式配置的实现可以说是支持Kerberos版本5规范2(5.2)。规格1(已弃用)可以在中找到副本请求1510运输客户端和KDC必须支持TCP/IP和UDP/IP传输声称符合规范2。加密和校验方法以下加密和校验和机制必须支持:加密:AES256-CTS-HMAC-SHA1-96[RFC3962号文件]校验和:HMAC-SHA1-96-AES256[RFC3962号文件]实现也应该支持其他机制,但其他机制只能在与通信时使用已知的负责人也支持他们。以下机制来自[RFC3961号文件]和[RFC3962号文件]应支持:Neuman等人,标准跟踪[第113页]


副本请求4120Kerberos V5 2005年7月加密:AES128-CTS-HMAC-SHA1-96、DES-CBC-MD5、DES3-CBC-SHA1-KD校验和:DES-MD5、HMAC-SHA1-DES3-KD、HMAC_SHA1-96-AES128实现可能也支持其他机制,但其他机制只能在与通信时使用已知支持他们的校长。实现说明:Kerberos的早期实现生成使用CRC-32和RSA-MD5校验和方法发送的消息。对于与这些早期版本的互操作性,实现者可以考虑支持这些校验和方法,但应谨慎分析安全影响以将情况限制在这些方法被接受。领域名称所有实现都必须理解两者中的层次结构域Internet域和X.500风格。当TGT用于请求未知领域时,KDC必须能够确定KDC领域和请求的领域。转换字段编码域-X500-压缩机(如第3.3.3.2节)必须是支持。可能支持替代编码,但可能仅在ALL中间层支持该编码时使用王国。预验证方法必须支持TGS-REQ方法。未在上使用初始请求。PA-ENC-TIMESTAMP方法必须支持客户端,但默认情况下是否启用可以在逐个领域的基础。如果在初始阶段未使用该方法请求,并返回错误KDC_ERR_PREAUTH_REQUIRED指定PA-ENC-TIMESTAMP作为可接受的方法,客户端应使用PA-ENC-TIMESTAMP pre重试初始请求-身份验证方法。服务器不需要支持PA-ENC-TIMESTAMP方法,但如果不支持,服务器应该忽略PA-ENC-TIMESTAMP预身份验证在请求。必须支持ETYPE-INFO2方法;此方法用于传递受支持的加密类型集,以及关键参数对应的盐和字符串。ETYPE-INFO方法应支持与旧版本的互操作性实施。Neuman等人,标准跟踪[第114页]


副本请求4120Kerberos V5 2005年7月相互身份验证相互身份验证(通过KRB_AP_REP消息)必须支持。票证地址和标记所有KDC必须通过没有地址(即。,如果TGT不包含地址,KDC将返回导数门票)。实现应默认为请求无地址票据,因为这显著增加与网络地址转换的互操作性。在某些情况下,域或应用程序服务器可能要求票证具有地址。实现应该接受的定向地址类型KRB_SAFE和KRB_PRIV信息,应包括方向当其他地址类型不是可用。必须支持代理和转发的票证。个人领域和应用服务器可以在何时设置自己的策略这样的票将被接受。所有实施必须识别可更新和延期票证,但他们不需要实际实现它们。如果这些不支持选项,票证中的开始时间和结束时间应规定票据的整个使用寿命。票证由服务器解码,所有实现都应使存在对调用服务器可见的过期标志。用户对用户身份验证支持用户对用户身份验证(通过ENC-TKT-IN-SKEYKDC选项)必须由实现提供,但需要单独提供realms可能会根据政策决定拒绝此类请求每一个派别或全领域的基础。授权数据实现必须通过来自的所有授权数据子字段TGT到任何衍生票据,除非他们被指示禁止子字段作为注册的定义的一部分子字段类型。(传递子字段永远都是正确的,并且当前没有注册的子字段类型在KDC)Neuman等人,标准跟踪[第115页]


副本请求4120Kerberos V5 2005年7月实施必须使任何授权数据的内容使用票据时服务器可用的子字段。不需要实现来允许客户端指定授权数据字段的内容。恒定范围所有协议常量都限制为32位(有符号)值除非受到协议定义的进一步限制。此限制允许实现对将为这些常数接收的最大值。接收超出此范围的值的实现可能会拒绝请求,但它们必须完全恢复。8.2推荐的KDC值以下是KDC配置的建议值列表。最短使用寿命5分钟最长可续期1周最长票期1天可接受的时钟偏差5分钟允许空地址允许接近等9IANA注意事项

   第7节指定协议常数和其他定义的多个互操作性所需的值实现。除非随后的RFC另有规定,否则Kerberos工作组已关闭协议常量和扩展所需的其他定义值Kerberos协议将由Kerberos工作组。遵循中概述的建议[RFC2434协议],指导按如下方式提供给IANA:“保留”域名类型第6.1节和“其他”领域类型以“X-”或“X-”开头的除外在没有IETF标准行动的情况下将指定分配。以“X-”开头的领域名称类型或“x-”为私人使用。对于中描述的主机地址类型第7.1节,负值为供私人使用。附加正数的赋值为由Kerberos工作组或其他专家审查审查。Neuman等人,标准跟踪[第116页]


副本请求4120Kerberos V5 2005年7月中定义的其他密钥使用编号第7.5.1节,将是指定的主题由Kerberos工作组或其他专家评审。其他预身份验证数据类型值,如中所定义部分
   7.5.2,将由Kerberos工作人员进行审查小组或其他专家评审。中定义的其他授权数据类型第7.5.4节,将分配给Kerberos工作组或其他专家评审。虽然预计会有对私人用途类型的大量需求,故意提供不适用于命名空间的专用部分,因为冲突私人分配的值之间可能具有有害的安全性启示。其他传输编码类型,如第7.5.5节,提出对与现有互操作性的特殊关注实现。因此,此类作业只能由标准操作,除了Kerberos工作组或其他其他有管辖权的工作组可以初步正在通过标准的文档的分配过程。其他Kerberos消息类型,如中所述第7.5.7节,将由Kerberos工作组审查或其他专家评审。其他名称类型,如中所述第7.5.8节,将是分配给Kerberos工作组或其他专家评审。中描述的其他错误代码第7.5.9节将被分配由Kerberos工作组或其他专家审查审查。10.安全注意事项作为身份验证服务,Kerberos提供了一种验证方法网络上主体的身份。Kerberos本身可以不提供授权。应用程序不应接受Kerberos服务器发布服务票证作为授权使用服务的权限,因为此类应用程序可能会易受绕过此授权检查的攻击它们与其他KDC相互操作的环境或其他提供了应用程序身份验证选项。Neuman等人,标准跟踪[第117页]


射频4120Kerberos V5 2005年7月Kerberos无法解决拒绝服务攻击。协议中入侵者可以阻止应用程序的位置参与正确的身份验证步骤。因为身份验证是使用许多服务所必需的步骤,Kerberos服务器上成功的拒绝服务攻击可能导致拒绝其他依赖Kerberos的网络服务用于身份验证。Kerberos容易受到多种拒绝服务攻击:网络上的攻击,这将阻止客户端联系KDC;那些在域名系统上,可以阻止客户端查找Kerberos服务器的IP地址;以及通过重载Kerberos KDC本身来重复请求。不兼容的字符集用法导致的互操作性冲突(见5.2.1)可能会导致拒绝使用Kerberos字符串中的字符集,而不是KDC中存储的字符集数据库。身份验证服务器维护主体(即用户)的数据库和服务器)及其密钥。安全性身份验证服务器计算机至关重要。违反安全规定身份验证服务器的安全性依赖于受损KDC的服务器,并将危及在域中注册的任何主体的身份验证受损的KDC。校长必须对自己的密钥保密。如果入侵者不知怎么偷了校长的钥匙,它就能伪装成该主体或向合法主体模拟任何服务器。Kerberos无法解决密码验证攻击。如果用户如果选择了一个错误的密码,攻击者就有可能通过重复成功发起离线字典攻击试图用字典中的连续条目进行解密,使用派生自用户的密码。除非的策略需要预身份验证选项领域,KDC将不知道是否有身份验证请求成功了。攻击者可以请求任何负责人。这些凭据可能对攻击者,除非它知道客户端的密钥,但在客户端的密钥中加密的响应的可用性为攻击者提供可能用于安装暴力的密文通过猜测,强制或字典攻击解密凭据用户的密码。因此,我们强烈鼓励Kerberos领域需要使用预身份验证。即使有Neuman等人,标准跟踪[第118页]


副本请求4120Kerberos V5 2005年7月在身份验证之前,攻击者可能会尝试使用暴力或字典对通过窃听观察到的凭据的攻击网络。因为客户端可以为任何服务器主体和可以尝试对服务器进行暴力或字典攻击校长的钥匙使用了那张罚单,强烈建议随机生成密钥(而不是从密码生成)可用作目标主体的任何主体KRB_TGS_REQ或KRB_AS_REQ消息。[RFC4086协议]尽管DES-CBC-MD5加密方法和DES-MD5校验和方法被列为应该为向后实现兼容性,它们所基于的单一DES加密算法基础较弱,应在任何时候使用更强的算法可能。网络上的每个主机都必须有一个松散的时钟与其他主机的时间同步;此同步是用于减少应用程序服务器在进行回放检测。“松动”程度可以配置在以每台服务器为基础,但通常为5分钟左右。如果时钟在网络上同步,则时钟同步协议本身必须受到网络的保护攻击者。不得在短期内回收主要标识符。A类访问控制的典型模式将使用访问控制列表(ACL)授予特定主体权限。如果ACL条目过时保留为已删除的主体,主体标识符为重新使用时,新主体将继承在stale中指定的权限ACL条目。如果不重用主体标识符移除无意进入。来自KDC的KRB_AS_REP消息的正确解密足以让主机验证用户的身份;用户攻击者可以合作生成KRB_AS_REP格式正确解密但不是来自正确KDC的消息。收件人验证登录到本地系统的用户的凭据在AS交换中获得的可首先用于TGS交换获取本地服务器的凭据。然后,这些凭据必须通过成功完成客户端/服务器交换。许多副本请求1510-兼容实现忽略未知授权数据元素。根据这些实现来实现授权数据限制可能会造成安全漏洞。Neuman等人标准轨道[第119页]


副本请求4120Kerberos V5 2005年7月Kerberos凭据包含明文信息,用于标识他们所适用的主体。如果此信息的隐私是需要时,此交换本身应封装在协议中规定交换这些凭证时的保密性。应用程序必须注意保护后续通信身份验证,通过使用KRB_PRIV或KRB_SAFE消息作为适当,或通过应用自己的保密性或完整性关于此类通信的机制。完成KRB_AP_REQ和KRB_AP_REP交换,无需随后使用保密和完整性机制只提供各方的身份验证通信,而非保密性和完整性后续沟通。应用保密和除KRB_PRIV和KRB_SAFE之外的完整性保护机制必须确保身份验证步骤与应用程序。除非应用服务器提供了自己合适的方法来防止重播(例如,挑战响应序列在身份验证或使用服务器后由服务器启动-生成的加密子密钥),服务器必须使用重播缓存记住允许时钟内出现的任何验证器歪斜。所有共享密钥的服务都需要使用相同的重播缓存。如果使用单独的重播缓存,则与一起使用的验证器一个这样的服务稍后可以用重放到另一个服务相同的服务主体。如果服务器无法跟踪允许时钟偏差,它必须拒绝所有请求,直到时钟偏移间隔已过,确保任何丢失或重播的验证器将超出允许的时钟偏差并且不能再成功地重放。Kerberos的实现不应使用不受信任的目录服务器来确定主机的领域。允许这样做破坏目录服务器,使攻击者能够指示客户端接受使用错误主体的身份验证(即,具有类似名称,但位于未注册合法主机)。Kerberos的实现不得使用DNS将一个名称映射到另一个(规范化),以确定要与之通信的主要名称。要允许此操作规范化将允许DNS的妥协,从而导致客户端获取凭据并正确验证Neuman等人,标准跟踪[第120页]


射频4120Kerberos V5 2005年7月错误的校长。虽然客户会知道它在与谁通信与,它将不是它打算与之合作的主体沟通。如果Kerberos服务器返回比所需的领域,客户端可以使用本地策略配置来验证使用的身份验证路径是否可接受。或者,客户端可以选择自己的身份验证路径,而不是而不是依赖Kerberos服务器来选择一个。在任何一种情况下用于选择或验证的策略或配置信息身份验证路径(无论是由Kerberos服务器还是客户端)必须从可信来源获得。基本形式的Kerberos协议并没有提供完美的通信转发保密。如果交通记录由窃听者,然后使用KRB_PRIV消息加密消息,或使用特定于应用程序的加密在如果用户的,随后会发现应用程序服务器或KDC的密钥。这个是因为用于加密此类消息的会话密钥,当在网络上传输,在应用程序服务器。它也在来自的会话密钥下加密在KRB_TGS_REP中返回给用户的用户TGT消息。来自TGT的会话密钥在KRB_AS_REP消息加密在用户密钥中并嵌入TGT,在KDC的密钥中加密。应用要求完全正向保密必须通过提供这种保证的机制,但可以使用Kerberos通过这种方法建立的加密通道的身份验证其他方式。11.致谢本文件是对副本请求1510它是与约翰·科尔。中描述的Kerberos协议规范这份文件是多年努力的结果。在这个问题上期间,许多个人对协议和规范的编写。不幸的是,它无法将所有贡献者列为本文档的作者,尽管有许多未列出的精神作者,包括为部分章节贡献文本的人参与了协议部分的设计,以及世卫组织对在IETF通用身份验证技术(CAT)和Kerberos工作组。Neuman等人,标准跟踪[第121页]


副本请求4120Kerberos V5 2005年7月在那些有助于开发和规范Kerberos是Jeffrey Altman、John Brezak、Marc Colan和JohanDanielsson、Don Davis、Doug Engert、Dan Geer、Paul Hill、John Kohl、,马克·霍洛维茨(Marc Horowitz)、马特·赫尔(Matt Hur)、杰弗里·哈泽尔曼(Jeffrey Hutzelman)、保罗·利奇(Paul Leach)、约翰·林恩(John Linn)、,阿里·梅德文斯基、萨沙·梅德温斯基、史蒂夫·米勒、乔恩·罗奇利斯、杰罗姆萨尔茨、杰弗里·席勒、詹妮弗·斯坦纳、拉尔夫·斯威克、迈克·斯威夫特,乔纳森·特罗斯尔(Jonathan Trostle)、西奥多·茨奥(Theodore Ts'o)、布赖恩·东(Brian Tung)、雅克·维德林(Jacques Vidrine)、阿萨尔(Assar)Westerlund和Nicolas Williams。麻省理工学院项目的许多其他成员雅典娜,麻省理工学院网络小组,以及Kerberos和CAT工作IETF的小组提供了帮助,但未列出。Neuman等人标准轨道[第122页]


副本请求4120Kerberos V5 2005年7月


A类.ASN.1模块KerberosV5规格2{iso(1)识别组织(3)dod(6)internet(1)安全(5)kerberosV5(2)模块(4)krb5spec2(2)}定义明确标签::=开始--KerberosV5的OID电弧----此OID可用于标识Kerberos协议消息--封装在其他协议中。----此OID还为KerberosV5相关OID指定OID弧。----注意:副本请求1510OID中“dod”的值(5)不正确。id-krb5对象标识符::={iso(1)识别组织(3)dod(6)internet(1)安全(5)kerberosV5(2)}整数32::=整数(-2147483648..2147483647)--以32位表示的有符号值UInt32::=整数(0..4294967295)--无符号32位值微秒::=整数(0..99999)--微秒KerberosString::=通用字符串(IA5String)领域::=KerberosString主体名称::=序列{名称类型[0]Int32,name-string[1]KerberosString序列}KerberosTime::=GeneralizedTime--无小数秒主机地址::=序列{地址类型[0]Int32,地址[1]八位字节字符串}--注意:主机地址始终用作可选字段,并且--不应为空。主机地址——注:与rfc1510型,Neuman等人,标准跟踪[第123页]


射频4120Kerberos V5 2005年7月--但有一个值映射并进行相同的编码::=主机地址序列--注:AuthorizationData始终用作可选字段--不应为空。授权数据::=序列序列{广告类型[0]Int32,ad-data[1]八位字节字符串}PA-DATA::=序列{--注意:第一个标记是[1],而不是[0]padata类型[1]Int32,padata值[2]八位字节字符串--可能编码为AP-REQ}Kerberos标志::=位字符串(大小(最大32))--应发送最少位数,--但不少于32加密数据::=序列{etype[0]Int32--加密类型--,kvno[1]UInt32可选,cipher[2]八位字节字符串--密文}加密密钥::=序列{keytype[0]Int32--实际加密类型--,keyvalue[1]八位字节字符串}校验和::=序列{cksumtype[0]Int32,校验和[1]八位字节字符串}票证::=[应用程序1]序列{tkt-vno[0]整数(5),领域[1]领域,sname[2]主体名称,enc-part[3]加密数据--EncryptedTicketPart}--票据的加密部分EncTicketPart::=[应用程序3]序列{标志[0]票证标志,密钥[1]加密密钥,crealm[2]王国,Neuman等人标准轨道[第124页]


副本请求4120Kerberos V5 2005年7月cname[3]负责人姓名,过渡[4]过渡编码,authtime[5]KerberosTime,starttime[6]KerberosTime可选,endtime[7]KerberosTime,renew-till[8]KerberosTime可选,caddr[9]主机地址可选,authorization-data[10]授权数据可选}--编码的Transited字段转换编码::=序列{tr-type[0]Int32--必须注册--,内容[1]八位字符串}TicketFlags::=KerberosFlags--保留(0),--可转发(1),--转发(2),--可代理(3),--代理(4),--五月-后日期(5),--后注日期(6),--无效(7),--可再生能源(8),--首字母(9),--预授权(10),--硬件验证(11),--以下是1510年以来的新内容--过渡政策检查(12),--ok-as-delegate(13)AS-REQ::=[应用程序10]KDC-REQTGS-REQ::=[应用程序12]KDC-REQKDC-REQ::=序列{--注意:第一个标记是[1],而不是[0]pvno[1]整数(5),消息类型[2]整数(10--AS-|12--TGS-),padata[3]PA-DATA序列可选--注:不为空--,需求体[4]KDC-req-body}KDC-REQ-BODY::=序列{kdc-options[0]kdc选项,Neuman等人,标准跟踪[第125页]


射频4120Kerberos V5 2005年7月cname[1]主体名称可选--仅用于AS-REQ--,领域[2]领域--服务器的领域--客户也在AS-REQ中--,sname[3]PrincipalName可选,来自[4]KerberosTime可选,直到[5]KerberosTime,rtime[6]KerberosTime可选,现时[7]UInt32,etype[8]Int32序列--加密类型--按优先顺序--,地址[9]主机地址可选,enc-authorization-data[10]加密数据可选--授权数据--,附加标签[11]票证顺序可选--注:不为空}KDCOptions::=KerberosFlags--保留(0),--可转发(1),--转发(2),--可代理(3),--代理(4),--allow-postdate(5),--后注日期(6),--未使用7(7),--可再生能源(8),--未使用9(9),--未使用10(10),--opt-hardware-auth(11),--未使用12(12),--未使用13(13),--15被保留用于规范化--未使用15(15),--1510年未使用26个--禁用过渡检查(26),----可再生ok(27),--enc-tkt-in-skey(28),--更新(30),--验证(31)AS-REP::=[应用程序11]KDC-REPTGS-REP::=[应用程序13]KDC-REPNeuman等人,标准跟踪[第126页]


副本请求4120Kerberos V5 2005年7月KDC-REP::=序列{pvno[0]整数(5),消息类型[1]整数(11--AS-|13--TGS-),padata[2]PA-DATA序列可选--注:不为空--,crealm[3]领域,cname[4]负责人姓名,票[5]票,enc-part[6]加密数据--EncASRepPart或EncTGSRepPart,--视情况而定}EncASRepPart::=[APPLICATION 25]EncKDCRepPartEncTGSRepPart::=[APPLICATION 26]EncKDCRepPartEncKDCRepPart::=序列{密钥[0]加密密钥,last-req[1]上次重传,现时[2]UInt32,key-expiration[3]KerberosTime可选,flags[4]票证标志,authtime[5]KerberosTime,starttime[6]KerberosTime可选,endtime[7]KerberosTime,renew-till[8]KerberosTime可选,srealm[9]领域,sname[10]主体名称,caddr[11]主机地址可选}LastReq::=序列{lr-类型[0]Int32,lr值[1]KerberosTime}AP-REQ::=[应用程序14]序列{pvno[0]整数(5),消息类型[1]整数(14),ap-options[2]APOptions,票[3]票,验证器[4]加密数据--验证器}AP选项::=KerberosFlags--保留(0),--使用会话密钥(1),Neuman等人标准轨道[第127页]


副本请求4120Kerberos V5 2005年7月--相互要求(2)--未加密的身份验证器身份验证器::=[应用程序2]序列{authenticator-vno[0]整数(5),crealm[1]领域,cname[2]负责人姓名,cksum[3]校验和可选,cusec[4]微秒,ctime[5]KerberosTime,subkey[6]加密密钥可选,序列号[7]UInt32可选,authorization-data[8]授权数据可选}AP-REP::=[应用程序15]序列{pvno[0]整数(5),消息类型[1]整数(15),enc部分[2]加密数据--EncAPRepPart}EncAPRepPart::=[APPLICATION 27]序列{ctime[0]KerberosTime,立方秒[1]微秒,subkey[2]加密密钥可选,序列号[3]UInt32可选}KRB-安全::=[应用20]顺序{pvno[0]整数(5),消息类型[1]整数(20),保险箱[2]KRB-safe-body,校验和[3]}KRB-SAFE-BODY::=序列{user-data[0]OCTET字符串,时间戳[1]KerberosTime可选,usec[2]微秒可选,序列号[3]UInt32可选,s地址[4]主机地址,r地址[5]主机地址可选}KRB-PRIV::=【应用程序21】序列{pvno[0]整数(5),消息类型[1]整数(21),--注意:没有[2]标签Neuman等人,标准跟踪[第128页]


副本请求4120Kerberos V5 2005年7月enc-part[3]加密数据--EncKrbPrivPart}EncKrbPrivPart::=[应用程序28]序列{user-data[0]OCTET字符串,时间戳[1]KerberosTime可选,usec[2]微秒可选,序列号[3]UInt32可选,s-address[4]主机地址--发件人地址--,r-address[5]主机地址可选--收件人的地址}KRB-CRED::=【应用程序22】序列{pvno[0]整数(5),消息类型[1]整数(22),票[2]票序列,enc-part[3]加密数据--EncKrbCredPart}EncKrbCredPart::=[应用程序29]序列{ticket-info[0]KrbCredInfo序列,nonce[1]UInt32可选,timestamp[2]KerberosTime可选,usec[3]微秒可选,s-address[4]主机地址可选,r地址[5]主机地址可选}KrbCredInfo::=序列{key[0]加密密钥,前置胶片[1]领域可选,pname[2]PrincipalName可选,flags[3]TicketFlags可选,authtime[4]KerberosTime可选,starttime[5]KerberosTime可选,endtime[6]KerberosTime可选,renew-till[7]KerberosTime可选,srealm[8]领域可选,sname[9]PrincipalName可选,caddr[10]主机地址可选}KRB-错误::=[APPLICATION 30]序列{pvno[0]整数(5),消息类型[1]整数(30),ctime[2]KerberosTime可选,cusec[3]微秒可选,stime[4]科尔伯罗斯时间,Neuman等人,标准跟踪[第129页]


副本请求4120Kerberos V5 2005年7月susec[5]微秒,错误代码[6]Int32,crealm[7]领域可选,cname[8]PrincipalName可选,领域[9]领域--服务领域--,sname[10]PrincipalName--服务名称--,e-text[11]KerberosString可选,电子数据[12]八位字节字符串可选}方法数据::=PA-DATA序列类型数据::=序列大小(1..最大值){数据类型[0]Int32,数据值[1]八位字节字符串可选}--预验证内容如下PA-ENC-TIMESTAMP::=加密数据--PA-ENC-TS-ENCPA-ENC-TS-ENC::=序列{patimestamp[0]KerberosTime--客户端时间--,pausec[1]微秒可选}ETYPE-INFO-ENTRY::=序列{etype[0]国际32,salt[1]八位字节字符串可选}ETYPE-INFO::=ETYPE-信息输入序列ETYPE-INFO2-条目::=序列{etype[0]Int32,salt[1]KerberosString可选,s2kparams[2]八位字节字符串可选}ETYPE-INFO2::=ETYPE-INFO2-ENTRY的序列大小(1..MAX)AD-IF-相关::=授权数据AD-KDC发布::=序列{ad-checksum[0]校验和,i-realm[1]领域可选,i-sname[2]主体名称可选,元素[3]授权数据Neuman等人,标准跟踪[第130页]


副本请求4120Kerberos V5 2005年7月}AD-AND-OR::=序列{条件计数[0]Int32,元素[1]授权数据}AD-MANDATORY-FOR-KDC::=授权数据结束B类。自以下日期以来的更改副本请求1510本文件取代副本请求1510并澄清项目规格没有完全指定。建议更改的位置做出了实施选择,或添加了新选项,这些更改在文档中进行了描述,并在本文档中列出部分。更重要的是,“规范2”第8节变化使其一致所需的加密和校验和方法使用当前最佳实践,并弃用不可用的方法被认为足够坚固的时间更长。讨论已添加到第1节关于依赖的能力KDC检查传输字段,并在包含标志时在一张票据上表明已经进行了这项检查。这是一个新的中不存在功能副本请求1510预先存在的实施方式可能忽略或不设置此标志,不会带来负面的安全影响。密钥的定义表明,对于用户密钥可能来自密码。射频1510,上面说密钥是从密码派生的。此更改是为了适应用户密钥可能存储在智能卡或以其他方式独立于密码获得。引言中提到了对通过引用在Kerberos中进行初始身份验证。副本请求1510没有包括这样的参考。第1.3节是为了解释Kerberos提供对指定的主体进行身份验证,这仍然是责任以确保经过身份验证的名称是应用程序希望与之通信的实体。导言中增加了对可扩展性的讨论。讨论可扩展性如何影响票证标志和KDC选项被添加到第2节。未对进行任何更改中指定的现有选项和标志副本请求1510虽然有些Neuman等人,标准跟踪[第131页]


副本请求4120Kerberos V5 2005年7月对规范中的章节进行了重新编号,并对文本进行了修订使现有选项的描述和意图更清楚,尤其是ENC-TKT-IN-SKEY选项(现在部分
   2.9.2)用于用户对用户身份验证。新选项和票证标记传输策略检查(第2.7节)已添加。关于生成会话密钥以供应用程序使用的警告已添加到第3节,敦促包含来自KDC在票证中生成了会话密钥。关于使用的示例子会话密钥已添加到第3.2.6节。的描述pa-etype-info、pa-etype-info2和pa-pw-salt预认证数据已添加个项目。使用预认证的建议已从“五月”更改为“应该”,并添加了关于已知的明文攻击。RFC 1510,第4节描述了KDC中的数据库。这个讨论对于互操作性来说是不必要的,也是不必要的受约束的实现。老人第4节已删除。当前第4节以前是第6节关于加密和校验和规范。这部分的主要内容是最新支持新的加密方法,并将其移动到单独的文档。加密和校验和剩下的几个方面Kerberos特定的规范现在在中指定第4节第5节澄清可选字段的正确行为。其中许多变化是由于原始ASN.1描述不正确,因此有必要留下正确行为的Kerberos规范未指定。此外,本节中的措辞是尽可能严格执行,以确保实现符合将通过添加新的字段。添加了描述ASN.1中time_t=0问题的文本。文本为还添加了,澄清了处理省略的实现的问题可选整数为零。添加了说明的行为的文本可选的SEQUENCE或SEQUENCEOF可能为空。讨论是添加了关于序列号和某些实现,包括“零”行为和负数。A类添加了关于无条件发送的兼容性说明EncTGSRepPart,不考虑封闭的回复类型。次要更改对HostAddresses类型的描述进行了修改。整数类型受到约束。KerberosString被定义为(明显)约束的GeneralString.KerberosFlags已定义以反映与Neuman等人,标准跟踪[第132页]


副本请求4120Kerberos V5 2005年7月中的定义副本请求1510过渡政策检查(12)和添加了ok-as-delegate(13)票证标志。残疾人士-添加了check(26)KDC选项。将常用实施的PA-DATA的描述添加到第5节KRB-SAFE的描述已更新,以注意现有的双重编码的实现行为。方法数据有两种定义副本请求1510.第二个删除了一个用于KRB_AP_ERR_METHOD的PA-DATA定义的顺序。第7节,命名约束,来自副本请求1510已移至第6节添加了描述基于域的领域的约定的词语新创建的领域的名称应指定为大写。此建议不会使小写域名非法。添加的单词突出显示中用斜线分隔的组件X.500风格的域名与现有的域名一致副本请求1510基于实现,但它与一般中指定的X.500名称表示的建议RFC 2253号文件第8节,网络传输,常量和定义值,来自无线电频率控制
   1510已移至第7节.自副本请求1510,定义添加了Kerberos消息的TCP传输,并且加密和校验和编号分配已移动到单独的文档中。“规格2”英寸第8节当前文档的更改需要加密和校验和方法使其符合当前的最佳实践,并反对没有被认为足够坚固的时间更长。关于IANA考虑因素和安全考虑因素的两个新章节已添加。伪代码已从附录中删除。伪代码有时会被误解为限制实现选择副本请求1510,它并不总是与规范。已努力消除规范,而不是依赖伪代码。添加了一个附录,其中包含完整的ASN.1模块,该模块摘自中的讨论第5节当前文档的。结束注释(*TM)Project Athena、Athena和Kerberos是麻省理工学院(MIT)。Neuman等人,标准跟踪[第133页]


副本请求4120Kerberos V5 2005年7月规范性引用文件[RFC3961号文件]Raeburn,K.,“加密和校验和”Kerberos 5“的规范,副本请求3961,二月2005[RFC3962号文件]Raeburn,K.,“高级加密标准(AES)Kerberos加密5“,副本请求3962,2月2005[ISO-646/ECMA-6]国际标准化组织,“用于信息的7位编码字符集交换”,ISO/IEC 646:1991。[ISO-2022/ECMA-35]国际标准化组织,“字符代码结构和扩展技术”,ISO/IEC 2022:1994。[RFC1035协议]Mockapetris,P.,“域名-实现和规范”,STD 13,副本请求1035,11月1987[RFC2119协议]Bradner,S.,“RFC中使用的关键词指示需求级别”,业务连续性计划14,副本请求2119,1997年3月。[RFC2434协议]Narten,T.和H.Alvestrand,“在RFC中编写IANA注意事项部分”,业务连续性计划26,副本请求24341998年10月。[RFC2782协议]Gulbrandsen,A.、Vixie,P.和L.Esibov,“DNSRR用于指定服务位置(DNSSRV)”,副本请求27822000年2月。[RFC2253号文件]Wahl,M.、Kille,S.和T.Howes,“轻量级目录访问协议(v3):UTF-8字符串可分辨名称的表示”,RFC 2253号文件,1997年12月。[RFC3513协议]Hinden,R.和S.Deering,“互联网协议版本6(IPv6)寻址体系结构”,副本请求
                      35132003年4月。[X680型]抽象语法符号一(ASN.1):ITU-T基本符号规范建议X.680(1997)|ISO/IEC国际标准8824-1:1998。Neuman等人,标准跟踪[第134页]


射频4120Kerberos V5 2005年7月[X690型]ASN.1编码规则:基本规范编码规则(BER)、标准编码规则(CER)和区分编码规则(DER),ITU-T建议X.690(1997)|ISO/IEC国际标准8825-1:1998。资料性引用[ISO-8859标准]国际标准化组织,“8位单字节编码图形字符集--拉丁字母”,ISO/IEC 8859。[RFC1964号文件]Linn,J.,“Kerberos版本5 GSS-API机制”,RFC 1964年1996年6月。[DGT96型]Don Davis、Daniel Geer和Theodore Ts'o,“带有时钟漂移的Kerberos:历史、协议、,和实施”,USENIX计算系统9:1,1996年1月。[DS81型]Dorothy E.Denning和Giovanni Maria Sacco,“密钥分发协议中的时间戳,”ACM通讯,第24卷(8),第533页-5361981年8月。[KNT94型]约翰·科尔、B.Clifford Neuman和西奥多·Y。Ts'o,“Kerberos的演变认证系统“.在分布式开放环境中系统,第78-94页。IEEE计算机学会出版社,1994[MNSS87型]S.P.Miller、B.C.Neuman、J.I.Schiller和J。H.Saltzer,第E.2.1节:Kerberos身份验证和授权系统,M.I.T.项目Athena,马萨诸塞州剑桥,1987年12月21日。[NS78型]Roger M.Needham和Michael D.Schroeder,“使用大型网络中身份验证的加密计算机,“ACM通信,第21卷(12) 第993-999页,1978年12月。[Neu93号机组]B.Clifford Neuman,“基于代理的授权和分布式系统会计”,in第十三届国际会议记录分布式计算系统,宾夕法尼亚州匹兹堡,1993年5月。Neuman等人,标准跟踪[第135页]


副本请求4120Kerberos V5 2005年7月[NT94型]B.Clifford Neuman和Theodore Y.Ts'o,“安计算机网络身份验证服务,“IEEE通信杂志,第32卷(9),第33页-1994年9月38日。[第92部分]J.Pato,使用预认证来避免密码猜测攻击,开放软件基金会DCE征求意见26(12月1992[RFC1510协议]Kohl,J.和C.Neuman,“Kerberos网络身份验证服务(V5)“,副本请求1510,9月1993[RFC4086协议]Eastlake,D.,第三,Schiller,J.和S.Crocker,“安全随机性要求”,业务连续性计划106,RFC 4086号文件2005年6月。[SNS88系列]J.G.Steiner、B.C.Neuman和J.I.Schiller,“Kerberos:开放式身份验证服务网络系统”,p.191-202,Usenix会议《诉讼》,德克萨斯州达拉斯,1988年2月。[RFC4121协议]Zhu,L.、Jaganathan,K.和S.Hartman,“Kerberos版本5通用安全服务应用程序接口(GSS-API)机制:版本2“,射频41212005年7月。Neuman等人,标准跟踪[第136页]


副本请求4120Kerberos V5 2005年7月作者地址克利夫德·诺伊曼信息科学研究所南加州大学海军大道4676号Marina del Rey,CA 90292,美国电子邮件:bcn@isi.eduTom Yu(汤姆·余)麻省理工学院马萨诸塞州大道77号美国马萨诸塞州剑桥市02139电子邮件:tlyu@mit.edu萨姆·哈特曼麻省理工学院马萨诸塞州大道77号美国马萨诸塞州剑桥市02139电子邮件:hartmans-ietf@mit.edu肯尼思·雷伯恩麻省理工学院马萨诸塞州大道77号美国马萨诸塞州剑桥市02139电子邮件:raeburn@mit.eduNeuman等人标准轨道[第137页]


副本请求4120Kerberos V5 2005年7月完整版权声明版权所有(C)互联网协会(2005)。本文件受权利、许可和限制的约束包含在中业务连续性计划78,除文中另有规定外,作者保留所有权利。本文件及其所含信息在“按现状”基础和贡献者、他/她代表的组织或由互联网协会和互联网赞助(如有)工程任务组否认所有明示或暗示的担保,包括但不限于使用此处的信息不会侵犯任何权利或任何暗示适销性或特定用途适用性的保证。知识产权IETF对任何可能要求的知识产权或其他权利与中描述的技术的实现或使用有关本文件或此类权利下的任何许可的范围可能可用或不可用;也不代表它已经做出任何独立努力来确定任何此类权利。问询处关于RFC文件中权利的程序在中找到业务连续性计划78业务连续性计划79向IETF秘书处披露的知识产权信息副本以及提供许可证的保证,或试图获得使用本协议的实施者或用户的此类所有权规范可从IETF在线知识产权库获取,网址为http://www.ietf.org/iprIETF邀请任何相关方提请其注意版权、专利或专利申请或其他所有权可能涵盖实施所需技术的权利本标准。请将信息发送给IETF上的IETF-ipr@ietf.org。确认RFC编辑器功能的资金目前由互联网社会。Neuman等人标准轨道[第138页]