您好,欢迎访问三七文档
1.引言本文档定义了扩展认证协议,一个支持多路认证方法的认证框架。EAP通常直接运行在数据链路层,例如PPP协议或者是IEEE802,不需要IP地址。EAP自身支持消除重复和转发,但是它依赖于底层正确的排序。EAP本身不支持分片,然而特别的EAP方法可能支持这个。EAP架构的优势之一就是它的灵活性。EAP是用来选择一个专门的认证方法,通常是在认证方在得到更多的信息以后决定使用什么专门的认证方法。与其让认证方不断更新来支持每个新的认证方法相比,EAP更倾向于使用后台认证服务器,它可以实现一些或所有认证方法,此时认证方工作于传递模式。1.1要求说明书1.2术语本文档经常使用下列词语:认证方:启动EAP认证的链路终端。被认证方:回应认证方的链路终端。(也就是客户端)客户端:在IEEE802.1X中,链路终端回应被认证方。在本文档中,这个链路终端被称为被认证方。后台认证服务器:后台认证服务器是一个提供认证服务给认证方的实体。当被使用时,这个服务器通常为认证方使用EAP方法。(也就是AAA服务器)AAA:认证,授权和计费。支持EAP的AAA协议支持包括RADIUS和Diameter。在这个文档中,AAA服务器和后台认证服务器这两个术语是相同的意思。EAP服务器:终止和被认证方进行EAP认证方法的实体。在没有后台认证服务器时,EAP服务器是认证方的一部分。在认证方工作在传递模式的情况下,EAP服务器相当于后台认证服务器。简单丢弃:这意味着执行操作没有做进一步处理的能力,只是将数据包简单的丢弃。该执行应该提供记录错误的能力,如丢弃包的内容;并在统计处记录下该事件。成功认证:在本文档中,成功认证是一个EAP消息的交换,同样也是认证方决定允许被认证方访问和被认证方决定访问的结果。认证方的决定通常包括认证和授权两个方面;被认证方可能已经成功的向认证方得以认证,但是访问可能由于政策原因被认证方拒绝。消息完整性检查:主要的哈希函数用于认证和数据完整性保护。这常常被称为消息验证码。加密分离:两个密钥(x和y)是独立的加密,如果对手知道了在协议交换中所有的信息,也不能进行破密,即从X中计算出Y,或者从Y中计算出X。特别是,这个定义允许对手知道所有以明文形式发送的随机数,和在协议中使用的所有可预见的计数器的值。如果密钥是分开加密的,没有捷径来从Y中分离出X或从X中分离出Y,若对手想得到密钥,他必须执行的计算,相当于执行一个穷尽搜索。主会话密钥(MSK):建钥资料是从EAP客户端和服务器间获取,通过EAP方法输出。MSK至少是64字节长度。在现有的实现中,一个AAA服务器作为一个EAP服务器来传送MSK到认证方。扩展的主会话密钥:附加的建钥资料从EAP客户端和服务器间获取,通过EAP方法输出。EMSK至少64字节的长度。EMSK不与认证方或其它第三方共享。EMSK是为将来使用的,现在还没有定义。结果标志:如果在方法的最后信息被发送或者接收以后,它提供结果显示:1)被认证方知道它是否认证了服务器,还有服务器是否认证了它。2)服务器知道它是否认证了被认证方,还有被认证方是否认证了它。在这种情况下,成功的认证足够获得访问批准,于是被认证方和认证方将会知道另外一方是否提供或者接收访问。也可能不经常是这种情况。一个认证的被认证方可能被拒绝访问,由于缺少授权或者其它的原因。既然EAP交换是在被认证方和服务器间运行的,其它节点(例如AAA代理)也可能影响到授权的决定。这在7.16中被详细的讨论。1.3适用性EAP被设计用来使用在网络访问认证上,IP层连接到达不了的地方。不建议将EAP用于其它用途,例如块数据传输。由于EAP不需要IP连接,它仅仅为认证协议的可靠传输提供了足够的支持,其余的什么也没有。EAP是锁步协议,它仅仅支持每次传输一个数据包。因此,EAP不能够有效的传输块数据,不像传输层协议例如TCP或STCP。虽然EAP为转发提供了支持,但是在它假定底层保证有序传输的基础上,所以不支持乱序接收。由于EAP不支持分片和重组,EAP认证方法产生的有效载荷大于EAPMTU需要提供分片支持的最小值。虽然认证方法例如EAP-TLS支持分片和重组,在本文档中EAP方法不支持。因此,如果EAP数据包的大小超出了EAP链路的MTU,这些方法将会遇到困难。EAP认证是由服务器(认证方)发起的,而很多认证协议是由客户端发起的,因此,为了运行EAP,认证算法增加一两个额外的信息是必要的。凡基于证书的认证都是支持的,由于证书链的分片,额外的往返包的数量可能增多。一般来说,一个分片的EAP数据包由于有分片,将需要很多的往返包来发送。例如,一个认证链的大小是14960个字节,将需要10个往返来发送一个1496字节大小的EAPMTU。EAP运行在底层,此时会有很多重要的包发生丢失,或者在认证方和认证服务器之间的通信时,重要的包丢失也发生,EAP方法需要很多往返包来解决这些问题。在这种情况下,建议EAP方法使用较少的往返包。2扩展认证协议EAP认证交换过程如下:1、认证一方向另一方首先发送一个身份请求,并等待对方发来响应。2、对方在接到身份请求要求时,它应发送一个身份响应包,他们的ID必须相同3、认证方检查包类型是否是身份响应包,且ID是否与发送请求时一致。4、在收到身份响应时,认证方根据身份,检查通信实体数据库,以查找对应的认证方式,如找到则开始发送响应的认证请求。5、对方在收到认证请求时,首先检查它自己是否支持认证者所要求的认证请求,如不支持,则发送一个NAK否认包,如支持,则发送认证响应。6、认证者检查响应包,如是NAK否认包,则重发对方允许的认证请求。如是上一次的认证请求的响应,则检查它是否是它所期待的响应以决定认证成功或失败,从而决定链路的打开或关闭。7、如上一步成功,向对方发送认证确认包,以使对方把链路打开,通知上层网络控制协议进行网络通信协议参数的协商,随着各个网络控制协议打开之后,PPP就把数据链路交给通信网络协议,这时双方才可以进行实际的通信。优点:EAP协议能够支持多种认证方法。网络访问服务器设备不需要理解每个认证方法,同时可能为后台认证服务器作传递代理。支持传递是可选的。认证方可能认证本地的被认证方,同时可能为非本地被认证方和不能当地实施的认证方法作为传递方。被认证方和后台认证服务器相分离,简化了证件管理和政策的制定。缺点:在P2P中使用,EAP需要增加一个新的认证类型到PPPLCP,因此PPP需要作出改变才能够使用它。它与之前的PPP认证模型不同,在链路建立阶段不指定认证方法。同样,交换机或无线接入点为使用EAP协议需要支持IEEE802.1X。被认证方和后台认证服务器分开,它使安全性分析复杂化,密钥分配也复杂化了。2.1支持序列EAP会话可能利用各种方法。一个典型的例子,在身份请求后跟着一个EAP认证方法,例如MD5-挑战。然而,在一个EAP会话中,认证方和被认证方必须使用一种认证方法,之后认证方必须发送成功或失败数据包。一旦被认证方已经发送和初始请求一样类型的回应包,认证方在一个给定的方法完成最后一轮之前,不能发送一个不同类型的请求包,也不能在初始认证方法完成之后,发送请求任意类型的额外方法;被认证方收到上述请求包时,必须把它们作为无效的,简单丢弃。因此,不支持身份重新查询。被认证方在初始non-NaK回应被发送之后,不能为回复请求再发送一个NaK。由于攻击者可能发送伪造的EAP请求包,认证方收到意外的NaK时应该丢弃它并且记录这件事情。在一个EAP会话中不支持多路认证方法,因为它们容易受到拦截式攻击,并与现有的实现不兼容。当使用一个特别的EAP认证方法时,其它的方法在它之中运行(一个隧道方法),此时上述在一个EAP会话中禁止多路认证方法就不适合了。这种隧道方法是一种特别EAP的认证方法。可提供后向兼容,因为一个不支持隧道方法的被认证方,能够用NaK回复初始EAP请求。为了解决安全性的缺陷,隧道方法必须支持保护对抗拦截式攻击。2.2EAP多路传输模型从概念上讲,EAP的操作包括以下部分:a)底层。底层负责在认证方和被认证方之间转发和接收EAP帧。EAP已经在各类的底层上运行,例如PPP,有线IEEE802局域网,IEEE802.11无线局域网,UDP和IKEv2,TCP。底层的表现在第3节中讨论。b)EAP层。EAP层通过底层收到和转发EAP数据包,完成重复检测和转发,同时从EAP被认证方和认证层传递和接收EAP信息。c)EAP被认证方和认证层。基于代码字段,EAP层多路分离输入EAP数据包到EAP被认证方和认证层。通常情况下,在一给定主机上运行的EAP,将支持被认证方或者认证方的功能,同样对于一个主机来说,也可以同时担当EAP被认证方和认证方。此时,EAP被认证方和认证层都将会出现。d)EAP方法层。EAP方法通过EAP被认证方和认证层,实现认证算法和接收转发EAP信息。由于EAP本身不支持分片,现在这是EAP方法的责任,这将在第5节中被讨论。EAP多路传输模型在下图一种说明。注意这里没有要必须遵守这个模型,只要线上行为与它保持一致就行。在EAP中,代码字段功能很像在IP中的协议号码。假定EAP层根据代码字段多路分离传入的EAP数据包。接收到的EAP数据包(1请求,3成功和4失败)被EAP层传到EAP的被认证方层。带有代码=2(回应)的EAP数据包被传送到EAP认证层。在EAP中,类型字段功能很像UDP或TCP中的端口号码。假定EAP被认证方和认证层根据它们的类型多路分离输入的EAP数据包,然后把它们传送给相应类型的EAP方法。在一台主机实施的EAP方法可能注册来接收从被认证方或认证方来的数据包,或者都接收,这样根据它所支持的功能角色。通知回复仅仅被作为确定被认证方接收到通知请求,不是它已经处理了通知请求,或者向使用者显示了这个信息。它不能假定通知请求或回复的内容对另外一种方法是有效的。通知类型将在5.2节讨论。NaK(类型3)或者扩展的NaK(类型254)都是用于协商的目的。被认证方回应一个NaK响应或者扩展NaK响应,给不想接收类型的初始EAP请求。它不能假定NaK响应的内容是另一种方法有效。NaK类型将在5.3节被讨论。带有成功或失败代码的EAP数据包不包括类型字段,同时也不被传送给一个EAP方法。成功和失败将在第4.2节中讨论。鉴于上述考虑,成功,失败,NaK响应和通知请求/回应信息不能用与承载注定要发送到其它EAP方法的数据。2.3传递行为当作为一个传递认证方时,认证方检查代码,身份,字段长度,在4.1节描述的那样。它把从被认证方收到的、目的地址是它自己认证层的EAP数据包,转发给后台认证服务器;从后台认证服务器接收到的、目的地是被认证方的数据包被转发到传递认证方。一个主机收到EAP可能仅仅对其做下列三件事情中的一件:执行它,丢弃它,继续传送。继续传送的决定通常是根据检查后的代码,身份和字段长度。一个传递认证方必须能够把从被认证方接收的带有代码=2(回应)的EAP数据包转发给后台认证服务器。它也必须能够吧从后台认证服务器收到EAP数据包,将代码=1(请求),代码=3(成功),代码=4(失败)的EAP数据包传递给被认证方。除非认证方本地完成一个或多个支持认证方角色的认证方法,EAP方法层包头字段(类型、类型数据)作为转发决策的一部分不被检查。当认证方支持本地认证方法,它可能检查类型字段来决定是否执行这个数据包或者转发这个数据包。符合传递认证方的操作,必须默认转发任何类型的EAP数据包。接收到代码=1(请求),代码=3(成功),以及代码=4(失败)的EAP数据包被EAP层多路分离,并且被传送到被认证方层。因此,除非一个主机实现EAP被认证方层,否则这些数据包将会被简单丢弃。同样的,接收到代码=2(回复)的EAP数据包也会被EAP层多路分离,并且被传送到认证方层。因此,除非主机实现EAP认证方层的功能,否则这些数据包将会被丢弃。传递性认证方层的行为在这个说明中没有被定义,并且像RADIUS和Diameter这些AAA协议不支持传递行为。
本文标题:rfc3748中文
链接地址:https://www.777doc.com/doc-7508703 .html