EAP技術


EAP(Extensible Authentication Protocol),可擴展認證協議,是一種普遍使用的支持多種認證方法的認證框架協議,主要用於網絡接入認證。

該協議一般運行在數據鏈路層上,即可以直接運行於PPP或者IEEE 802之上,不必依賴於IP。EAP可應用於無線、有線網絡中。

EAP的架構非常靈活,在Authenticator(認證方)和Supplicant(客戶端)交互足夠多的信息之后,才會決定選擇一種具體的認證方法,即允許協商所希望的認證方法。認證方不用支持所有的認證方法,因為EAP架構允許使用一個后端的認證服務器(也就是AAA服務器),此時認證方將在客戶端和認證服務器之間透傳消息。

AAA是驗證、授權記賬(Authentication、Authorization、Accounting )三個英文單詞的簡稱,是一個能夠處理用戶訪問請求的服務器程序,提供驗證授權以及帳戶服務,主要目的是管理用戶訪問 網絡服務器,對具有訪問權的用戶提供服務。AAA服務器通常同網絡 訪問控制網關服務器、 數據庫以及用戶信息目錄等協同工作。同AAA服務器協作的網絡連接服務器接口是“遠程 身份驗證撥入用戶服務 (RADIUS)”。

Radius是Remote Authentication Dial In User Service的簡稱,即遠程驗證撥入用戶服務。當用戶想要通過某個網絡(如電話網)與網絡接入服務器NAS(Network Access Server)建立連接從而獲得訪問其它網絡的權力時,NAS可以選擇在NAS上進行本地認證計費,或把用戶信息傳遞給Radius服務器,由Radius進行認證計費。Radius協議規定了NAS與Radius服務器之間如何傳遞用戶信息和記賬信息,Radius服務器負責接收用戶的連接請求,完成驗證,並把傳遞服務給用戶所需的配置信息返回給NAS。

 

  

圖1 EAP典型使用組網(Ethernet)

該協議支持重傳機制,但這需要依賴於底層保證報文的有序傳輸,EAP不支持亂序報文的接收。協議本身不支持分片與重組,當一些EAP認證方法生成大於MTU(Maximum Transmission Unit,最大傳輸單元)的數據時,需要認證方法自身支持分片與重組。

EAP認證方法目前大約有40種,IETF的RFC中定義的方法包括:EAP-MD5、 EAP-OTP、EAP-GTC、EAP-TLS、EAP-SIM和EAP-AKA, 還包括一些廠商提供的方法和新的建議。

1 EAP報文的封裝格式

1.1 PPP鏈路:

當PPP幀的協議字段是0xC227的時候,表示PPP幀的信息字段里封裝了一個完整的EAP報文,其數據包的格式如圖2所示。

 

 

圖2 EAP報文在PPP鏈路的封裝

Type:一個字節,取值為3

Length:一個字節,取值為4

Authentication Protocol:兩個字節,C227 (Hex) for Extensible Authentication Protocol (EAP)

1.2 IEEE 802/Ethernet:

EAP在LAN的報文(簡稱EAPOL)封裝格式在IEEE-802.1X協議中定義,其數據包的格式如圖3所示。

圖3 EAP在LAN中的封裝

PAE(Port Access Entity)Ethernet Type:2字節,表示協議類型,為0x888E。

Protocol Version:1字節,表示EAPOL幀的發送方所支持的協議版本號。

Type:1字節,表示EAPOL數據幀類型,具體類型如表1所示。

類型

說明

EAP-Packet(值為0x00):認證信息幀,用於承載認證信息

該類型的幀在認證方重新封裝並承載於RADIUS等協議上,便於穿越復雜的網絡到達認證服務器

EAPOL-Start(值為0x01):認證發起幀

這兩種類型的幀僅在客戶端和認證方之間存在

EAPOL-Logoff(值為0x02):退出請求幀

表1 EAPOL數據類型

Length:2字節,表示數據長度,也就是“Packet Body”字段的長度,單位為字節。如果為0,則表示沒有后面的數據域。

EAPOL-Start和EAPOL-Logoff報文的Length值都為0。

Packet Body:表示數據內容,根據不同的Type有不同的格式。

2 EAP報文格式

當EAPOL數據幀格式Type域為EAP-Packet時,Packet Body為EAP數據報文,結構如圖4所示。

 

