邱剛
中船重工第七二二研究所信息安全事業部 湖北 430079
計算機與網絡技術日益深入各種行業的業務應用,大量企業和機構部署了辦公自動化和業務信息系統。在提高組織工作效率的同時,信息濫用和泄露的風險也隨之增大。計算機網絡中電子信息發布和訪問的安全性的得到了廣泛的關注和重視。AD RMS是一種在分布式網絡環境中集中保護信息按要求方式使用的技術,為網絡中信息的安全發布和使用提供了一個完整的解決方法和技術平臺。AD RMS定義了細粒度的訪問方式,可以為指定的用戶或者組在一定時間范圍內指定讀取、修改、打印等操作權限的任意組合。確保信息文件有意無意的離開AD RMS安全域后無法被讀取和使用。
AD RMS適合于各種組織機構控制文檔在機構內部和外部的發布和使用方式與時間。為了使用AD RMS的權限管理功能,應用程序要使用AD RMS SDK提供的接口來實現對權限保護的支持。本文介紹AD RMS的原理,簡述開發AD RMS應用的環境建立和程序實現方法。
AD RMS應用系統包含AD RMS服務器、客戶端計算機、用戶認證服務器、證書服務器和用戶,如圖1所示。AD RMS 采用信息加密技術保護敏感信息內容及使用方式。

圖1 AD RMS 環境示意圖
AD RMS采用對稱與非對稱密碼結合數字證書的機制加密受保護的信息內容和使用權限信息。文檔保護從用戶在域中的安全標識開始,通過認證服務與證書管理機構獲取用戶證書,從隨機數源生成隨機的文檔信息對稱密鑰,采用對稱算法和對稱密鑰加密文檔的內容和權限信息,使用接收者證書中的公鑰加密保護文檔的對稱密鑰。含有加密的對稱密鑰和信息的文檔即可通過各種開放的介質如網絡、U盤等發送給接收者。接收者持有自己證書對應的非對稱私鑰,能夠解密出對稱密鑰,最后按照權限指定的方式解密使用文檔內容。
ADRMS管理與內容加解密有關的證書,密鑰,為終端用戶提供一個簡單易用的信息安全發布與使用設施。
我們構建了如下配置的網絡環境部署 AD RMS服務和開發平臺。所有這些計算機位于一個局域網中,使用了192.168.0.X網段,如表1所示。

表1 基礎網絡設施構建表
安裝和配置域控制器,在 HCLAB-DC安裝 Windows Server 2008,添加域控制器、域名解析服務器和證書服務角色,域名使用hclab.local。所有其他計算機均加入hclab.local域,在域中創建開發測試用戶。然后安裝SQL數據庫服務器,在 ADRMS-DB上安裝 Microsoft SQL Server 2005。在ADRMS-SRV上使用 HCLAB-DC的證書服務申請主題為adrms-srv..hclab.local的服務器證書。
在ADRMS-SRV上安裝和配置ADRMS服務。為了簡化開發,ADRMS服務正在前期開發可以不必使用SSL加密注冊AD RMS服務連接點完成ADRMS服務的安裝和配置。將AD RMS集群的URL加入ADRMS-CLT的本地Intranet安全區域,這可以防止已經登錄到域的用戶在訪問域中的 AD RMS服務時被提示輸入用戶憑據。
在ADRMS-CLT上安裝Windows 7 SDK或者Visual Studio 2008/2010以支持應用程序的開發與調試。
在計算機可以用來加解密 AD RMS保護的信息內容之前,必須將計算機簽署進入目錄中的AD RMS證書鏈中,這個過程稱為機器激活。調用激活(DRMActivate)等 AD RMS函數需要一個客戶端會話用來承載其他的證書存儲會話。DRMCreateClientSession函數創建客戶端會話并得到其句柄,這個句柄將在其他AD RMS函數調用中被引用。
創建客戶端會話:

