朱征宇,周發貴,于春雷
(重慶大學 計算機學院,重慶400044)
隨著計算機移動存儲設備技術的的不斷發展,U盤因其攜帶方便、容量大等特點,已成為目前使用最為廣泛的存儲介質。它的這種便捷性往往造成使用的隨意性,尤其在計算機病毒、木馬泛濫,各種計算機攻擊技術趨于普遍的今天,更增加了信息泄露的風險。當前很多帶保密性質的機構,如軍隊、科研機構等都采取了內外網絡物理隔離的保護方式來保障機構內部的網絡信息安全,這種方式能充分保證局域網內數據的安全,但要與外部網絡進行數據交流時由于需要外部存儲設備的接入,同樣會產生各種與設備相關的失泄密風險。本文主要為解決內部安全網絡中的重要文檔分發到U盤后的安全保護與使用監控的問題,以便文檔使用及流向的可審核和可追溯。
以某軍事研究機構(甲)為例分析存儲在U盤上的文檔存在的泄密風險。該機構保密級別較高,建立了基于人員指紋信息的身份認證系統,采取了內外網絡物理隔離的方式來保護內部網絡,對所有usb接口進行屏蔽,同時對內部使用的U盤進行認證[1],只有認證過的U盤才能正常接入內部網絡,在指定計算機上由指定管理人員對外發文檔進行簽發。由于某項目需要與外單位(乙)進行交流匯報及協作,就需要管理員從專用管理機器將文件簽發給外派的聯絡人員。從分發重要文檔到U盤,以及聯絡人員攜帶U盤到指定區域及網絡閱讀的過程中,存在的主要泄密途徑有:
1)U盤木馬從局域網內盜竊重要數據造成泄密;
2)U盤設備遺失造成泄密;
3)攜帶者在非安全計算機隨意閱讀時造成泄密;
4)攜帶者主動泄密。
嚴格的設備接入管理規定和使用安全移動設備等手段可以降低泄密風險,但這些手段并不能有效防止和發現攜帶人員主觀或意外造成的泄密,如后面2種泄密途徑。這些手段都在數據拷貝到移動設備后就對數據的流向、訪問情況失去了監管,把信息的安全完全寄托在數據持有人的安全意識上。近年國內外的一些重大失泄密事件的發生與這方面監管手段的缺失不無關系。如2010年7月美軍大量機密文件被“維基解密”網站所曝光,事件起因就是由于大量文件被內部人員非法下載并拷貝出去所致。
針對這一現狀,本文提出了基于計算機指紋的U盤文檔監控與保護方法,通過利用文件加解密技術、計算機指紋技術、文件與設備捆綁、文件循環校驗等相關技術手段,在保護分發文件安全的同時能幫助管理員利用計算機指紋和相關記錄來審核文件攜帶者對文件的閱讀情況,包括閱讀次數、地點(閱讀文件的計算機)、時間等信息,以防止攜帶人員不按要求保管及閱讀。該方法的應用有利于軍隊、政府和企業等機構對重要數據實現定人保管、定位閱讀、定期銷毀,實現對數據的全程監管,減少失泄密風險,而且有利于事后及時追查失泄密源頭及渠道,以便采取補救措施來挽回損失。
監督是為了更好地保障文件的安全,要保障文件的安全,就必須綜合考慮文件在傳遞和瀏覽過程中所有可能出現的各種漏洞,避免在任一環節出現安全“短板”的情況。傳統文檔處理軟件(WORD、寫字板等)都具有很多的編輯功能,而這些功能對于一份僅供閱讀的文件來說是多余而具有風險的,所以筆者設計了專用的功能有限的只讀客戶端來閱讀文件,并利用客戶端來記錄和監督文件的瀏覽信息。在每次分發機密文檔時把閱讀器一起捆綁[2]進行分發,所以需要對閱讀軟件及文件本身的安全同時進行保護。
為實現離線狀態下對文檔操作的身份識別和操作的不可否認,采取了嚴格的多重身份驗證機制,把閱讀端、文件、設備和用戶相互關聯,任一方有了改變均無法通過驗證,以此來保障數據安全及監督的有效。
在文件被分發后把相關部分分為4塊:軟件與Keyfile文件、機密文檔與監督信息文件、U盤和用戶。通過多重的捆綁驗證機制來保證機密文檔只有在4個方面都驗證無誤后才能打開閱讀。具體實現技術有2點:
2.1.1 文件和設備的捆綁
為避免閱讀軟件或機密文檔因非法拷貝造成泄密,把軟件和機密文檔與存儲設備進行捆綁,使軟件無法在其他設備運行,機密文檔在其他設備上無法正常解密閱讀。
在把機密文檔寫入設備時,分發端軟件讀取授權者信息、被授權者信息、授權時間、隨機數和U盤標識信息(如序列號、容量等),然后用散列算法SHA1散列后加密生成標識串A,并記錄到磁盤。為保障標識信息的安全,綜合考慮實用性和技術可行性,本文利用DBR(分區引導扇區)之后的保留扇區來存儲驗證信息。對于U盤常用的FAT32文件系統,在任一分區中都含有一個DBR,為擴展引導代碼。在DBR之后提供了一些保留扇區,這些扇區一般不被系統使用,是理想的隱蔽存儲區。此方法對一般的FAT32文件系統都有效,對文件操作(文件創建、復制、刪除)透明,但磁盤操作(如磁盤格式化)將導致失效。此時這一標識串A既能唯一標識[2]此U盤,又能標識此次授權。然后把除設備信息外的各信息加密后記錄入Keyfile文件[3],同時利用設備信息和授權者信息參與文檔加密密鑰的生成,這樣在打開閱讀端時需要讀取設備信息來生成標識串與存入設備的標識信息進行驗證,在打開文檔時也需要讀取存儲設備信息和Keyfile信息來生成解密密鑰。這樣當軟件或數據被非法拷貝到其他存儲設備時,軟件就會無法通過驗證啟動,文檔也會因為無法生成正確的解密密鑰而打不開。用此方法實現了鎖定軟件與設備(模型如圖1)、文檔與設備(模型如圖2)的關聯關系。