圖4 EAP報文格式

Code:一個字節,指明EAP包的類型,共有4種,域值定義如下:

1--------Request

2--------Response

3--------Success

4--------Failure

由於該字段值只定義了1到4,如果EAP報文的該字段為其他值,則應被Authenticator和Supplicant丟棄。

Identifier:一個字節,用於應答報文和請求報文之間進行匹配。

Length:兩個字節,EAP包的長度,包含Code、Identifier、Length和Data域,單位為字節。

Data:零個或多個字節,EAP包的內容,由Code類型決定

RFC 3748中定義的Success和Failure類型的包沒有Data域,相應的Length域的值為4。但是某些軟件的實現中,為了說明認證失敗的原因,在Length域后面增加了字段用於說明下線的原因,故Length域的值可能為其他值。

Request和Response類型報文的Data域格式如圖5所示。

 

圖5 Data域的格式

Type:一個字節,標識EAP的認證類型。

Type Data:該字段的內容由Type字段的值決定。

Type字段目前定義的值及其簡要說明如下:

Type=1 ----Identifier(用來詢問對端的身份)

Type=2 ----Notification(非必須的一個消息,傳送一些警告消息,比如提示密碼將要超期、OTP的順序號碼接近零以及認證失敗的警告等)。

Type=3 ----Nak (Response Only)(Request報文中的認證類型不可接受時回復該類型的報文)

Type=4 ----MD5-Challenge(類似於CHAP中的MD5-Challenge,使用MD5算法)

Type=5 ----One-Time Password (OTP)(一種密碼交互的方式)

Type=6 ----Generic Token Card(通用令牌卡類型,適用於各種需要用戶輸入信息的令牌卡的實現)

Type=254 ----Expanded Types(供廠商支持自己的擴展類型)

Type=255 ----Experimental use(在實驗新的類型時使用)

每種Type對應的Type Data字段這里不作詳細描述,有興趣的讀者請查閱RFC 3748相關章節。

 

3 EAP過程

EAP過程由認證方發起,而認證協議一般都是由客戶端發起,為了在特定的認證協議上支持EAP過程,認證協議需要增加一個或多個的附加報文來滿足條件。如以太網上的認證通常情況下是以客戶端發送EAPOL報文開始的。

 

 

 

EAP的典型過程如下:

1、Authenticator發送請求報文EAP-Request給Supplicant(客戶端),表明EAP認證開始。該請求由一個字段標明需要請求的數據是什么。這個字段包含Identity(詢問對端的身份), MD5-challenge(MD5挑戰字)等。上述發送EAP-Request的步驟在某些情況下也可省去,比如在有線網絡中,Authenticator(有時也稱為NAS)已經根據客戶端連接的端口識別用戶身份,或者通過MAC地址,IMSI卡等識別用戶身份的情況下。

2、Supplicant針對Authenticator發過來的請求回應一個響應消息EAP-Response,該消息包含了請求消息中請求的字段信息,如身份識別信息。

3、Authenticator繼續發送EAP-Request消息,消息中包含具體EAP Type及其協議數據,Supplicant對此做出響應。根據EAP Method的不同,此步驟可能會交互多次。

EAP交互過程是Supplicant與Authenticator一來一往的過程,每次只能處理一個EAP報文,在收到響應之前不能發送新的請求,即鎖步機制(Lockstep)。因此Authenticator要負責請求消息的重傳。如果重傳一定次數后都沒有收到應答消息,這次的EAP過程就要被終結。重傳后收到應答消息或者一直沒有收到應答消息,Authenticator都不發送成功或者失敗消息。

4、交互多次之后,會出現兩種情形:Authenticator不能確認Supplicant的接入權限,此時必須發送EAP-Failure,終結此次的EAP過程;或者確認接入權限,此時必須發送EAP-Success消息。

Authenticator也可以作為Pass Through設備,透傳EAP報文。這種情形下Authenticator檢查EAP的Code,Id及Length並將報文轉發出去。Authenticator需要將EAP Code為2(Response)的報文轉給后端的認證服務器,將EAP Code=1(Request),3(Success),4(Failure)的報文轉給Supplicant。在這個處理過程中除非Pass Through Authenticator實現了某種EAP Methods,一般是只將消息轉發,並不去檢查EAP Methods Layer的的消息頭(即EAP Type)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM