802.11X用戶身份驗證


靜態WEP企圖同時解決802.11無線網絡安全的兩個問題。它即打算提供身份驗證以限定擁有特定密鑰方能進行網絡訪問,也想要提供機密性以在數據經過無線鏈路時予以加密。然而,它在這兩方面的表現都不是特別好。

802.1X是一個框架,它是IEEE采用IETF的可擴展身份驗證協議Extensible Authentication Protocol,簡稱EAP)制定而成,802.1X為鏈路層提供了身份驗證的機制。靜態WEP只是對擁有加密密鑰的機器進行身份驗證,而802.1X則允許網關人員對用戶而非機器進行身份驗證,同時可以確保用戶連接至合法,經過授權而非竊取個人數據的冒牌網絡。

1. 可擴展身份驗證協議(EAP)

EAP是一種簡單的封裝方式,可以運行於任何的鏈路層,EAP的基本架構如下圖所示,在設計上是為了能夠運行於任何的鏈路層以使用各種身份驗證方式。


圖1 EAP的架構

1.1 EAP的封包格式

EAP的封包格式如下圖所示,EAP並不是非得運行在PPP之上,下圖的封包可以通過任何一種幀來承載。


圖2 EAP的封包格式

  • Code

    Code(類型代碼)長度為1個字節,代表EAP封包的類型,封包的Data(數據)字段必須通過此字段來解析

  • Identifier

    Identifier(標識符)用來匹配請求與響應,重傳時會使用相同的identifier number,新的重傳則使用新的identifer number

  • Length

    Length字段記載了整個封包的總字節數,包括Code、Identifier、Length以及Data這4個字段

  • Data

    Data字段長度不定,可能不占任何字節,Data字段如何解析完全取決於Code字段的值

1.2 EAP的請求與響應

EAP的交換操作由請求與響應構成,如下圖所示。Code字段的值為1代表請求,2代表響應,Data字段會攜帶一種數據,可細分為type identifier code以及associated data。


圖3 EAP的請求與響應封包的格式

  • Type

    Type(類型)字段代表請求或響應類型。每個封包只能使用一種類型,當無法接受某個請求時,對方可以送出一個NAK來提議使用不同的類型。大於等於4的Type字段值代表身份驗證方式

  • Type-Data

    Type-Data(類型-數據)字段長度不定,必須根據每種類型的規則加以詮釋

類型代碼字段對應的消息如下表所示:

Type Message 含義
1 Identity 認證者通常會以身份類型作為最初的請求,簡寫為Request/Identity,表示認證者試圖建立某種用戶名稱以便進行身份驗證,EAP客戶端程序會響應一Response/Identity封包,封包的Type-Data字段包含了用戶名稱
2 Notification 認證者可以使用Notification類型傳送消息給用戶,用戶的系統隨后可將Request/Notification中的消息顯示給用戶看,例如密碼即將過期或者賬號被鎖定的原因。EAP客戶端會響應一個簡單的確認
3 NAK null acknowledgment主要用來建議使用新的身份驗證。認證者會在送出的質詢(challenge)消息中指定身份驗證所使用的類型代碼,身份驗證類型的代碼為4及以上的數字,如果用戶的系統不支持質詢所使用的身份驗證類型,可以恢復NAK,NAK的Type-Data字段包含器所建議使用的認證類型

表1 EAP的請求與響應數據的Type字段的取值和含義

1.3 EAP身份驗證方式

EAP會把證明用戶身份的操作授權給一個稱為EAP method(一組驗證用戶身份的規則)的附屬協議,下表列出了一些EAP method以及它們的類型代碼。

類型代碼 身份驗證協議 說明
4 MD5 Challenge EAP中類似CHAP的認證方式
6 GTC 原本打算與RSA SecurID之類的令牌卡(token card)一起使用
13 EAP-TLS 以數字證書(digital certificate)相互認證
21 TTLS 隧道式TLS,以TLS加密保護較弱的身份驗證方式
25 PEAP 防護型EAP,以TLS加密保護較弱的EAP方式
18 EAP-SIM 以移動電話的用戶識別模塊(Subscriber Identity Module,簡稱SIM)卡進行身份驗證
29 MS-CHAP-V2 Microsoft的經加密的密碼身份驗證,見冗余Windows域

表2 802.1X身份驗證常用的EAP認證方式(EAP method)

在EAP交換結束之后,用戶不是認證成功,就是認證失敗。一旦認證者判斷出整個交換過程已經完成,就會發出一個EAP-Success或EAP-Failure幀,以結束整個EAP交換過程,如下圖所示。


圖4 EAP認證成功與失敗的幀

1.4 EAP交換范例

EAP交換范例如下圖所示,這並不是無線網絡中“實際”可見的交換過程,因為其中用到了一些未曾廣泛部署的協議。舉這個例子只是為了讓讀者對EAP協議的運作方式有基本的概念。EAP交換過程是一系列的步驟,從認證請求開始,以成功或失敗信息結束。


圖5 簡單的EAP交換過程

可擴展性既是EAP最大的優點也是最大的缺點。可擴展性讓協議能夠在有新的需求福顯示開發新的功能。正因為可擴展性,EAP已經從保留PPP協議編號的方式轉變為無線局域網安全防護的基礎。不過要正確部署EAP可能不容易,因為要選擇正確的協議選項之前必須先理清一大堆問題。EAP之所以具有靈活性,關鍵在於它本身只是一個框架,當新的需求浮現時就可以設計出新的認證方式,就算是用於無線局域網也不成問題。