圖2 設備與文檔加密捆綁模型
通過使用這些加密及校驗措施,實現閱讀端、文件與設備的關聯捆綁,軟件的啟動要在指定設備上才能正常進行,文檔要在指定設備上才能正常解密并閱讀,避免了文檔被非法復制到其他設備造成的泄密。
2.1.2 文件間的捆綁校驗
為解決閱讀軟件與文檔的捆綁,即避免用戶用授權給他的閱讀軟件閱讀非授權給他的文檔,需要對每次分發的閱讀軟件和本次授權的文檔進行綁定。在分發閱讀軟件時先從Keyfile文件讀取授權者的信息、分發時間和隨機碼,然后用SHA2散列生成識別串B注入閱讀端,再把此識別串加密后存入此次授權文檔的監督信息文件,在打開文檔時就會解密識別串B,并與閱讀軟件中的記錄進行校驗。這樣就使每次分發的閱讀端只能打開當次的授權文檔,實現閱讀軟件與文檔的捆綁,一次分發的閱讀軟件可以綁定一份或多份文檔。
為防止文件內容被惡意篡改,保護文件的完整性和合法性,常用的方法是對文件進行散列后把散列碼與文件一起分發,用戶依據文件和散列碼的對應關系來識別文件的完整性。但分別進行散列不能鎖定文檔與審核信息,且散列碼容易被分析定位,故系統在分發機密文檔時,先對文檔和記錄相關監督信息的文件進行相互校驗并分別壓縮打包(校驗模型如圖3),閱讀時需要解密后在內部分別解壓縮再相互驗證散列碼。如果不符合,則說明該文件被修改過,此時停止對文件的所有授權操作,需要管理員審核后重新授權方可訪問。

