簡介
如今Internet用戶都需要連線到ISP以取得網路服務,同時也有許多個人需要將家中的個人計算機互聯起來,他們一般都有撥號電話線路或租用的電話專用線路。然而這些線路都只是提供了點到點之間的一條物理鏈路,要在物理鏈路上進行通信必須藉助於某種通信協定來對鏈路進行控制。因此出現了兩種協定: SLIP和PPP。其中SLIP有以下一些缺陷:
只支持IP;
不允許IP位址的動態分配;
不支持用戶認證。
而PPP卻為點到點數據鏈路上傳輸多協定數據報提供了一種通用方法。為了在點到點物理鏈路上建立通信,在鏈路建立階段, PPP通信鏈路的每一端都必須首先傳送LCP數據包來對該數據鏈路進行配置協商。在鏈路已經建立起來後,在進入網路層協定進行實際的數據通信之前,PPP提供了一個可選的認證階段。預設時,認證並不是必需的。如果想要對通信鏈路進行認證,具體實現時必須在鏈路建立階段指定認證協定配置選項來說明要進行認證。起初PPP上支持的認證方式主要是PAP和CHAP,然而它們都不能擴展。對此,PPP協定現在增加了一種新的可擴展認證協定(EAP),它是PPP , 認證的一個通用認證協定 在它上面可以支持多種認證機制,也就是說它提供了在PPP上進行多種認證的底層框架其它各種具體的認證機制都是建立在它之上的。 ,具體來講, EAP在鏈路建立階段並沒有選定某一種特定的認證機制,只需說明要使用EAP , 認證即可 而把具體認證過程推遲到後面一個獨立的認證階段。在這一階段進行認證方式的協商和具體認證過程,並由認證成功與失敗的結果來決定是否進入網路層以使網路層數據能夠在鏈路上進行傳輸。
可擴展認證協定(Extensible authentication protocol,
EAP)是一個第二層處理過程,允許網路對無線客戶端進行認證。有兩種EAP:一種用於無線網路,另一種用於LAN
連線,通常稱為 EAP over LAN(EAPoL)。無線環境中的一個問題是要允許WLAN設備與AP 後面的設備進行通信。有3個標準定義了此過程:EAP,802.1x和遠程認證撥入用戶服務(Remote authentication dial in user service, RADIUS )。EAP定義了標準的認證信息封裝方法,如AP用於對用戶進行認證的用戶名和密碼和數字證書。EAP本質上是點對點協定(PPP)的擴展,第一種EAP是EAP-MD5,它使用挑戰握手認證協定(challenge handshake authentication protocol, CHAP)進行認證,下面是一些EAP擴展(介紹其中EAP-MD5和EAP-TLS)。
EAP設計思想
設計思想:PPP主要作用於兩層,數據鏈路層和物理層。PPP根據雙方的選項協商、認證協商等來控制串列網路設備數據鏈路是否允許某些特定的網路層數據是否可以通過。網路層是建立在數據鏈路層之上的,當數據鏈路層有來自物理層的數據時,它將處理得到的數據,即根據數據幀協定域的不同而對網路協定數據進行分流,將不同協定的數據分別發往相應的上層網路協定輸入佇列,並相應地給它們發一個軟中斷,以通知上層對輸入佇列進行處理。只需通過檢測認證過程的成功與否來決定是否將鏈路交給相應的上層網路使用,具體如圖所示。
下面是具體的設計與實現:首先設計一個用於EAP認證配置信息檔案,PPP用此檔案來獲得EAP認證的客戶與伺服器的認證選項信息。有PPP一個從檔案中獲取各種認證選項信息的通用子程式,通過它可把與EAP認證有關的選項參數加入到的PPPLCP配置選項列表中。如果真的要進行EAP認證,則在LCP傳送LCP配置包時,對方將知道要進行EAP認證。同時將EAP的通信認證過程設計為一個有限狀態自動機。有限自動機的信息結構主要內容如下:
typedef struct eap_state {int es_unit;通信接口struct eap_auth client;客戶認證信息struct eap_auth server;伺服器認證信息…} eap_state;
其中認證信息主要包括通信雙方的名字、認證請求類型、請求序列號、逾時值等參數。它們是控制EAP有限自動機通信協商過程的依據。
EAP認證流程機制如下:首先在用PPP,向遠程端點進行連線時在鏈路建立階段表明要使用EAP認證之後當進行到認證階段時就進,行EAP認證過程:
認證一方向另一方首先傳送一個身份請求並等待對方發來,相應的回響。
對方在接到身份請求要求時,它應傳送一個身份回響包,它們的ID必須相同。
ID認證方檢查包類型是否是身份回響包,且是否與傳送請求時一致,如不一致則看是否到達了最大次數,如果沒到則重發身份認證請求同時可選擇性地傳送一,個notification來傳遞一些通知信息,如這樣的例子:包括帶一個逾時設定能(expiration)的口令,OTP0序列整數(接近),認證失敗警告等。在大多數情況下,notification不是必要的。
在接到身份回響時,認證方根據身份,檢查通信實體資料庫,以查找對應的認證方式如找到則開始傳送相應的認證請求。
對方在接到認證請求時,首先檢查它自己是否支持認證者所要求的認證請求如不支,持,則要傳送一個NAK,否認包攜帶自己允許的認證類型。如支持則傳送認證回響。
NAK認證者檢查回響包,如是否認包,則重發對方允許的認證請求。如是上一次的認證請求的回響,則檢查它是否是它所期待的回響以決定認證成功與失敗,從而決定鏈路的打開與關閉。
如上一步成功,向對方傳送認證確認包,以使對方把鏈路打開,通知上層網路控制協定進行網路通信協定參數的協商,隨著各個網路控制協定打開之後,PPP就把數據鏈路交給通信網路協定,這時雙方才可以進行實際的通信。
PPP當所有的上層協定都不再需要使用此數據鏈路時,將傳送中止鏈路請求包來結束數據鏈路。
EAP-MD5
支持使用CHAP和靜態密碼進行認證;
EAP-TLS
支持使用x.509v3數字證書進行認證;
802.1x和 RADIUS 定義了如何打包EAP信息,從而在網路上傳輸這些信息。 下圖中顯示了所使用的3中標準。802.1x描述了客戶端(通常稱為請求者)如何將EAP信息傳輸到網路訪問設備(認證者)。網路訪問設備可以是AP,交換機,路由器,VPN網關等。認證者使用RADIUS 協定將這些信息傳輸到認證伺服器,改伺服器會確認此請求者是否可以訪問網路。注意,認證者處通常沒有本地定義的用戶憑據,它通常在認證伺服器上查找此內容。