點對點協定通常用於兩個網路節點的直接連接,例如兩台電腦透過電話線的網路進行連接。除了可以網路直接的連接外,點對點協定也提供連線認證、傳輸加密、錯誤偵測以及資料壓縮等功能,本文將要介紹點對點協定的認證機制。
點對點協定的階層式架構
PPP協定使用階層式的架構,PPP協定可使用「同步實體媒介」、「非同步實體媒介」以及「整合服務數位網路(ISDN)」。PPP協定主要運作於OSI網路七層中的第二層,也就是資料連結層(Data Link Layer)。在PPP協定中的階層式架構,主要分成兩層,上層為NCP(Network Control Protocol),下層為LCP(Link Control Protocol),上層的NCP負責認證等等工作,並且與OSI網路架構的第三層協同運作,也因為NCP,PPP協定才能與各種不同的網路協定做整合。而下層的LCP則負責建立資料連結的連線,PPP協定提供不少種類的設定給LCP,以便建立資料連結的連線,主要是協調點對點的網路連線以及檢查網路封包訊框等等設定。
LCP的設定與特性
接著來看看在Cisco路由器設備的PPP協定中,LCP有哪些設定的內容。前面提到,LCP的主要工作是建立PPP協定的連線以及與連線相關的工作,而在Cisco的網路設備中,可能包含的工作就如表1所示。
表1 Cisco網路設備所提供的工作及協定
在Cisco路由器上與PPP協定相關的Load Balancing功能有時候會與Multilink協定(也就是MLP)有關,Cisco的IOS從11.1版本以後就開始支援MLP。MLP協定被定義於RFC編號1717文件內,MLP協定主要提供網路封包分割,以及將切割的網路封包做定序的工作。
點對點協定連線的建立過程
基本上,PPP協定連線的建立過程分成網路連線建立、認證確認、網路層協定處理等三個階段。
網路連線建立階段的主要工作是要建立PPP協定的連線,在這個階段中,每一個使用PPP協定的網路設備(例如Cisco路由器)都會發送LCP協定的網路封包,以便用來設定及測試網路連線。這個時候可以透過LCP協定的設定值來設定PPP協定的連線,其設定包含最多能接收的封包單位數目、壓縮設定以及認證協定的設定等等,如果此時沒有設定這些設定值,就會自動採用預設值。一旦網路連線建立,而且認證協定被決定之後,就代表連線的雙方的連線可進入認證確認的階段。而認證確認的階段可有可無,不一定需要這個階段也可以完成PPP協定的連線。PPP協定支援PAP和CHAP兩種認證協定。
最後一個階段就是網路層協定的處理階段,這個階段是必須的。在這個階段中,PPP協定會發送NCP協定封包來選擇,並且設定一個以上的網路層協定(例如IP協定等等),一旦決定了網路層的協定,雙方就可以開始發送網路封包。
點對點協定的認證機制
接下來介紹PPP協定的認證機制,PPP協定所使用的認證協定有PAP(Password Authentication Protocol)協定和CHAP協定,這裡分別介紹這兩種認證機制。
PAP認證機制
PAP認證協定是一種雙向握手(Two- way Handshake)協定,透過雙向握手的流程讓遠端的電腦或是網路設備進行辨識認證的工作。
一旦網路連線建立,而且認證協定被決定了之後,就代表連線雙方的連線可進入認證確認的階段。因此,認證的發生時間是在PPP協定連線建立之後就進行。進行時,遠端的電腦或網路設備會不斷地發送帳號和密碼到Cisco路由器,這樣的發送過程會一直持續,直到這個認證被接受或是這個PPP連線被中斷為止。
雖然PPP協定使用PAP認證協定,但PAP認證協定本身並不是一個很嚴謹的認證協定,因為PAP認證協定會把密碼用純文字的方式,也就是Clear Text來傳送,這也就代表傳送過程中,密碼是不會被加密過的,一旦有人攔截到這樣的網路封包,就可以直接看到密碼是什麼了。這樣的運作模式在大部分的網路環境中,是相當不安全的,除了Token Ring網路架構之外。不僅如此,PAP協定針對Playback和Trial-and-error的攻擊方式也沒有任何的保護措施。
CHAP認證機制
另外一種PPP連線的認證協定是CHAP(Challenge Handshake Authentication Protocol)認證協定,CHAP認證協定採用的運作流程是3-way Handshake。
如果使用CHAP認證協定,則當PPP連線建立階段完成後,Cisco路由器設備(本地端)就會發送所謂的Challenge封包給遠端的網路設備,接下來,遠端的網路設備會透過One Way Hash的方式,針對傳送過來的Challenge值和密碼,計算出一個特定的值,然後將這個特定的值傳回給原本發送的Cisco路由器設備,這裡所使用的One Way Hash方式一般都是使用MD5演算法。接著,本地端的Cisco路由器設備會根據已知的計算方式再次計算出Hash值,然後比對自己所計算的Hash值與收到的Hash值是否相同。如果兩個計算出來的Hash值相同,代表這個認證已經通過,否則就立刻中斷目前這個PPP連線。