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