圖3 文件相互校驗模型
為了保護機密文檔,就必須從文檔分發權限認證,到數據的加密及捆綁驗證,再到閱讀時的驗證和監控來防止內部網絡數據的流失及泄密。
2.2.1 分發限制
為防止分發端濫用權限,在分發端利用內部網絡的分級認證機制,對管理員進行分級管理,使其只能對一定保密級別的文件進行授權,在后臺記錄詳細的文件授權信息,并能對各管理員限定相應的授權次數(如表1)。次數到達后管理員需重新申請證書,通過證書分發審核的監督來避免因分發人員問題造成巨大損失。

表1 權限
分發時先在后臺記錄各管理員每次授權的詳細資料,如文件名、密級、授權時間,軟件的授權期限及啟動次數、文檔的授權期限及閱讀次數、被授權者信息和授權碼等,在每份文檔回收時進行這些信息的驗證。
分發軟件時利用授權者信息、分發時間及隨機序列與注入閱讀端軟件的識別碼B實現閱讀端與Keyfile的捆綁,然后將閱讀端利用SHA2算法散列生成驗證碼,記錄入Keyfile文件,以實現軟件自身的完整性檢驗,防止軟件被“爆破”或其他技術手段分析破解。
分發機密文檔時對每份授權文檔進行簽名,以識別每份文檔的授權者。授權時將文檔的使用限制條件(如閱讀次數、時間期限等信息)記錄入監控文件,然后將文檔和監控文件進行捆綁并加密,以實現對分發文檔的使用情況進行限制和有效監控。文檔的分發流程如圖4所示。