激活等AD RMS函數調用涉及到與活動目錄服務、RMS服務的多項網絡交互,這些函數會立即返回以便執行其他任務,調用者用異步的回調方式處理返回結果。在回調上下文參數結構中包含一個異步事件對象,可以使處理返回結果的線程在該對象上阻塞等待,從而提高處理器利用效率。
dwWaitResult = WaitForSingleObject( context.hEvent, DW_WAIT_TIME);
計算機激活后,必須激活當前登錄的用戶以獲得權限賬戶證書(Right Account Cerification ),這個過程稱為用戶激活。激活完畢后,通過DRMIsActivatied函數檢測機器和用戶的激活狀態。用戶激活也是調用DRMActivate函數,將激活計算機時用的第二個參數的第一項 DRM_ACTIVATE_ MACHINE改為DRM_ACTIVATE_GROUPIDENTITY即可。處理用戶激活結果的回調機制與激活計算機時完全相同。
發布受 AD RMS保護的信息一般需要將加密的內容和相關的發行證書組合在一個格式文檔中,使用信息的目標用戶可以從文檔中提取發行證書用來獲取終端用戶證書,使用終端用戶證書解密信息。AD RMS SDK使用高級加密標準(Advanced Encryption Standard,AES)算法加密信息內容。密鑰長度是128比特,密文數據分組長度為16字節。Windows Vista及其以前版本的操作系統采用分組算法的ECB模式;Windows 7則增加了采用分組鏈接機制的CBC模式的支持。為了加密信息內容,計算機和用戶必須已被AD RMS激活,才能進行后續獲取簽署的發行證書進而加密信息的過程。
加密內容包括以下步驟:
(1)創建客戶會話,這個過程與前面所述一致。
(2)從證書存儲中獲取加密過程中要使用的證書,包括計算機證書、權限賬戶證書等。使用 DRMEnumerateLicense指定不同的證書類型標志uFlags參數獲取這些證書。
(3)獲取應用程序清單。應用程序的清單包含有程序組件的數字簽名信息,是下一步創建安全環境的條件之一,用來防止被篡改的應用程序竊取受保護的信息。
(4)創建安全環境。調用DRMGetSecurityProvider獲得一個安全提供者,隨后使用DRMInitEnvironment初始化處理受保護的信息必須的安全環境,這里如果檢測到安全威脅則會返回失敗。在應用程序被篡改、程序正在調試環境中運行等情況下用戶進程都會無法創建安全環境。
(5)獲取已簽署的發行證書。這個證書中包含有詳細的信息使用權限信息,如有效時間、許可用戶、各用戶的權限(讀、寫、拷貝、打印)等。首先使用 DRMCreateIssuance創建發行證書對象,然后創建使用SMTP郵件地址格式的用戶名稱創建DRM用戶對象,創建用戶所需的DRM權限對象,將用戶對象和授予的權限對象關聯到發行證書中,創建和設置發行證書中惟一內容 ID等元數據;最后,使用在線或者離線的方式簽署發行許可證。
(6)加密內容。最后,創建一個加密對象,并使用這個加密對象加密信息,將加密的信息和已簽署的發行證書保存到應用程序格式文檔中,將文檔拷貝到共享的介質中完成信息的加密發布。以下是加密信息的程序片段:

使用受保護的信息需要先進行解密,解密操作的安全環境準備過程與加密信息時是一致的,獲得了有效的安全環境句柄之后,解密信息的進程提取用戶的權限賬戶證書(RAC),使用RAC和信息的發布許可證從AD RMS服務器獲取信息的終端用戶許可證。將期望的使用權限綁定到終端用戶許可證,使用綁定的許可證創建解密對象,完成信息內容的解密使用。以下是解密信息的程序片段:

調試AD RMS應用程序比其他應用程序要困難。這是因為為了信息內容的安全,受保護的內容是在鎖盒中處理的。在使用AD RMS鎖盒對受保護的信息處理時,AD RMS如果檢測調試器的存在就會使安全函數的調用失敗,從而防止攻擊者通過調試器窺探信息,同時這也使得程序無法調試。為了調試AD RMS應用程序,Microsoft提供了一個稱為鎖盒通信代理(LCP)的工具,應用程序開發調試期間,使用 LCP調用安全函數模擬相關的功能,發布時再把這些函數連接到真正的鎖盒。如果不使用LCP,可以使用類似與printf的函數輸出跟蹤信息協助調試,在應用發布時應該屏蔽這些跟蹤信息的輸出。
基于 AD RMS構建的應用支持以細粒度可控的方式發布和使用信息,第三方軟件開發者和安全解決方案提供者可以在AD RMS上構建強有力的安全應用和解決方案,有效的改善應用軟件產生的電子文檔在使用過程中存在的濫用和擴散問題。自Windows 7開始,AD RMS支持AES的CBC模式,對抗密碼學分析與攻擊的能力顯著提升,但其對于定制密碼設備的接入和支持仍顯不足,限制了其在不同等級的安全要求環境下的更廣泛使用,值得在進一步的研究中予以改善和解決。
[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.密碼編碼學與網絡安全.北京:電子工業出版社. 2010.