邱剛
中船重工第七二二研究所信息安全事業(yè)部 湖北 430079
計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)日益深入各種行業(yè)的業(yè)務(wù)應(yīng)用,大量企業(yè)和機(jī)構(gòu)部署了辦公自動(dòng)化和業(yè)務(wù)信息系統(tǒng)。在提高組織工作效率的同時(shí),信息濫用和泄露的風(fēng)險(xiǎn)也隨之增大。計(jì)算機(jī)網(wǎng)絡(luò)中電子信息發(fā)布和訪問的安全性的得到了廣泛的關(guān)注和重視。AD RMS是一種在分布式網(wǎng)絡(luò)環(huán)境中集中保護(hù)信息按要求方式使用的技術(shù),為網(wǎng)絡(luò)中信息的安全發(fā)布和使用提供了一個(gè)完整的解決方法和技術(shù)平臺(tái)。AD RMS定義了細(xì)粒度的訪問方式,可以為指定的用戶或者組在一定時(shí)間范圍內(nèi)指定讀取、修改、打印等操作權(quán)限的任意組合。確保信息文件有意無意的離開AD RMS安全域后無法被讀取和使用。
AD RMS適合于各種組織機(jī)構(gòu)控制文檔在機(jī)構(gòu)內(nèi)部和外部的發(fā)布和使用方式與時(shí)間。為了使用AD RMS的權(quán)限管理功能,應(yīng)用程序要使用AD RMS SDK提供的接口來實(shí)現(xiàn)對(duì)權(quán)限保護(hù)的支持。本文介紹AD RMS的原理,簡述開發(fā)AD RMS應(yīng)用的環(huán)境建立和程序?qū)崿F(xiàn)方法。
AD RMS應(yīng)用系統(tǒng)包含AD RMS服務(wù)器、客戶端計(jì)算機(jī)、用戶認(rèn)證服務(wù)器、證書服務(wù)器和用戶,如圖1所示。AD RMS 采用信息加密技術(shù)保護(hù)敏感信息內(nèi)容及使用方式。
圖1 AD RMS 環(huán)境示意圖
AD RMS采用對(duì)稱與非對(duì)稱密碼結(jié)合數(shù)字證書的機(jī)制加密受保護(hù)的信息內(nèi)容和使用權(quán)限信息。文檔保護(hù)從用戶在域中的安全標(biāo)識(shí)開始,通過認(rèn)證服務(wù)與證書管理機(jī)構(gòu)獲取用戶證書,從隨機(jī)數(shù)源生成隨機(jī)的文檔信息對(duì)稱密鑰,采用對(duì)稱算法和對(duì)稱密鑰加密文檔的內(nèi)容和權(quán)限信息,使用接收者證書中的公鑰加密保護(hù)文檔的對(duì)稱密鑰。含有加密的對(duì)稱密鑰和信息的文檔即可通過各種開放的介質(zhì)如網(wǎng)絡(luò)、U盤等發(fā)送給接收者。接收者持有自己證書對(duì)應(yīng)的非對(duì)稱私鑰,能夠解密出對(duì)稱密鑰,最后按照權(quán)限指定的方式解密使用文檔內(nèi)容。
ADRMS管理與內(nèi)容加解密有關(guān)的證書,密鑰,為終端用戶提供一個(gè)簡單易用的信息安全發(fā)布與使用設(shè)施。
我們構(gòu)建了如下配置的網(wǎng)絡(luò)環(huán)境部署 AD RMS服務(wù)和開發(fā)平臺(tái)。所有這些計(jì)算機(jī)位于一個(gè)局域網(wǎng)中,使用了192.168.0.X網(wǎng)段,如表1所示。
表1 基礎(chǔ)網(wǎng)絡(luò)設(shè)施構(gòu)建表
安裝和配置域控制器,在 HCLAB-DC安裝 Windows Server 2008,添加域控制器、域名解析服務(wù)器和證書服務(wù)角色,域名使用hclab.local。所有其他計(jì)算機(jī)均加入hclab.local域,在域中創(chuàng)建開發(fā)測(cè)試用戶。然后安裝SQL數(shù)據(jù)庫服務(wù)器,在 ADRMS-DB上安裝 Microsoft SQL Server 2005。在ADRMS-SRV上使用 HCLAB-DC的證書服務(wù)申請(qǐng)主題為adrms-srv..hclab.local的服務(wù)器證書。
在ADRMS-SRV上安裝和配置ADRMS服務(wù)。為了簡化開發(fā),ADRMS服務(wù)正在前期開發(fā)可以不必使用SSL加密注冊(cè)AD RMS服務(wù)連接點(diǎn)完成ADRMS服務(wù)的安裝和配置。將AD RMS集群的URL加入ADRMS-CLT的本地Intranet安全區(qū)域,這可以防止已經(jīng)登錄到域的用戶在訪問域中的 AD RMS服務(wù)時(shí)被提示輸入用戶憑據(jù)。
在ADRMS-CLT上安裝Windows 7 SDK或者Visual Studio 2008/2010以支持應(yīng)用程序的開發(fā)與調(diào)試。
在計(jì)算機(jī)可以用來加解密 AD RMS保護(hù)的信息內(nèi)容之前,必須將計(jì)算機(jī)簽署進(jìn)入目錄中的AD RMS證書鏈中,這個(gè)過程稱為機(jī)器激活。調(diào)用激活(DRMActivate)等 AD RMS函數(shù)需要一個(gè)客戶端會(huì)話用來承載其他的證書存儲(chǔ)會(huì)話。DRMCreateClientSession函數(shù)創(chuàng)建客戶端會(huì)話并得到其句柄,這個(gè)句柄將在其他AD RMS函數(shù)調(diào)用中被引用。
創(chuàng)建客戶端會(huì)話:
激活等AD RMS函數(shù)調(diào)用涉及到與活動(dòng)目錄服務(wù)、RMS服務(wù)的多項(xiàng)網(wǎng)絡(luò)交互,這些函數(shù)會(huì)立即返回以便執(zhí)行其他任務(wù),調(diào)用者用異步的回調(diào)方式處理返回結(jié)果。在回調(diào)上下文參數(shù)結(jié)構(gòu)中包含一個(gè)異步事件對(duì)象,可以使處理返回結(jié)果的線程在該對(duì)象上阻塞等待,從而提高處理器利用效率。
dwWaitResult = WaitForSingleObject( context.hEvent, DW_WAIT_TIME);
計(jì)算機(jī)激活后,必須激活當(dāng)前登錄的用戶以獲得權(quán)限賬戶證書(Right Account Cerification ),這個(gè)過程稱為用戶激活。激活完畢后,通過DRMIsActivatied函數(shù)檢測(cè)機(jī)器和用戶的激活狀態(tài)。用戶激活也是調(diào)用DRMActivate函數(shù),將激活計(jì)算機(jī)時(shí)用的第二個(gè)參數(shù)的第一項(xiàng) DRM_ACTIVATE_ MACHINE改為DRM_ACTIVATE_GROUPIDENTITY即可。處理用戶激活結(jié)果的回調(diào)機(jī)制與激活計(jì)算機(jī)時(shí)完全相同。
發(fā)布受 AD RMS保護(hù)的信息一般需要將加密的內(nèi)容和相關(guān)的發(fā)行證書組合在一個(gè)格式文檔中,使用信息的目標(biāo)用戶可以從文檔中提取發(fā)行證書用來獲取終端用戶證書,使用終端用戶證書解密信息。AD RMS SDK使用高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)算法加密信息內(nèi)容。密鑰長度是128比特,密文數(shù)據(jù)分組長度為16字節(jié)。Windows Vista及其以前版本的操作系統(tǒng)采用分組算法的ECB模式;Windows 7則增加了采用分組鏈接機(jī)制的CBC模式的支持。為了加密信息內(nèi)容,計(jì)算機(jī)和用戶必須已被AD RMS激活,才能進(jìn)行后續(xù)獲取簽署的發(fā)行證書進(jìn)而加密信息的過程。
加密內(nèi)容包括以下步驟:
(1)創(chuàng)建客戶會(huì)話,這個(gè)過程與前面所述一致。
(2)從證書存儲(chǔ)中獲取加密過程中要使用的證書,包括計(jì)算機(jī)證書、權(quán)限賬戶證書等。使用 DRMEnumerateLicense指定不同的證書類型標(biāo)志uFlags參數(shù)獲取這些證書。
(3)獲取應(yīng)用程序清單。應(yīng)用程序的清單包含有程序組件的數(shù)字簽名信息,是下一步創(chuàng)建安全環(huán)境的條件之一,用來防止被篡改的應(yīng)用程序竊取受保護(hù)的信息。
(4)創(chuàng)建安全環(huán)境。調(diào)用DRMGetSecurityProvider獲得一個(gè)安全提供者,隨后使用DRMInitEnvironment初始化處理受保護(hù)的信息必須的安全環(huán)境,這里如果檢測(cè)到安全威脅則會(huì)返回失敗。在應(yīng)用程序被篡改、程序正在調(diào)試環(huán)境中運(yùn)行等情況下用戶進(jìn)程都會(huì)無法創(chuàng)建安全環(huán)境。
(5)獲取已簽署的發(fā)行證書。這個(gè)證書中包含有詳細(xì)的信息使用權(quán)限信息,如有效時(shí)間、許可用戶、各用戶的權(quán)限(讀、寫、拷貝、打印)等。首先使用 DRMCreateIssuance創(chuàng)建發(fā)行證書對(duì)象,然后創(chuàng)建使用SMTP郵件地址格式的用戶名稱創(chuàng)建DRM用戶對(duì)象,創(chuàng)建用戶所需的DRM權(quán)限對(duì)象,將用戶對(duì)象和授予的權(quán)限對(duì)象關(guān)聯(lián)到發(fā)行證書中,創(chuàng)建和設(shè)置發(fā)行證書中惟一內(nèi)容 ID等元數(shù)據(jù);最后,使用在線或者離線的方式簽署發(fā)行許可證。
(6)加密內(nèi)容。最后,創(chuàng)建一個(gè)加密對(duì)象,并使用這個(gè)加密對(duì)象加密信息,將加密的信息和已簽署的發(fā)行證書保存到應(yīng)用程序格式文檔中,將文檔拷貝到共享的介質(zhì)中完成信息的加密發(fā)布。以下是加密信息的程序片段:
使用受保護(hù)的信息需要先進(jìn)行解密,解密操作的安全環(huán)境準(zhǔn)備過程與加密信息時(shí)是一致的,獲得了有效的安全環(huán)境句柄之后,解密信息的進(jìn)程提取用戶的權(quán)限賬戶證書(RAC),使用RAC和信息的發(fā)布許可證從AD RMS服務(wù)器獲取信息的終端用戶許可證。將期望的使用權(quán)限綁定到終端用戶許可證,使用綁定的許可證創(chuàng)建解密對(duì)象,完成信息內(nèi)容的解密使用。以下是解密信息的程序片段:
調(diào)試AD RMS應(yīng)用程序比其他應(yīng)用程序要困難。這是因?yàn)闉榱诵畔?nèi)容的安全,受保護(hù)的內(nèi)容是在鎖盒中處理的。在使用AD RMS鎖盒對(duì)受保護(hù)的信息處理時(shí),AD RMS如果檢測(cè)調(diào)試器的存在就會(huì)使安全函數(shù)的調(diào)用失敗,從而防止攻擊者通過調(diào)試器窺探信息,同時(shí)這也使得程序無法調(diào)試。為了調(diào)試AD RMS應(yīng)用程序,Microsoft提供了一個(gè)稱為鎖盒通信代理(LCP)的工具,應(yīng)用程序開發(fā)調(diào)試期間,使用 LCP調(diào)用安全函數(shù)模擬相關(guān)的功能,發(fā)布時(shí)再把這些函數(shù)連接到真正的鎖盒。如果不使用LCP,可以使用類似與printf的函數(shù)輸出跟蹤信息協(xié)助調(diào)試,在應(yīng)用發(fā)布時(shí)應(yīng)該屏蔽這些跟蹤信息的輸出。
基于 AD RMS構(gòu)建的應(yīng)用支持以細(xì)粒度可控的方式發(fā)布和使用信息,第三方軟件開發(fā)者和安全解決方案提供者可以在AD RMS上構(gòu)建強(qiáng)有力的安全應(yīng)用和解決方案,有效的改善應(yīng)用軟件產(chǎn)生的電子文檔在使用過程中存在的濫用和擴(kuò)散問題。自Windows 7開始,AD RMS支持AES的CBC模式,對(duì)抗密碼學(xué)分析與攻擊的能力顯著提升,但其對(duì)于定制密碼設(shè)備的接入和支持仍顯不足,限制了其在不同等級(jí)的安全要求環(huán)境下的更廣泛使用,值得在進(jìn)一步的研究中予以改善和解決。
[1]Microsoft Corporation.AD RMS Overview.http://msdn.microsoft. com.2010.
[2]Microsoft Corporation.Active Directory Rights Management Services SDK.http://msdn.microsoft.com .2008.
[3]Microsoft TechNet.AD RMS Deployment Step-by-step. http://technet.microsoft.com/en-us/library/cc725699.aspx.2008.
[4]Microsoft Corporation,Using the AD RMS SDK, http://msdn. microsoft.com.2010.
[5]William Stallings.密碼編碼學(xué)與網(wǎng)絡(luò)安全.北京:電子工業(yè)出版社. 2010.