摘要:針對IPSec協議在安全策略管理存在的問題,引入信任管理的思想,介紹了一種基于信任管理的IPSec安全策略管理方案。該方案對分布式網絡中的策略可以進行統一的描述,并通過一致性證明能夠實現策略的委托授權管理,這樣大大提高了IPSec安全策略管理效率和IPSec的靈活性。
關鍵詞:安全策略;授權;信任管理;一致性檢測
中圖分類號:TP309.6文獻標志碼:A
文章編號:1001-3695(2007)12-0151-04
0引言
IPSec(IP security)[1]協議棧是IETF提供的保護網絡層安全的協議標準。與其他層次上的安全保護相比,網絡層的安全保護具有許多優點:可以不修改其他層的應用程序對其應用進行安全保護;其他層的應用也可以自動透明地利用網絡層的安全服務。尤為重要的是,IPSec具有其他高層和低層不能具有的靈活性,如提供主機之間端到端的傳輸安全、提供路由到路由的多鏈路傳輸安全、提供邊界到邊界的可信網絡與不可信網絡之間的傳輸安全、提供特定節點的其他安全配置。因而,IPSec已經逐漸應用到桌面計算機、服務器、路由器和防火墻等操作系統中。雖然IPSec具有很強的靈活性,但其自身沒有明確的對進入和離開主機數據包處理的安全策略管理。在許多IPSec實施中,僅提供了基于數據包過濾和ACL策略的不健全策略管理機制,使許多安全服務不得不在應用層或傳輸層重復實施。同時,IPSec對基于數據包過濾處理是根據數據包的地址、端口、服務以及其他數據包參數信息SPI(security policy index)以位模式對SAD(security association database)進行查詢,對網絡的速率有更高的要求,這對于低速網絡環境(如防火墻)的應用十分不利。此外,當前IPSec的實現中,通常是由管理員提供安全策略的配置,因而密鑰的擁有者(如證書的持有者)就可以創建任意類型的SA(security assocation,安全關聯),而其他用戶則沒有一點權利可言。從而只有擁有SA的用戶或可信網絡的用戶才能得到IPSec的安全服務。在分布網絡環境中委托授權是十分常見的事實,但現有的IPSec實施中不能解決安全策略的授權處理問題,以至于IPSec的靈活性在分布網絡環境中受到很大的限制。本文分析了IPSec數據包處理的安全策略管理控制機制,借助信任管理的思想并引入KeyNote信任管理系統對IPSec安全關聯的建立和安全策略的管理進行統一的一致性檢測,使在分布網絡環境中IPSec安全策略的管理更加有效,能夠實現安全策略的授權使用,具有授權的用戶就可以創建自己的SA實現安全傳輸。
1IPSec數據包處理
IPSec協議棧建立在網絡層,對IP數據包進行高強度的安全保護處理,能提供數據源驗證、無連接數據完整性、數據機密性、抗重播和有限業務流機密性等安全服務。IPSec協議棧主要包括IKE(Internet key exchange)協議[2]、ESP(encapsulation security payload)協議[3]和AH(authentication head)協議[4]。IKE協議主要實現Internet密鑰交換和安全策略系統建立,利用IKE能動態地建立SA ,并保障建立過程的安全。ESP協議主要實現通信傳輸的IP數據包的保密性、完整性和認證安全保障。AH協議主要實現通信傳輸的IP數據包認證和完整性安全保障。在IPSec實施安全服務過程中有兩個重要的概念,即安全策略和安全關聯。安全策略是指控制網絡層的傳輸流、主機以及應用的傳輸流的安全方法,無論數據包到達還是離開網絡安全終端(主機、網關、路由、防火墻)均要執行安全策略控制數據包的處理。安全關聯是指與保護的數據包相關的加密和認證的密鑰、加密和認證的方法等信息。IPSec的安全服務是基于數據包封裝實現的,即根據數據包對應的SA應用密碼體制將其進行封裝,從而實現數據包在網絡中間節點的安全傳輸。離開網絡的數據包在發送之前必須進行加密、認證、封裝處理;進入網絡的數據包必須進行解封、驗證、解密處理,在整個過程中終端節點使用的密鑰都是通過IKE來協商和管理的。IPSec數據包處理過程[5]如圖1所示。
1)輸入數據包的處理#1:數據包從網絡到達安全終端時,安全終端首先調用IP輸入路由處理器判斷數據包是否是保護的數據包。如果數據包不是保護的數據包,則調用#2.1進行傳統數據包處理以轉發或丟棄;否則,調用#2.2進入IPSec處理器并進行#3查詢SAD數據庫,檢查該數據包是否有相關的SA(有無正確的密鑰材料)。如果有就解封數據包,解封后數據包如果有效則調用#4傳輸到高層處理(解封后的數據包如果原地址無效或試圖訪問非法的端口則是無效數據包,丟棄數據包);如果無密鑰材料則丟棄數據包。
2)輸出數據包處理#1′:數據包離開網絡傳遞時,安全終端首先調用IP輸出路由處理器判斷數據包是否要進行保護,如果無須進行保護則調用#2.1′進行轉發或丟棄;否則調用#2.2′進行IPSec處理,并通過#3′查詢SAD數據庫檢查是否有相應的SA。如果有則進行相應的安全保護并由#9′傳輸到低層處理;否則可能丟棄數據包或排隊等待可用的SA使用,或者通過#4′調用SA處理器觸發IKE,并通過#5′調用IKE處理器,IKE處理器通過調用#6′進行IKE交換生成新的SA;同時由#7′和#8′分別更新SAD和SPD數據庫。
從上面分析可以發現,基于SA的數據包過濾策略在數據包出入網絡時都必須執行該策略,這就要求足夠快的網絡速率才能保證網絡的效率。對于低速網絡環境,這種機制不實用。因而,許多網絡層實施基于包過濾策略的實體(如防火墻)必須配置簡化的基于包過濾語言來指定數據包頭的地址、端口、服務以及數據包其他選項等參數的位模式(SPI)數據包路由處理規則。同時,在當前的IPSec實現中,通常IPSec管理員提供安全策略的配置。在這種情況下,密鑰的擁有者(證書持有者)可以創建其希望的任意類型的SA,其他用戶沒有任何創建權限,也不支持委托授權策略模式實現網絡層的安全保護。
2信任管理與KeyNote系統
信任管理[6]自從1996年M.Blaze等人提出之后,出現了許多的相關研究。該方法具有直接授權、統一安全策略表示、委托授權、信任關系、形式化證明以及本地策略一致性檢測等功能;同時具有靈活性、通用性和可靠性等特點,可以解決傳統安全機制在開放的分布式網絡環境中的認證機制、無委托授權機制、安全策略表示、統一策略和信任管理等問題。該方法能夠全面解決分布式環境中的授權訪問應用。
2.1信任管理
信任管理是一種以公鑰為主體、可以直接對公鑰進行授權的、以公鑰為中心的授權機制。在信任管理中將公鑰與其授予的權限[7]、密鑰持有者的各種屬性和可編程的能力采用具有強表達性的憑證(credential)進行捆綁[8]。其授權就成為“憑證集合C是否證明了請求r符合本地安全策略P”的一致性證明問題[9]。在信任管理系統中可以通過編程實現憑證安全策略、憑證以及信任關系的統一表示;同時可以靈活、通用、可靠地解決開放式分布環境中的授權問題。信任管理方法歸納起來具有以下內容:
a)對等授權模型。每個實體可能是授權者、訪問請求者、第三方憑證的分布者。授權者實體維護本地策略并作為授權策略的最后依據;訪問請求者實體維護一組證書并在請求時依據一定方式進行提交,供授權者證明參考。在信任管理中沒有任何的隱含信任假設(可信第三方概念),信任模型完全由本地控制,更加靈活、更具有可擴展性。
b)編程授權證書。授權證書是將公鑰與授予的權限進行捆綁,從而形成信任關系。在信任管理中使用授權證書實現授權,授權過程就是一致性證明過程。授權證書可以進行編程,即允許對授權項進行編程,以實現現實世界的復雜信任關系。
c)通用證明機制。信任管理系統采用通用獨立于應用的管理引擎,其一致性檢查算法與特定應用語義無關;形式化證明方法實現尋求請求服從策略的形式化證據。信任管理引擎的授權決策僅僅依賴調用該引擎的應用輸入,與引擎設計和實現中隱含的決策無關。這樣有利于授權的可靠性和程序代碼的重復使用。
一個信任管理系統可以理解為測試請求是否遵循本地安全策略的標準接口。信任管理系統具有描述行為的方法、鑒別主體的機制、應用策略語言、憑證語言和一致性檢測器(compliance checker)特征。
2.2KeyNote信任管理系統
KeyNote[10,11]是M.Blaza等人沿用了PolicyMaker[12]的大部分思想和原則設計實現的第二代信任管理系統。它是一個簡單靈活的信任管理系統,可以很好地在不同應用環境中應用。在KeyNote中使用特定的斷言語言描述策略和憑證,其語言簡練、功能強大,并與一致性檢查算法緊密結合在一起。斷言(assertion)是KeyNote編程的基本單位。一個斷言由一個(f,s)描述。其中:f描述授權的程序;s是斷言的發布者。斷言包含可編程的操作請求屬性集的謂詞和限制主體執行行為的謂詞。憑證斷言必須使用發布者的公鑰進行簽名,在使用前必須對簽名進行驗證以保證憑證斷言的可靠性;策略斷言由信任的根發布,不需要進行簽名。同時,數字簽名的斷言可以發布到整個不可信任的網絡中,具有傳統證書角色功能。與傳統策略系統不同的是,KeyNote的策略采用簽名和不簽名結合的形式;KeyNote允許創建實體有限授權執行確定類型的安全行為的任意安全策略。
在調用KeyNote時,首先必須提供請求、一系列憑證和公鑰等輸入信息。KeyNote一致性證明算法采用深度優先算法(DFS),根據提供的輸入信息和本地安全策略試圖找到能滿足請求r的至少一個策略斷言。當請求r的一致性證明成功時(根據本地安全策略做出“贊成”行為),KeyNote將構造一個由請求、斷言以及信任條件組成的斷言的有向圖。KeyNote的斷言由結構域ASCII來描述,包括authorizer發布者(授權者)、licensees被授權者(一個或多個主體)、conditions授權條件[10]等。例如下列斷言是“POLICY”主體在郵件地址為zhouquan@gzhu.edu.cn的情況下,將其權限委托給Balza M主體。
Authorizer: “POLICY”
Licensees: “Zhou Quan”
Conditions:EmailAddress==“zhouquan@gzhu.edu.cn”
由于KeyNote信任系統中采用特定的斷言、語言描述策略斷言和憑證斷言,并且KeyNote負責憑證的簽名驗證和安全策略的一致性證明,從而有利于標準化和廣泛使用,也有利于減輕應用系統的系統開銷負擔,提高系統效率。
3基于信任管理IPSec安全策略控制
基于信任管理的IPSec安全關聯控制可以簡單地描述為當創建SA(IKE交換)時,需要執行一致性檢查處理,使數據包過濾規則適合兩個主機各自高層的安全策略[12]。采用信任管理控制IPSec安全策略管理系統的框架如下:
a)主機擁有自己的KeyNote策略控制器管理SA創建。策略描述了數據包的類型、在何種環境下主機可以初始化創建SA,并且描述什么類型的SA允許與其他主機建立連接。
b)當主機需要創建SA時,它們可以各自向對方建議完成其通信的最小的包過濾規則。每個主機依據支持主體的憑證(證書)發送包過濾規則的建議,這些憑證可以包括任意的可信Web、可信第三方證書。其委托結構完全可以獨立執行。
c)主機通過調用KeyNote解釋器進行一致性檢查,判斷包過濾建議是否與本地安全策略一致。如果一致性檢測通過,則創建包含確定數據包過濾規則的SA。
整個框架將策略管理分為兩部分,即數據包過濾和信任管理。前者是數據包過濾部分,后者是協商與判定值的信任的信任管理部分。這樣有利于提高數據包策略處理效率,對于大型網絡更加容易詳細描述安全策略,同時策略自動分類體系也更加易于實現。
在這種體系中,KeyNote的憑證在IKE的交換中可以直接傳遞,如同X.509證書模式在IKE中使用一樣。同時系統接受通過任意途徑的委托授權,以至于在策略規范中十分靈活。在IKE的交換期間接收到的任何簽名憑證均要作為查詢的一部分直接傳遞到KeyNote的解釋,作為一致性檢查的輸入。在遠程管理方面,許多遠程IPSec終端的策略是被中心管理員控制的,終端主機的策略委托授權于中心管理員的公鑰。管理員可以分發包含策略詳細內容的、作為每個交換的IKE一部分提供于請求訪問主機的憑證,從而可以減少對大量策略記錄更新的系統開銷。當需要增加新主機時,僅僅要求管理員向該主機發放一個新的憑證,新主機可以使用該憑證與其他任何適合上面策略的主機進行通信,其他主機無須進行策略變動。當撤銷主機訪問時,可以通過減少憑證的生存期并進行發布來實現,客戶可以通過WWW或FTP服務器周期地下載可用的新憑證。在系統考慮憑證的機密性時,可以在其使用之前用用戶的公鑰對憑證進行加密。整個系統中,不管使用怎樣的驗證方法,在充分考察策略、憑證和相關SA的屬性進行一致性檢查后,KeyNote解釋器返回“贊成”或“拒絕”回答。前者允許協議正常交換處理建立SA;后者將向遠程主機發送一個消息并丟棄交換協商。
3.1IPSec安全策略輸入控制
基于KeyNote信任管理的IPSec控制管理[13]的輸入處理數據流如圖2所示。
#1:數據包從數據鏈路層到達IP路由處理器;#2:路由處理器首先查詢SPD數據庫,判斷IP數據包處理的規則有以下三種可能:如果IP數據包無須IPSec保護,就轉入#3.1進行轉發或丟棄;如果需要保護則轉入#3.2 IPSec處理器,IPSec處理器根據#11查詢SAD數據庫的結果對IP數據包解封,解封后的數據包通過#12反饋到IP輸入處理隊列,再根據數據包過濾規則轉入#3.1進行轉發或丟棄;否則轉入#3.3觸發SA處理器。SA處理器通過#4查詢SAD數據庫。如果找到相關的SA,表明數據包已經作為IPSec數據包由#3.1處理了,則丟棄數據包;否則用數據包相關參數如IP地址、協議、端口號等詳細信息作為輸入,通過#5調用KeyNote解釋器。KeyNote解釋器通過#7進行一致性檢查,并返回對數據包的處理結果,如需要IPSec保護、接受、丟棄。如果需要IPSec保護,則通過#6觸發IKE處理器,IKE處理器根據#8策略憑證數據庫查詢結果,通過#9.1調用IKE交換創建SA;在IKE交換中可能調用#9.2更新策略憑證數據庫,同時要通過調用#9.3和#10分別更新SAD和SPD數據庫。如果是接受則根據#7查詢到委托授權的相關策略和SA,轉入到IPSec處理器進行處理。如果是丟棄說明該數據包不需要IPSec保護。
3.2IPSec安全策略輸出控制
基于KeyNote信任管理的IPSec控制管理的輸出處理數據流如圖3所示。
#1:從高層轉發來的數據包到達IP輸出路由處理器;#2:輸出路由處理器根據SPD數據庫查詢的結果判斷數據包是否需要進行保護,如果不需要保護則通過#3.1進行簡單轉發或丟棄;否則通過#3.2調用IPSec處理器。IPSec處理器調用#4查詢SAD數據庫,檢查是否有相關的SA。如果有,就對數據包進行相應的封裝處理,并通過#11傳輸到低層處理;否則調用#4.1觸發SA處理器。SA處理器通過#5調用KeyNote解釋器查詢數據包相關的策略憑證數據庫(根據本地策略進行策略一致性檢查),如果一致性檢查通過,則通過#6調用IKE處理器;否則將數據包丟棄。IKE處理器根據#7本地策略和憑證一致性檢查的結果進行#9.1 IKE交換,同時通過#9.2進行本地策略憑證的更新。如果IKE交換結果創建了SA,則通過#9.3將其存儲在SAD數據庫中,并通過#10對相應的SPD數據庫進行更新。最后根據創建的SA對數據包進行IPSec封裝處理或丟棄(沒有生成SA,數據包不進行保護)。
4結束語
本文通過分析IPSec策略管理中存在的問題,將信任管理的思想引入到IPSec策略管理,并根據KeyNote信任管理系統詳細描述了信任管理系統在IPSec安全策略管理控制中的數據處理流程。通過KeyNote信任管理系統統一的斷言語言描述策略和憑證,方便地實現IPSec安全策略的委托授權和控制。而KeyNote負責對憑證驗證和安全策略的一致性檢查,可以大大減小IPSec處理的負擔,從而提高系統的效率。同時,KeyNote語言是獨立于應用系統的,因而該體系很容易實現IPSec和數據包過濾的其他網絡安全策略的概念描述和管理[14]。該體系為IPSec安全策略管理提供了統一的環境,大大提高了IPSec安全策略管理的效率;同時可以解決IPSec安全策略和安全關聯的委托授權及統一管理,使IPSec在分布式網絡環境中應用更加廣泛靈活。
參考文獻:
[1]KENT S,ATKINSON R. RFC 2401, Security architecture for the Internet protocol[S].[S.l.]:IETF, 1998.
[2]KENT S,ATKINSONR. RFC 2409, The Internet key exchange (IKE)[S].[S.l.]:IETF, 1998.
[3]KENT S,ATKINSON R. RFC 2406, Security IP encapsulating secu-rity payload(ESP)[S].[S.l.]:IETF, 1998.
[4]KENT S, ATKINSON R. RFC 2402, IP Authentication Heard[S].[S.l.]: IETF, 1998.
[5]周權,肖德琴,唐屹.基于Linux和IPSec的VPN安全網關設計與實現[J].計算機應用研究,2005,22(9):229-234.
[6]BLAZE M,FEIGENBAUM J,LANCY J.Decentralized trust management[C]//Proc of the 17th Symposium on Security and Privacy.New York:IEEE Computer Society Press,1996:164-173.
[7]ELLISON C. SPKI/SDSI certificate documentation[EB/OL].[2006-07].http://world.std.com/~cme/html/spki.html.
[8]HALLQVIST N,KEROMYTIS D A.Implementing Internet key exchange(IKE)[C]//Proc of the Annual USENIX Technical Confe-rence.[S.l.]:Freenix Track,2000:201-214.
[9]BLAZE M,FEIGENBAUM J,STRAUSS M.Compliance checking in the policy maker trust management system[C]//Proc of Financial Cryptography’98,Lecture Notes in Computer Science, LNCS 1465, Berlin:Springer-Verlag,1998:254-274.
[10]BLAZE M,FEIGENBAUM J,IOANNIDIS J,et al.RFC 2704,The KeyNote trust management system,version 2[S].[S.l.]:IETF,1990.
[11]BLAZE M,FEIGENBAUM J,KEROMYTIS D A.KeyNote:trust ma-nagement for public-key infrastructures[C]//Proc ofSecurity Protocol International Workshop.[S.l.]:Springer-Verlag,1999:59-63.
[12]CHU Y H,FEIGENBAUM J,LAMACCHIA B,et al.Referee: trust management for Web applications[J].World Wide Web Journal,1997,2(2):127-239.
[13]BLAZE M,IOANNIDIS J,KEROMYTIS A.Trust management and network layer security protocol[C]//Proc of Security Protocols Workshop.Berlin:Springer-Verlag,2000:103-118.
[14]BLAZE M,IOANNIDIS J,KEROMYTIS A.Trust management for IPSec[J].ACM Trans on Information and System Security,2002,5(2):95-118.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”