摘 要:介紹了RADIUS,TACACS+和DIAMETER三個提供AAA服務的主要協議的結構,分析其各自特點;根據現在網絡的發展對AAA服務的需求,從傳輸性能、安全性能、漫游代理、主動能力和屬性等方面比較、分析RADIUS,TACACS+及 DIAMETER協議的優勢與不足。研究和分析了DIAMETER協議不僅能滿足現有網絡的需求,還能滿足未來網絡發展的需要,是目前公認的較完善的AAA服務協議。
關鍵詞:AAA服務; RADIUS; TACACS+; DIAMETER
中圖法分類號:TP393.04文獻標識碼:A
文章編號:1001—3695(2007)02—0296—03
1 AAA服務
現在的Internet是高度商業化的網絡,如何安全、有效、可靠地保護網絡資源的合理使用和用戶的利益成為所有網絡服務提供者必須解決的問題。AAA服務就是針對這個問題,為網絡運營商提供一個對用戶進行有效管理的平臺。AAA即為Authentication(認證)、Authorization(授權)和Accounting(記費)。其中,認證是指對用戶身份的驗證;授權是指在用戶通過認證之后確定其可以享受的服務;計費是記錄用戶使用網絡資源情況的詳細信息,這些信息是計費的依據。AAA服務需求的產生,使得各種實現AAA服務的協議也應運而生,如眾多的認證協議CHAP,EAP,PAP,SPAP和S/Key等。而較早綜合實現AAA服務認證、授權、計費三大基本功能的主要有RADIUS(Remote Authentication Dial-in User Service)協議及TACACS(Terminal Access Controller Access Control System )協議。為了適應網絡發展的需要,這兩個協議也不斷完善。TACACS的最近版本是TACACS+,但是由于其固有的缺陷,應用并不是十分廣泛;而RADIUS協議通過自身的完善,逐漸成為公認的提供AAA服務的協議標準,為眾多廠商所采用,成功地應用于諸多ISP接入網絡中。但是最近幾年,各種新興網絡服務的出現,伴隨著各種方式接入網絡服務的用戶不斷增加,使得RADIUS協議的缺陷日益明顯,難以滿足日益復雜的AAA服務要求。為此,IETF的AAA工作組提出了能更好地滿足AAA服務需求的DIAMETER協議,作為下一代的AAA協議標準。
2 RADIUS協議分析
RADIUS最初是Livingston Enterprise公司開發的C/S(客戶機/服務器)模式的安全協議[6]。1997年1月,IETF發布了由Livingston,Merit,Daydreamer三家起草的關于RADIUS的RFC,即RFC 2058和RFC 2059,后修改為RFC 2138和RFC 2139。現在使用的版本是2000年6月提交的RFC 2865(Remote Authentication Dial In User Service),RFC 2866(RADIUS Accoun-ting)和RFC 2869(RADIUS Extensions)。
2.1 RADIUS的包格式
RADIUS是應用層協議,在傳輸層其報文封裝在UDP的報文中,再封裝進IP包。RADIUS默認認證端口為1812,默認計費端口為1813。RADIUS數據包格式如圖1[3]所示,各個域的數據是由左向右傳輸的。
在圖1中,RADIUS數據包分為五個部分[3]:
(1)編碼(Code)。一個八位字節,用來標志RADIUS包的類型。當收到的包的編碼域非法時,該數據包將被自動丟棄。
(2)標識符(Identifier)。一個八位字節,用于請求和應答的匹配。如果請求包具有相同的源IP地址、源UDP端口號,且在很短的時間內出現了相同的標識符,RADIUS就可以檢測到重復的請求。
(3)長度(Length)。兩個八位字節,表明該包的總長度。包的最小長度為20,最大長度為4 095。包的實際長度在長度域限定的范圍之外的字節在接收時不予處理;如果包的實際長度小于長度域給出的值,該包將被直接丟棄。(4)鑒別碼(Authenticator):十六個八位字節。用于鑒別客戶端和服務器端間的信息。RADIUS服務器和NAS的共享密鑰與請求鑒別碼和應答鑒別碼一起支持發、收報文的完整性和認證,同時,用戶密碼使用共享密鑰和鑒別碼通過MD5加密算法進行加密隱藏。
(5)屬性(Attributes):不限定長度。可以包含多個實例,用于描述RADIUS協議的屬性。同類型的各個屬性的排列應保持一定的順序,不同類型的各個屬性可以隨意排列。
2.2 RADIUS主要特點
RADIUS協議主要有以下幾個特點:
(1)客戶機/服務器模式:RADIUS的客戶端通常是網絡接入服務器(NAS),負責將用戶信息傳給指定的RADIUS服務器,并接收服務器的響應信息;RADIUS服務器端負責接收用戶的連接請求、對用戶進行身份驗證、返回用戶接入網絡的配置信息。RADIUS服務器還可以作為其他RADIUS服務器或其他類型的認證服務器的代理客戶端。
(2)網絡安全:RADIUS服務器端與客戶端之間的交互通過共享密鑰認證。共享密鑰不通過網絡傳輸。在傳輸過程中,所有用戶密碼均加密。
(3)靈活的認證機制:RADIUS服務器支持多種認證方式。當用戶提供用戶名和密碼時,它可以支持PPP, PAP,CHAP和UNIX Login等認證機制。
(4)協議的可擴展性:所有的傳輸信息都包含在可變長度的屬性字段,為了實際需要,用戶可以在對原協議無任何影響的情況下加入新的屬性值。
(5)UDP傳輸:在傳輸層上,使用UDP對其數據包進行封裝、傳輸。保證了傳輸的簡捷高效。
3 TACACS+協議分析
TACACS+是由Cisco公司提出的,是TACACS的第三版,此版本與前兩版不兼容。目前應用并不廣泛,主要在Cisco的產品中使用。
3.1 TACACS+的協議結構
TACACS+的協議結構如圖2所示。
圖2中,包結構分為七個部分:
(1)Major version:主要TACACS+版本號。
(2)Minor version:次要TACACS+版本號。在需要保持后向兼容時,允許修改TACACS+協議。
(3)Packet Type:包類型,可取值包括:TAC_PLUS_AUTHEN: = 0x01 (認證); TAC_PLUS_AUTHOR:= 0x02 (授權);TAC_PLUS_ACCT:= 0x03 (計費)。
(4)Sequence NO:當前會話中數據包序列號。
(5)Flag:該字段包括各種位圖格式的標志(Flag)。標志的值表明數據包是否進行加密。
(6)Session ID:該TACACS+會話的ID。
(7)Length:TACACS+數據包主體總長(不包括頭部)。
3.2 TACACS+協議的特點
TACACS+是Cisco在RADIUS的基礎上為彌補其不足作了一定修改而產生的協議,有很多與RADIUS相似的特點。其主要特點包括:
(1)客戶機/服務器模式:TACACS+采用與RADIUS一樣的客戶機/服務器模式來實現認證授權。
(2)網絡安全:TACACS+客戶端和服務器端之間采用共享密鑰認證,共享密鑰不通過網絡傳輸。在傳輸過程中,可以對所有的用戶信息進行加密。
(3)多協議支持:TACACS+提供多協議支持,包括RADIUS協議所不支持的AppleTalk遠程訪問協議、Net BIOS幀協議控制、Novell異步服務接口和X.25 PAD連接。
(4)協議的可擴展性:所有的交互都包含在可變長度的屬性字段,可以根據實際需要在對原協議無任何影響的情況下加入新的屬性值。
(5)TCP傳輸:在傳輸層上,使用TCP對其數據包進行封裝、傳輸。保證了傳輸的可靠性。
4 DIAMETER協議分析
DIAMETER協議是IETF為下一代AAA服務器提出的一套新的協議體系,由基礎協議、傳輸協議和一系列應用擴展組成。DIAMETER的協議框架結構如圖3所示。
圖3 DIAMETER協議結構框架
DIAMETER基礎協議定義了各個應用協議中相同的功能,主要包括性能協商、消息如何被發送、對等雙方最終如何結束通信等方面;還定義了一些規則用于DIAMETER節點間的消息交換;另外還說明了消息格式、傳輸方式和錯誤報告等。基礎協議一般不能單獨使用,需要與應用擴展協議相結合以提供具體的服務。應用協議則以基礎協議提供的消息傳送機制等為基礎定義應用標志、參與通信的網絡功能實體、相互通信的功能實體間的消息內容以及協議過程,最終完成特定的接入和應用業務。
DIAMETER協議定義了多個功能實體,主要包括:負責處理特定域的認證、授權和計費的DIAMETER服務器;完成接入控制的DIAMETER客戶端,實現消息透明轉發的DIAMETER中繼;DIAMETER Proxy代理;提供路由功能,負責為漫游的實體集中域與服務器之間的地址映射關系資源的DIAMETER重定向器;實現兩種不同協議間翻譯的DIAMETER翻譯代理等。
4.1 DIAMETER的數據包格式
DIAMETER定義了新的數據包格式,協議頭格式如圖4[1]所示。
圖4 DIAMETER協議的頭格式
圖4中數據包分為以下幾部分[1]:
(1)Version 版本號,必須為1。
(2)Message Length 消息長度,三個八位字節,指出整個DIAMETER消息的長度。
(3)Command Flags 命令標志,八位字節。R比特,置位表示請求消息,復位表示響應消息;P比特,置位表示消息可以被代理或中繼,復位表示只能由本地處理;E比特,置位表示消息中包含協議錯誤;T比特,在連接失敗處理時置此位以幫助清除重復請求;r比特,為將來的擴展預留位,必須置為0,被接收端忽略。
(4)Command-Code 命令代碼,三個字節,用于傳輸消息相關的命令。
(5)Application-ID 四個字節,標志該消息用于何種應用。
(6)Hop-by-Hop Identifier 逐跳標志,用于中間節點對請求和響應消息的匹配。
(7)End-to-End Identifier 端標志,用于發送或接收端檢測重復消息。
(8)AVPs 屬性值對。一般一個頭部后面可以有若干屬性值對,用戶的鑒別、授權和計費,節點間的資源利用情況,路由信息等均通過AVPs來傳輸。
4.2 DIAMETER基本協議的主要特點
DIAMETER協議最大的特點是上面介紹的框架結構。其基礎協議為各種應用擴展協議提供傳輸平臺,必須安全、高效、可靠。具體地說,DIAMETER的基礎協議具有以下特點[4]:
①大的屬性數據空間:DIAMETER中,數據對象封裝在AVP中。DIAMETER提供了更多AVP定義及地址空間。
②大量同步用戶請求支持:DIAMETER可以同時支持232個用戶請求,完全能滿足現在網絡用戶大量增加的實際需求。
③SCTP傳輸:為了控制重傳策略,DIAMETER采用可靠的、基于SCTP的傳輸機制和錯誤恢復機制。在保證傳輸效率的同時也保證了傳輸的可靠性。
5 AAA服務協議的比較
通過上面對各個協議的數據包結構及特點的分析,可以看出,RADIUS和TACACS+有很多相似之處,它們均實現了AAA服務的基本功能;結構上均采用客戶機/服務器模式;均使用共享密鑰對用戶信息進行加密;均有較好的擴展性等,但是在傳輸層協議、代理機制等方面也有一些不同。而DIAMETER從RADIUS中借鑒了很多,并保持了與RADIUS的兼容,但是它并不是RADIUS的改進版本,而是下一代AAA協議。我們從以下幾個方面對這三個協議進行了詳細的比較,分析得出各自的優勢與不足。
5.1 傳輸性能
RADIUS使用UDP。UDP能提供最優的傳輸,但在重傳、超時等方面沒有有效的處理機制,在廣域網中就常常會有丟失數據包的現象,影響了其可靠性。
TACACS+使用TCP。TCP提供面向連接的可靠的傳輸,在質量較差的網絡中有突出的優勢。但由于其重傳機制,使效率遠低于RADIUS協議,在大型的網絡中很難保證實時性。
DIAMETER協議運行在SCTP(Stream Control Transmission Protocol)或TCP協議之上。SCTP是一種面向流的傳輸協議,綜合了TCP和UDP的優點,提供數據流的可靠傳輸和有效的流量控制及擁塞控制[5]。SCTP協議可在DIAMETER協議內實現流量控制與負載平衡,并提供有效的重傳和失敗恢復機制。DIAMETER還采用了包括傳輸層的故障檢測、協議層和應用層的錯誤處理等有效機制來保證傳輸的可靠性。綜合來看,與前面兩個協議相比,DIAMETER協議具有最佳的傳輸性能。
5.2 安全性能
RADIUS協議僅對密碼本身進行加密,而對客戶端和服務器通信其他部分都是明文傳輸,對敏感信息不能進行有效地保護,而且缺少端到端驗證機制,無法有效地抵御重放攻擊[2]。另外,RADIUS支持代理功能,而且每個代理RADIUS服務器均有權修改用戶的認證計費信息,會造成安全缺陷。總體來說,RADIUS的安全性能比較差。
TACACS+對整個數據包進行加密,僅留下數據包頭,在數據包頭中僅表示該包是否加密。一般應用中都是加密的。對整個數據包加密保證了客戶端與服務器之間的通信安全。
DIAMETER為了適應大型網絡的復雜性,十分重視安全性能。TACACS+和RADIUS的安全性能都是建立在共享密鑰的基礎上,但是這樣的安全機制很容易受到攻擊,而且在大規模網絡中的應用比較困難。而DIAMETER協議允許有選擇地對消息中屬性進行加密,采用擴展認證協議、對敏感數據加密等方法來保證安全性。基于Diameter的AAA系統中可以采用多種安全機制,包括IPSec和TLS的支持。DIAMETER穿過中間代理,增加端到端驗證機制安全保護AVP的完整性和安全性。所以,DIAMETER也是目前所公認的在安全方面做得比較完善的AAA協議。
5.3 漫游及代理支持
TACACS+沒有代理機制,不能適應漫游和移動IP等新的應用要求,這是其應用遠沒有RADIUS廣泛的主要原因之一。
RADIUS雖然支持代理功能,但是沒有明確定義管理域間的通信和管理機制,加上其代理功能帶來的安全性問題,所以對漫游的支持很弱。
基于DIAMETER的AAA系統是分布式系統,對漫游的支持很充分。DIAMETER在基礎協議上定義了漫游擴展協議,為PPP漫游用戶提供了網絡域內和域間的認證和授權服務,使用NAI來支持漫游用戶的信息路由。DIAMETER協議還引進了Broker服務器,不同管理域的DIAMETER服務器可以通過Broker服務器建立漫游協定,解決了在多個管理域間建立完全漫游協定的問題。DIAMETER協議對漫游的充分支持使得它能很好地適應現代網絡發展的需求。
5.4 服務器主動發送消息能力
RADIUS協議和TACACS+協議均不允許服務器主動發送消息到NAS。當服務器需要主動要求時,只能通過其他的解決措施,如對協議進行私有擴張,但是這樣就會導致不同廠商的產品不兼容。
DIAMETER協議允許服務器主動發送消息請求,基礎協議定義了兩條這類消息,即請求客戶中止某個用戶會話和請求客戶對某一用戶重新進行鑒別。
5.5 屬性空間大小
隨著現代網絡的復雜化和服務的多樣化,用戶認證信息也越來越復雜,這就要求AAA協議的數據包可攜帶更多的信息。
RADIUS的消息地址空間和屬性空間均較小,不能適應現代網絡發展的需求;TACACS+雖然添加了一些屬性定義,但是仍然不能滿足需要;DIAMETER提供了更多的AVP類型定義和地址空間,還將RADIUS消息標識符由8位擴展到32位,允許更多未響應請求。為了滿足網絡開發商對命令和AVP的定制要求,DIAMETER在消息頭與AVP頭均設置了Vendor ID字段,為網絡經銷商提供了足夠的自定義空間。
6 結論
為了適應現代高密集性和高復雜性的網絡環境,AAA服務協議的發展要求具備以下特點:①具有可擴展性,可以方便地支持新的網絡技術和網絡服務;②具有有效的安全保護機制保護用戶的信息;③能穩定處理大量用戶請求等。RADIUS協議作為現在應用最為廣泛的AAA協議,還有很多缺陷,在安全性和漫游支持等方面都不能滿足未來網絡復雜性的要求。TACACS+協議雖然對RADIUS的不足作了一些改進,但它的低效率以及不能提供漫游支持等缺陷,使得其應用沒有RADIUS廣泛,更難以適應未來網絡的發展。而新一代的AAA協議——DIAMETER兼容了RADIUS,在設計上考慮到未來網絡發展的要求,充分借鑒了RADIUS的優點,彌補了RADIUS的不足之處,加強了安全性以及漫游支持能力等,很好地滿足了未來網絡發展的要求。
DIAMETER協議最終將取代RADIUS協議,成為AAA標準協議。但DIAMETER的各個擴展協議還在不斷完善中,DIAMETER的深入研究與廣泛應用還需要一定的時間。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。