圖4 文檔分發流程
隨機碼和時間作為變量的參與使每次分發均具有唯一性,這些捆綁及檢驗措施的運用使每次分發的軟件、文件、存儲設備及授權用戶是一次授權的整體,在閱讀時各方缺一不可。
2.2.2 文件加密
隨著計算機計算速度的飛速提高,以前的一些加密算法(如DES、MD5)的安全性已經顯得岌岌可危。AES作為21世紀新的加密標準,它的密鑰長度可以為128,192或256,而且在理論上沒有上限,故此加密算法可被視為是安全的[4]。常見的SHA1散列算法可能存在和MD5一樣的碰撞攻擊漏洞,而SHA-2則迄今為止還沒有出現被成功攻擊的報道[5]。故在此選擇了AES(高級數據加密標準)和SHA2來保護數據文檔。
由于閱讀計算機環境的不確定性,使目前較常用的利用非對稱密碼加密保護密鑰的方式不適用于本方法,為增加密鑰的安全性,在分發機密文檔時,讀取存儲在保留扇區的設備標識串和分發時存入Keyfile的隨機數參及當前時間生成加密密鑰(密鑰生成模型參考圖2),再把讀取到的當前時間、閱讀端軟件的授權碼記錄(如監督信息文件),讓同一口令加密的機密文檔在不同時間或設備上生成的加密密鑰是不相同的,在閱讀文檔時先解密監督信息文件,利用其記錄檢驗設備及軟件是否符合,通過檢驗后再按密鑰生成機制讀取設備標識串和Keyfile信息,生成解密密鑰,這樣就提高了系統的抵抗逆向分析的能力。
2.2.3 異常檢測
為了方便用戶使用,便于在出現斷電、死機等情況下對文件進行恢復等處理,需要對文件異常狀況進行登記、檢測和處理,判斷系統是否非正常使用,這樣既便于在異常情況恢復文件,又有利于審核文件時能發現異常操作。同時為了防止別有用心者對軟件進行動態跟蹤或破解,系統可以對軟件設定一個異常狀況閥值,當軟件異常次數超出此數值時,能鎖定軟件或自動刪除客戶端和相關數據文件,最大限度地保護數據安全。當出現異常退出狀況時,能做出檢測并恢復文件信息,有效地對文件系統進行保護。
這些保護措施的采用充分保障了文檔的數據安全,即使軟件或文件被非法復制,竊取者也無法運行軟件或解密文件。
在軟件和文件的安全性有了充分保障后,利用軟件、文件與設備的捆綁與相互檢驗,使正常閱讀操作局限在文件的分發設備上。當客戶端啟動時,利用指紋生成系統生成閱讀計算機的指紋,在打開每一份文件前,把指紋信息記錄到該文件的審核日志,同時跟蹤記錄用戶對文件的操作歷史,并屏蔽不必要的風險操作,如禁止拷貝、粘貼等風險操作。
審核記錄的真實性主要通過加密手段及捆綁技術來保證,讓使用者不能對其進行修改。如果發現文件有修改痕跡,系統能及時通過校驗手段發現,并能停止文件的授權,直到分發機構或管理員重新審核并授權。
通過一臺計算機的CPU ID、網卡的MAC地址、硬盤的序列號等可以區分不同計算機信息,統稱為這臺計算機的指紋。由于指紋的唯一性,軟件商可以利用其來實現軟件授權碼和計算機的綁定,也可以利用其來實現對瀏覽過文件的計算機進行標識,在出現失泄密問題時可以及時鎖定泄露地點及途徑,幫助我們挽回損失。同樣也可以利用這些信息來指定閱讀文件的具體計算機,避免文件攜帶者在其他地方閱讀文件。
目前,常見的軟件系統在設計指紋系統時,常固定使用其中的某一種或幾種信息,雖然這樣也能保證指紋的唯一性,但軟件容易被攻擊者按生成機制分析并偽造出認證碼。為了提高序列號的穩定性和安全性,充分利用如上所提這些信息來生成計算機指紋,有利于事后準確定位閱讀過文件的計算機。本文在設計指紋系統時,針對硬盤序列號是必然存在,且具有唯一性、穩定性[6],而主板序列號、CPU ID及MAC地址不一定能獲取到的情況,采取1+X(X代表區后3種序列碼的0到3種,由系統初始時隨機選取后再讀取,如果獲取不到,則由默認的一個串值代替)的方式來生成計算機指紋,使每條指紋是由硬盤序列號再加上剩余3種序列號的隨機組合來生成的,這在保證了序列號的唯一性時又使其具備隨機性,增加了利用硬件的可更換性偽造計算機指紋的難度,提高了系統的安全性。
指紋的生成模型如圖5所示。在軟件啟動時,先啟動登記部分,利用WinAPI函數直接調用GetVolumeInformation獲取硬盤信息;調用GetCPUVendorx獲取CPU廠商信息(AMD或INTEL);再用GetSystemInfo函數獲取CPU信息;使用Microsoft的Netbios API獲取MAC地址。如果特殊情況下取不到某個標示信息時,如CPU為奔騰3以下,用一個特殊串代替即可。最終將這些獲取到的信息經散列變換生成計算機指紋(如圖5所示),再將硬盤序列號和指紋寫入監督信息文件,在審核時就能以此找出用戶曾經的閱讀地點(具體計算機)。

