陸睿++劉東
摘 要:針對XML語言在數(shù)字簽名和加密上的一些薄弱環(huán)節(jié),該文從訪問控制和單點(diǎn)登錄兩個方面提出了改進(jìn)XML安全性的方法。
關(guān)鍵詞:擴(kuò)展標(biāo)記語言(XML) 訪問控制 單點(diǎn)登錄
中圖分類號:TP309.2 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2014)04(a)-0033-01
XML安全性存在一些明顯的薄弱環(huán)節(jié)。如XML簽名只對XML標(biāo)記了的數(shù)據(jù)進(jìn)行處理,使得不同的格式數(shù)據(jù)在哈希算法中產(chǎn)生不同的值。另外XML加密由于XML的靈活性而容易遭受攻擊。下面從訪問控制和單點(diǎn)登錄兩個方面研究分析解決安全性的方法。
1 訪問控制的改進(jìn)
由XML衍生出來的XML訪問控制標(biāo)記語言(XACML)提供了服務(wù)器端關(guān)于訪問控制策略的一系列規(guī)則。XACML策略可以引用別的策略,還可以智能地融合與其沖突或重疊的規(guī)則集。如果所提供的算法集還不充分的話,應(yīng)用開發(fā)者可根據(jù)自身需要進(jìn)行新的定義。
傳統(tǒng)的基于身份的訪問控制(IBAC)是一種不能良好擴(kuò)展的控制方法,定義重復(fù)而冗長,因為它所遵循的規(guī)則需要對每一個身份進(jìn)行定義。而較新的基于角色的訪問控制(RBAC)是直接將訪問許可與訪問者身份代碼或符合訪問者身份的規(guī)則相關(guān)聯(lián)。RBAC要求訪問策略為系統(tǒng)中的所有角色進(jìn)行定義,然后將訪問者身份代碼映射到這些角色上。這種方式同樣具有很大局限性,從系統(tǒng)頑存性的角度,一個擁有特定權(quán)限同時扮演特定角色的訪問者應(yīng)該擁有與這一角色相關(guān)聯(lián)的所有權(quán)利。最新的基于屬性的訪問控制(ABAC),其策略規(guī)則的定義基于主體(用戶、應(yīng)用、進(jìn)程等)、受訪問資源(網(wǎng)絡(luò)服務(wù)、數(shù)據(jù)等)的屬性,和它們的環(huán)境(時間、威脅等級、安全等級等),這就能夠提供比RBAC更為精細(xì)的訪問控制策略。
針對傳統(tǒng)訪問控制的缺陷,利用ABAC的這一特性,可以使用安全等級標(biāo)簽來創(chuàng)建規(guī)則,允許XACML策略與強(qiáng)制訪問控制(MAC)同時使用,并制定分級的安全策略以確保其高效性。訪問控制是安全性的重要部分,應(yīng)該支持多種形式和不同等級的應(yīng)用。在一個高安全等級的系統(tǒng)中,低強(qiáng)度的訪問控制只能用于一般信息的訪問,如果訪問重要信息,則需要更高等級的訪問控制。其中,低強(qiáng)度訪問控制可以與RBAC協(xié)同實施,角色的操作權(quán)限與用戶身份相關(guān)聯(lián)。例如,一個系統(tǒng)管理員角色能夠允許他以任何用戶身份登錄系統(tǒng),而普通用戶只能擁有較低的系統(tǒng)權(quán)限。而雙重精確訪問控制應(yīng)該評估具體的用戶特性,從而通過ABAC進(jìn)程做出判斷。在這種情況下,可以基于用戶特征實施更為精確的權(quán)限評估。比如,這些特征反映出當(dāng)訪問分段數(shù)據(jù)時,必須對特殊許可證進(jìn)行認(rèn)證。也就是說,擁有特殊許可證的用戶只能訪問他們必須知道的分段數(shù)據(jù),而不是具有同樣安全等級的所有數(shù)據(jù)。
2 單點(diǎn)登錄的改進(jìn)
SSO是標(biāo)記授權(quán)認(rèn)證機(jī)制,在這種機(jī)制下,請求者被提供一個顯示其已經(jīng)通過認(rèn)證服務(wù)器的標(biāo)記,系統(tǒng)內(nèi)的其他服務(wù)器可以不需額外認(rèn)證即接受這一標(biāo)記,以簡化用戶認(rèn)證過程。SSO標(biāo)記存在的安全問題之一,假定標(biāo)記只在安全通道內(nèi)傳輸,意味著認(rèn)證服務(wù)只能向認(rèn)證用戶提供標(biāo)記,第三方不可能獲得此標(biāo)記。相對安全技術(shù)而言,這種方法建立的系統(tǒng)更依賴于對其它應(yīng)用系統(tǒng)的信任。這種情況下的安全模式可以歸納為“如果這一系統(tǒng)以它應(yīng)該的方式建立,我們就相信它”。這種安全強(qiáng)度對于重要系統(tǒng)比如電信運(yùn)維管理系統(tǒng)顯然不夠。信息網(wǎng)絡(luò)的終端用戶或服務(wù)不能驗證這一要求,所以在動態(tài)SOA中這樣的認(rèn)證機(jī)制并不實用。SSO標(biāo)記存在的安全問題之二是其保鮮性,即認(rèn)證必須有即時性,在基于標(biāo)記的系統(tǒng)中很難做到這一點(diǎn)?;跇?biāo)記系統(tǒng)的核心概念之一是:一個身份可以在認(rèn)證以后才使用。這種“重放”模式與認(rèn)證機(jī)制要求的即時性并不一致。認(rèn)證是這樣一個過程,當(dāng)某一身份正在被聲明時,驗證某個身份是不是他所聲稱的身份(即邊認(rèn)證邊使用)。即時性保證通常需要與系統(tǒng)時鐘同步,從而使信息時間戳是有效的,這在SOA等松耦合系統(tǒng)中難以保證。
針對這些問題,認(rèn)證可以和密鑰分發(fā)機(jī)制結(jié)合起來,來自合法客戶的需求可以通過共享的加密密鑰來受到保護(hù)。為了防止攻擊者獲得SSO的安全標(biāo)記(在此情況下就是共享的加密密鑰)的訪問權(quán),安全協(xié)議必須做出特殊規(guī)定來傳輸與網(wǎng)絡(luò)通信規(guī)則相分離的密鑰。因此,協(xié)議必須被加密,并且不依賴于通信安全協(xié)議對密鑰進(jìn)行無縫傳輸。
按照理想的設(shè)計,PKI應(yīng)該是共用信息基礎(chǔ)設(shè)施架構(gòu)下鑒別用戶的通用要求??梢越柚ㄓ迷L問卡(CAC)來實現(xiàn),卡上包括用戶的私人密鑰和防篡改證書。訪問私人密鑰需要個人身份號碼(PIN),而卡上不攜帶這些信息,所有涉及密鑰的計算由內(nèi)置芯片完成。從用戶角度出發(fā),在CAC上錄入個人身份號碼即可完成單點(diǎn)登錄。他的數(shù)字身份隨即被策略實施點(diǎn)和策略決定服務(wù)評估,與此同時他的用戶代理將收到一個安全標(biāo)記。對于安全標(biāo)記,CAC激活只能在特定的時間段內(nèi)有效,而且必須對它進(jìn)行重新認(rèn)證。
參考文獻(xiàn)
[1] [RFC4535] Harney,et al., Group Secure Association Key Management Protocol, 2006. http://www.ietf.org/rfc/rfc4535.txt
[2] Laura Lee,Rod Fleischer.Service Oriented Architecture (SOA) Security Challenges And Mitigation Strategies.IEEE,2007.
[3] [SAML]Security Assertion Markup Language v2.0,OASIS, 2005. http://www.oasis-open.org/specs/index.php#samlv2.0.endprint