2. 802.1X:網絡連接端口的認證

在鏈路層采用認證機制並不是什么新鮮事,網絡連接端口的認證在撥號訪問服務器上已經使用了多年,IEEE采用了PPP認證協議並開發了基於局域網絡的版本,最后出爐的標准稱為802.1X,“基於端口的網絡訪問控制”(Port-Based Network Access Control)。

2.1 802.1X的架構及相關術語

  • 申請者(supplicant)

    尋求訪問網絡資源的用戶機器

  • 認證者(authenticator)

    網絡訪問由認證者(authenticator)控制,它扮演着傳統撥號網絡中訪問服務器的角色,申請者與認證者在規范說明書中稱為端口認證實體(Port Authentication Entity,簡稱PAE)。

  • 認證服務器

    認證者只負責鏈路層的認證交換過程,並不維護任何用戶信息。任何認證請求均會被轉送至認證服務器進行實際的處理

申請者與認證者之間使用802.1X所定義的EAPover LAN(簡稱EAPOL)協議,在后端則是通過RADIUS封包來傳遞EAP,如下圖所示。


圖6 802.1X的架構

2.2 EAPOL的封裝格式

EAPOL的基本幀格式如下圖所示。


圖7 EAPOL的幀格式

EAPOL幀的組成字段如下:

  • MAC標頭

    根據鏈路層協議使用相應的標頭。

  • Ethernet type

    Ethernet type(以太網類型)字段包含了長度為2個字節的type code(類型代碼),EAPOL的類型代碼為88-8e。

  • Version

    第一版標准化於2001年版的802.1X,第2版規范與802.1X-2004。

  • Pocket Type

    為了讓EAP能夠適用於基於連接端口的LAN環境,EAPOL加入了一些消息類型,下表列出了所有的封包類型及其說明。

    封包類型 名稱 說明
    0000 0000 EAP-Packet 包含了一個經過封裝的EAP幀,大部分的幀均屬於EAP-Packet幀
    0000 0001 EAPOL-Start 申請者可以主動送出EAPOL-Start幀,不必等候來自認證者的質詢
    信息。認證者會送出一個EAP-Request/Identity幀作為響應
    0000 0010 EAPOL-Logoff 當某個系統不再需要使用網絡時,便可發出一個EAPOL-Logoff幀,
    讓連接端口重新回到未授權狀態
    0000 0011 EAPOL-Key EAPOL可用來交換加密密鑰信息
    0000 0100 EAPOL-Encap-
    sulated-ASF-Alert
    警告標准討論(Alerting Standards Forum,簡稱ASF)
    定義了一種方式,可讓警告信息通過此類型的幀傳送給
    未經授權的連接端口
  • Packet Body Length

    該字段用來計算Pocket Body字段的長度。

  • Packet Body

    除EAPOL-Start與EAPOL-Logoff消息外,此字段會出現於所有的EAPOL幀中。EAP-Packet幀所封裝的是一個EAP封包,EAPOL-Key幀所封裝的是一個密鑰,而EAPOL-Encapsulated-ASF-Alert幀所封裝的則是一段警告信息。

3. 802.1X與無線局域網

802.1X為任何局域網,包括無線局域網,提供了一個用戶認證的框架。802.11網絡中的802.1X交換范例如下圖所示。


圖8 802.11網絡上典型的802.1X交換

上圖802.11網絡上的802.1X交換步驟如下:

  1. 申請者通過Association Request/Association Response關聯至802.11網絡;
  2. 申請者發出一個EAPOL-Start消息,開始進行802.1X交換過程。這個步驟並非必要;
  3. “正常的”EAP交換過程開始。認證者發出一個EAP-Request/Identity幀,申請者以EAP-Response/Identity幀進行回復,此幀隨后被轉換為Radius-Access-Request封包送給RADIUS服務器;
  4. RADIUS服務器判斷需要使用哪個類型的認證,並在送出的EAP-Request信息中指定認證方式的類型。EAP-Request被封裝於Radius-Access-Challenge封包中送給接入點。接入點收到封包后即將EAP-Request傳遞給申請者。EAP-Request信息通常會被表示成EAP-Request/Method,其中Method代表所使用的EAP認證方式;
  5. 申請者從用戶方面取得響應,然后返回EAP-Response。認證者會將此響應轉換為送給RADIUS的Radius-Access-Request封包,針對質詢信息所做的響應則存放於數據字段中;
  6. 既然RADIUS服務器送出一個Radius-Access-Accept封包允許對方訪問網絡,因此認證者會發出一個EAP-Success幀並且授權申請者使用連接端口;
  7. 收到EAP-Success封包的確認(ACK)后,接入點會立即使用EAPOL-Key消息將密鑰分配給申請者;
  8. 一旦申請者安裝好密鑰,就可以開始傳送數據幀來訪問網絡;
  9. 當申請者不再需要訪問網絡,就會送出一個EAPOL-Logoff消息,使連接端口恢復成未授權狀態。

EAPOL-Key幀讓接入點能夠傳送密鑰給客戶端,密鑰交互幀只有在認證成功之后才會傳送,這樣可以避免密鑰信息外泄。EAPOL-Key幀也可以用來定期動態更新密鑰。


免責聲明!

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



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