圖5 計算機指紋生成模型
文件監控技術,就是能夠對打開文件、讀/寫文件等文件操作進行監控、記錄,其目的就是有效地解決內網內部重要機密文件的安全問題,對機密文件進行實時監控,記錄對機密文件的一切操作。目前常用的文件監控技術有基于虛擬設備掛接方式監控技術和基于拷貝鉤子(API HOOK)的文件監控技術。本文針對U盤文檔需要離線監控的特點,結合拷貝鉤子和Win32API函數[7],找出了一種能獨立地監控U盤上的文檔使用情況的方法。
在啟動軟件或打開文檔時,都先生成計算機指紋,對閱讀地址(具體計算機)進行登記,并把軟件使用信息記錄入Keyfile,把文檔操作歷史記錄入對應監督文件。對文檔的動作捕獲主要利用Windows系統提供的深層API函數和HOOKAPI來實現。在Windows系統中,當對文件進行剪切、拷貝時,操作系統會產生一個消息響應來觸發系統對文件進行操作,所以捕獲消息響應可以捕獲監控系統對文件的操作。這樣當用戶對監控文件進行操作時,根據操作動作的不同,可利用API函數或鉤子進行消息響應的捕獲,然后對消息響應進行分析和記錄,實現對文件的有效監控。
在閱讀端對文件的剪切、拷貝以及普通的截屏操作都可以歸結為Windows的剪貼板操作[8],所以能使用SetClipboardViewer(HWND)函數向剪貼板觀察鏈中加入一個觀察窗口。當剪貼板的內容發生變化時,該窗口會接收到一個WM_DRAWCLIPBOARD消息,它標識了將要加入的下一個窗口。然后響應WM_DRAWCLIPBOARD消息處理剪貼板內容的變化,利用HasFormat屬性判斷其內容是否是位圖(CF_BITMAP)或文本(CF_TEXT)并進行登記。最后在程序關閉時直接清空剪貼板,避免信息泄露。
同時安裝鍵盤鉤子,用SetWindowsHookEx函數將監控程序定義的鉤子過程安裝到鉤子鏈中,當鍵盤事件發生時,調用鉤子處理函數KeyBoard-Hook進行響應,結束后調用CallNextHookEx執行鉤子鏈表所指的下一個鉤子子程[9]。
利用此方法實現對文檔的監控實現復雜度低,效率較高,能監控用戶常規使用下的相關操作。
審核的目的是為了規范和監督用戶對文檔的使用,同時能通過審核監督文件發現用戶的違規使用情況,在發生失泄密事故時能利用監督信息排查出可能的泄密環節,進行追溯以挽回損失。
由于審核者不一定需要知道文檔的內容,故在審核時只需要對監督信息進行解密,讀取文檔瀏覽的歷史記錄,避免因審核模塊漏洞造成的泄密和信息擴散,把閱讀權限和審核權限進行隔離。
針對U盤使用過程中容易產生的信息安全問題,本文提出的方法利用軟件技術實現了對U盤上文檔使用的監控及保護,并結合硬件保護技術對設備操作進行控制,使整個系統在各環節都具有很好的安全性,避免因為安全“短板”的存在威脅到整個系統。
該方法的提出很好地彌補了對涉密局域網離網文檔的監管缺失這一信息安全問題,使涉密單位能及時發現和解決文檔分發后的安全隱患和監管漏洞,具有良好的適用性和運用前景。
[1] 王欣瑜,李釗,楊百龍,等.移動存儲介質認證方法研究[J].無線電通信技術,2008(1):56-58.
[2] 廖洪其;凌捷;郝彥軍,等.USB移動存儲設備的惟一性識別方法研究[J].計算機工程與設計,2010(12):2778-2780,2814.
[3] 段鋼.加密與解密[M].3版.北京:電子工業出版社,2008.
[4] 何明星,林昊.AES算法原理及其實現[J].計算機應用研究,2002(12):61-63.
[5]SHA1 Collisions can be Found in 2^63;Operations.[2010-05-24].http://www.rsa.com/rsalabs/node.asp?id=2927.
[6] 丁思捷,張普朝.應用硬盤序列號生成計算機指紋[J].計算機應用,2002(5):106-108.
[7] 張桂勇,陳芳瓊.API for Windows 2000/XP詳解[M].北京:清華大學出版社,2003.
[8] 于抒,楊澤缸,賈培發.計算機安全監控系統的關鍵技術研究[J].計算機工程,2007(12):146-148,152.
[9] 戴春達,符紅光.WIN32中鉤子的實現技術及其應用[J].計算機應用,2002(8):72-74.