1. 导引
本文定义可扩展认证协议(EAP),EAP是一个支持多认证方式的认证框架。EAP主要运行在数据链接层,比如点对点协议(PPP)或者IEEE802,不需要IP。EAP可以提供副本排除和重发,但依赖于底层排序保证。EAP本身是不支持数据包分裂的,但个别EAP方法可能支持该功能。
EAP可用于专用链路,交换电路,有线和无线链路。至今,EAP已用于使用PPP[RFC1661]连接交换电路或者拔号线路的主机或路由。EAP也可使用IEEE802[IEEE-802]去切换和访问端点。基于IEEE802有线媒介的EAP密封在[IEEE-802.1X]里有描述,基于IEEE无线局域网的密封在[IEEE-802.11i]里有描述。
EAP构架其中一个优点是灵活。EAP可用于选择一个特殊的认证机制,一般是在认证端请求更多的信息以便判断是否使用那个特殊的认证方法之后。比起要求认证端更新以支持新的认证方法,更好的做法是,EAP使用一个后端认证服务器,这样就可以实现很多或者所有的认证方法,这时认证端是作为这些方法的通行站。
在本文中,认证端要求不管认证端是否直通,都适用。也就是说这里所说的要求会用于认证端还是后端认证服务器,取决于在哪确定EAP认证,术语”EAP服务器”。
1.1.规范要求
在本文中,有些词用于表示规范要求。关键词”必须”,“绝不”,“要求”,,“将”,”将不“,“应该”,“应该不”,”建议“,”可能“,”可选的”在本文中出现的,都在[RFC2119]里有解释。
1.2. 术语
本文频繁使用到下面术语:
认证端authenticator
初始化EAP认证的链路端点。该术语在[IEEE-802.1X]中有用到,在本文也是相同的意思。
对等端peer
对应认证端的链路端点。在[IEEE-802.1X]中也称为恳求端。
恳求端Supplicant
在[IEEE-802.1X]中对应认证端的链路端点。
后台认证服务器backendauthentication server
一个后台认证服务器是一个对认证端提供认证服务的实体。一般用于为认证端执行EAP方法。该术语同样在[IEEE-802.1X]中用到。
AAA
认证,授权,计帐。带EAP支持的AAA协议包括RADIUS[RFC3579]和Diameter[DIAM-EAP]。在本文中,术语AAA服务器和后台认证服务器是交互使用的。
可显示信息DisplayableMessage
该术语解释为可阅读的字符信息。该信息编码必须符合UTF-8转换格式[RFC2279]。
EAP服务器EAP server
协同对等端决定EAP认证方法的实体。当没有使用后台认证服务时,认证服务器是认证端的一部分。当认证端运行在直通模式时,EAP服务器位于后台认证服务器。
悄悄丢弃SilentlyDiscard
意思是不作进一步处理就丢弃数据包。执行该操作时应该记录事件,包括悄悄丢弃的数据包内容,应该用一个统计计数器记录事件。
成功认证SuccessfulAuthentication
在本文的上下文中,认证成功是EAP信息的交换结果,该结果是,认证端允许对等端访问,对等端决定使用该访问。
信息完整性检测MessageIntegrity Check (MIC)
一个密钥的哈希函数用于认证和数据完整性保护。通常称之为信息认证码(MAC),但IEEE802规范使用动态MIC去避免媒介访问控制的混淆。
假设敌方知道所有协议中交换的信息,如果没有破解某些加密假定的话就不可能从密钥x算出y,也不可能从密钥y算出x,这两个密钥x和y就称为加密分离。也就是说可以让敌人知道所有以明文形式发送的信息,以及协议中用到的所有可预测的计数值。破解一个加密推定一般要求在不知道密码的情况下,反编译一个单向函数或者猜出一个加密伪随机数。换句话讲,如果密码是加密分离的,那么想从x算出y或y算出x的是不容易做到的,如果执意这样做,就相当于一个地毯式搜索,相当费力。
主会话密钥MasterSession Key (MSK)
源于EAP对等端和服务器之间的加密材料,可通过EAP方法导出。主会话密钥至少64个字节长度。实际操作上,AAA服务器扮演EAP服务器将主会话密钥传送给认证端。
扩展的主会话密钥ExtendedMaster Session Key (EMSK)
源于EAP客户端和服务器的额外密钥材料,可通过EAP方法导入。扩展的主会话密钥至少64个字节长度。扩展的主会话密钥不与认证端或者其他第三方共享。扩展的主会话密钥还没开放,留作后用。
结果指示
一个方法在发送和接受最后一条信息后会提供结果指示的情况:
-
对等端意识到是否已经认证服务器了或者是否服务器已经认证自己了。
-
服务器意识到是否已经认证对等端了或者对等端已认证自己了。
-
在成功认证满足授权访问的情况下,对等端和认证端就会清楚第三方是否愿意提供或接受访问。一个已认证的对等端在缺乏授权或其他原因的情况下可能会拒绝访问。由于EAP交换是发生在对等端和服务器之间,其他端点(比如一个AAA代理)可能会影响授权决定。在7.16节会更详细探讨这种情况。
1.3 适用性
EAP是设计用在IP层连接还没建立连接时的网络访问认证。不建议将EAP用于其他目的,比如大量数据传输。
由于EAP不需要IP连接,它仅支持认证协议的可靠性传输。
EAP是一个锁步协议,该协议仅支持一个单包飞跃。因此,EAP不能有效传输大量数据,不像TCP或者SCTP等传输协议。
当EAP提供重发支持时,是假定底层已支持排序保证,因此不支持超出排序范围。
由于EAP不支持数据包分裂和重组,因此EAP认证方法产生的负荷大于最小EAPMTU时需要提供数据分裂支持。
有些认证方法,如EAP-TLS,提供数据分裂和重组支持,但本文所描述的方法都不支持。因此,当EAP数据包超过链路的EAPMTU时,这些方法就无能为力了。
EAP认证是由服务器(认证端)来初始化的,尽管有很多认证协议是由客户端(对等端)作初始化。因此,有必要认一个认证算法去添加一个或两个额外的信息(至少一个往返)以便运行EAP。
如果支持证书类认证,由于证书链的分裂,额外往返的信息量可能更大。一般,一个分裂的EAP包,由于有多个小包,需要发送多个往返信息。例如,一个证书链有14960个字节,会要求10次往返来发送一个1496字节的EAPMTU。
如果EAP运行在一个常丢包的底层或者认证端与认证服务器之间的连接常丢包,EAP方法需要多个往返信息才能克服这些困难。这种情况下,建议使用带有一些往返信息的EAP方法。