◆張剛剛
基于OOXML的信息隱藏和檢測方法研究
◆張剛剛
(首都師范大學 數字校園建設中心 北京 100048)
信息技術為各行各業用戶帶來極大便利的同時,也為網絡空間的攻擊者實施數據盜竊等網絡空間犯罪行為提供了更加隱蔽的手段。采用微軟辦公套件Office生成的電子文件在網絡空間電子文件中占比較大,攻擊者不斷嘗試通過Office文件進行信息的隱蔽竊取和信息交換。研究基于Office文件的信息隱藏和檢測方法能夠使企業及早發現網絡空間中存在的數據失竊風險。本文在研究新版Office文件格式的基礎上,提出利用OOXML文件規范中的未知組件以及未知關系在OOXML文件包中隱藏信息的方法和隱藏信息的檢測算法。實驗結果表明,本文提出的方法具有魯棒性高、信息容量大、用戶無感知的特點,通過文中提出的監測算法在生產系統中檢測到大量疑似隱藏信息的未知組件和未知關系,基于未知關系和未知組件的信息隱藏和檢測方法有利于提前識別存在泄露數據的Office文件,降低企事業單位中通過Office文件泄露數據的風險。
OOXML文檔;可擴展標記語言;信息隱藏;信息發現;網絡安全;未知關系;未知組件;開放打包約定(OPC)
在信息技術飛速發展的今天,用戶通過互聯網豐富的應用交換了海量的電子文件。我國相繼出臺了《計算機信息系統國際聯網保密管理規定》、《網絡安全法》等一系列法律法規,以立法確立“網絡空間絕不是法外之地”的普遍認識。數據安全作為網絡安全的重要組成部分,任何組織都需要高度重視[1],很多數據竊取犯罪行為都是用電子文件作為載體盜竊組織的數據資產、知識產權,造成用戶信息甚至國家機密信息的泄露。犯罪分子可能通過在文件中隱藏信息來交換情報信息。信息隱藏手段和隱藏信息的發現之間的斗爭,總是此消彼長。從常規電子文件中發現“被隱藏”的信息具有非常高的現實意義和應用價值。
微軟公司推出的Office辦公套件(主要包括Word、Excel、PPT)在電子文件中占了很高的比例,許多研究者提出了基于Office文件的信息隱藏方法。張憧等人提出了通過顏色替換、改變字體大小的方式進行信息隱藏[2-4],這類方法從視覺上達到了信息隱藏的目的,在用戶進行清除格式或再次編輯后就會破壞隱藏的信息。楊德明等人提出了利用Word(97格式)文檔中未使用的數據塊(Block)隱藏數據[5],這種方法僅對舊版本的Office文件有效且可隱藏的信息容量受限于未使用的文件塊大小,并且無法抵御文件再次編輯對隱藏信息的破壞。劉玉玲等人通過對新版本Office文件格式標準的研究,利用文檔中無實際含義的屬性進行信息隱藏[6-10],但該方法受限于無用屬性的規模,可隱藏的信息容量有限。
以上的研究都在一定程度上通過微軟的辦公套件達到了信息隱藏的目的,其隱蔽性、數據容量、信息隱藏魯棒性等方面具有一定局限性。本文在研究OOXML文件格式的基礎上,提出了一種適用于Office辦公套件進行信息隱藏和信息發現的方法。
微軟Office辦公套件自Office2007開始,使用基于XML語言的OOXML(Open Office Extensible Markup Language)格式取代了Office97版本使用的私有文件格式MSCDF(Microsoft Compound Documents Format)格式[11-13]。OOXML在2006年成為了ECMA規范的組成部分(編號ECMA-376),并在2008年通過國際標準化組織的表決成為了國際標準。表1顯示了采用OOXML格式的文件與MSCDF文件最直觀的區別在于文件擴展名上的變化,用戶可以通過擴展名很容易判斷出當前編輯的文件是基于何種格式。
筆者通過對所在單位各主要業務系統的電子文件進行統計發現,Office文件在所有類型的電子文件中占比在70%以上,這表明Office文件在日常工作中已經成為文件流轉最主要的方式。圖1展示了近8年Office新舊兩種格式的占比情況,顯而易見基于OOXML格式的Office文件所占比例在逐年提高,已經逐步取代了MSCDF文件格式的地位。Office文件作為最常用的文件格式,通過其進行信息隱藏較難引起用戶的注意,研究基于OOXML文件格式的信息隱藏和發現方法具有重要的意義。

表1 Office文件擴展名對比
OOXML文件格式由一組文件組成,并通過ZIP壓縮算法進行打包。我們可以通過ZIP軟件直接打開OOXML格式的文檔,解壓后就是一組符合OOXML規范的文件。這組文件主要包括:文檔所包含的所有文件類型注冊文件[Content-Types].xml、關系文件(_rels)以及文件組件(parts)等。

圖1 Office文件類型逐年占比情況
OOXML文件格式遵循開放打包約定(Open Packaging Conventions,縮寫OPC)[14]。開放打包約定是由微軟公司發布的一種文件容器技術,用于將XML文件和非XML文件打包后共同構成一個單獨的文件實體,方便用于文件的展示和傳播。如今,開放打包約定已經廣泛應用于各類文件格式,如CAD軟件、Office軟件等文件。ZIP壓縮包是其主要的打包格式。OOXML文件格式由以下部分組成。
1)文件包(Package):OOXML文件格式遵循開放打包約定,采用了ZIP作為文件打包方式。ZIP雖然沒有成為國際標準,但其在廣泛的社區支持和開發人員的支持下,已成為事實上最通用的打包標準[15];
2)文件組件(Part):組成文件包的各個組件,如文件內容、元信息等,每個組件都有一個唯一標識,且其文件類型均在[Content_Types].xml中定義,這些文件組件組成了打包文件;
3)關系文件(Relationship):用于定義文件包、文件組件以及外部資源的關系信息。
1.1.1 OOXML文件包
OOXML遵循開放打包約定(OPC)[14],與單純使用XML相比,基于OPC的文件格式保持了嵌入在文檔中的文件實體不變的優點,并且生成的打包文件體積要小很多,相較于MSCDF文檔格式提升了空間的利用率。Office編輯程序打開文件時,將文件包的組件進行解析和渲染,用戶在保存文件時,編輯器又將各組件壓縮成一個文件,這種方式既保留了用戶使用單一文件編輯的使用體驗,也便于其他廠商通過開放的接口協議對文件進行交換共享和編程處理。
1.1.2文件組件(Part)
圖2展示了OOXML文件包內的文件結構,其中的document.xml、fontTable.xml、styles.xml等文件即OOXML的文件組件,Word編輯器在編輯文件時讀入這些組件完成文件內容、格式的渲染。

圖2 Office文件的構成
1.1.3關系文件(Relationship)
OOXML文件格式通過關系文件定義了對文件組件關聯、引用關系。OOXML文件中插入的圖片、音視頻等資源文件,必須在關系文件中定義引用關系,只有定義了文件關系的文件組件才會被打包入文件包中。
關系文件必須存放于文件包里的_rels目錄中,且文件名必須以.rels作為文件擴展名。文件包會存在多個關系文件,既有最外層的關系文件,也有各組件的的關系文件。通過關系文件,我們可以構建各文件組件之間的引用關系。以圖3展示的Word文件為例,該文件中包含的圖片,會被加入到關系文件document.xml.rels中,編輯器解析到這張圖片的標簽后,會根據ID在關系文件中找到對應的圖片文件的位置,從而將文件內容讀取到編輯器中進行渲染。

圖3 關系文件
關系文件的Relationship標簽有幾個重要的屬性用于組成關系的描述。Id在每個關系文件中具有唯一編號,Type是OOXML 規范里的文件類型,Target用于標識當前關系引用文件的位置,既可以是壓縮包內部的文件組件,也可以是互聯網位置上的文件[15]。
ECMA-376標準未明確規定文件中“未知關系”和“未知組件”應如何處理,微軟的Office辦公套件未對文件包內的未知關系和未知組件進行破壞。
1)未知關系
所有未在ECMA-376中定義的關系都被認為是未知關系(unknown relationship)[16]。OOXML遵循開放打包約定中關于關系文件的要求,包含未知關系的OOXML文件依然是有效的。復制文件、重命名文件都不會損壞OOXML中的未知關系,即使另存為也不會導致未知關系的丟失。
2)未知組件
文件包中未在關系文件中定義的文件組件被認為是未知組件(unknown parts)。ECMA-376標準規定未知組件應被忽略,在正式的環境中可由編輯器選擇性地丟棄[16]。
3)基于未知關系和未知組件的信息隱藏方法
ECMA-376標準陸續經過了2006年到2016年5個版本的修訂,對未知關系和未知組件的要求未發生實質性的變化。基于ECMA-376對未知關系和未知組件的處理要求,本文結合使用未知關系和未知組件,將測試文件加入到OOXML文件包中,從而隱藏信息。以“test.docx”文件為例,解壓縮后將需要隱藏的文件“hidden_data1.zip”和“hidden_data2.zip”分別放在文件包的word目錄和media目錄中,如圖2。被隱藏的文件不會出現在編輯器的界面中。
開放打包約定要求所有文件組件需要顯式聲明文件包中各組件的文件類型,被隱藏文件的擴展名必須在[Content_Types].xml文件中進行聲明,如圖4。

圖4 顯式定義文件類型
ECMA-376標準規定了編輯器可以自行決定是否舍棄文件包中的未知組件。微軟的Office套件會在文件被編輯、另存為后將未知組件從文件包中刪除。為了避免這種情況導致隱藏信息的丟失,我們需要在文件包內的任意一個關系文件中增加一條對未知組件的定義,如圖5。新增關系的Type屬性的值需要填寫ECMA-376標準之外的任意值,從而構成不符合ECMA-376的未知關系。在關系文件中定義未知關系后,無論對Office文件進行何種操作(如:編輯、保存、另存為),被隱藏的文件都會保留在OOXML文件包中。
在Office文件中隱藏信息的方法既要滿足OOXML規范的要求,也要在添加隱藏信息后文件仍能被無感知地編輯[4],同時還應具有一定的“抗編輯”能力。微軟Office2016及之前的版本均不會對未知關系和未知組件進行檢測,因此用戶不會感知到被隱藏的文件。這種信息隱藏的方式相較于調整字體大小、文字顏色的方法具有更高的隱蔽性。
通過本文描述的方法,我們可以在OOXML文件包中隱藏大量的信息。檢查OOXML文件中的未知關系、未知組件,并檢查文件中是否存在未被引用的組件來推測OOXML文件中是否存在隱藏信息。使用本文描述方法進行隱藏的信息,通常具有如下特征:
1)關系文件中包含了Type為OOXML規范外的類型;
2)關系文件中定義的ID未被文檔的其他組件使用。

圖5 未知關系、未知組件
我們可以通過檢查構成OOXML的文件組件和關系文件以判斷文件內是否包含可能的隱藏信息。圖5中編號為rId12的定義,其Type值不屬于OOXML規范中的內容,即可推測其關聯的文件可能是一個被非法隱藏到OOXML文件的隱藏文件。隱藏信息發現算法見偽代碼1。
偽代碼1 隱藏信息發現方法

輸入: OOXML文件F,已知關系RS;輸出:隱藏信息Data; BEGIN // 未知關系 T <- [] // 未知組件 C <- [] // 獲取OOXML文件包組件列表 zip <- ReadOOXMLZip(F, 'r') parts <- zip.namelist() // 獲取關系文件 rel_files <- FILTER(parts, endswith('.rels') // 遍歷并解析關系文件 FOR REL IN rel_files FOR TYPE,TARGET_FILE in CheckRelationshipFile(REL) // 如果關系文件中的TYPE值不在已知關系中,則記錄值C、T IF TYPE is not in RS C.append(TARGET_FILE) T.append(TYPE) ENDIF ENDFOR ENDFOR // 返回所有隱藏文件 RETURN C, TEND
本文在配置為Intel(R)Core(TM)i5-3320CPU@2.30GHz處理器、16 GB RAM 的64位Windows10操作系統,使用Jupyter Notebook6.1(Python3.8)工具套件以及Microsoft Word 2016的實驗環境中進行實驗驗證。運用文中提出的信息隱藏和信息發現方法,通過實驗在Word(OOXML格式)文件包中隱藏不同數量(500~10000個)的未知組件(文件大小均為500KB),并使用微軟Office Word 2016標準版對隱藏信息后的文件進行編輯保存、另存為以及清除格式操作,驗證隱藏信息的魯棒性。同時,從筆者所在單位的業務系統中搜集到50萬個OOXML格式的文件用于驗證文中提出的檢測方法。
表2的實驗結果表明,對隱藏了信息的Word文件進行編輯、另存為和清除格式操作不會導致隱藏信息的丟失。同時隱藏不同數量的文件后,Word文件的打開速度上未出現明顯減慢,這表明本文提出的信息隱藏方法有以下特點:
1)隱蔽性,使用該方法隱藏信息,普通用戶使用文檔時是無感知的,具有較好的隱蔽性;
2)容量分析,使用該方法理論上不存在隱藏信息容量的限制,隱藏信息的形式可表現為單個文件也可以多個文件的形式存在。實驗表明,編輯器僅讀入引用的組件,不會讀入僅有未知關系的組件,即使隱藏了很多文件或體積很大的文件,文件打開速度沒有明顯減慢;
3)魯棒性分析,OOXML文件在打開時,編輯器都會根據OOXML規范對文件進行合規性檢查,具有很好的自我糾錯機制,但根據OOXML規范中對未知組件和未知關系的約定為可以忽略,通過本文的信息隱藏方法在文件被編輯、另存為、復制、對內容進行格式清除時均可以保留被隱藏的信息。

表2 不同操作對隱藏信息的影響
表3的結果顯示,在50萬個OOXML格式的文件中存在未知關系的文件有3299個,其中大部分未知關系借用了有效的關系類型的部分內容,具有較高的迷惑性,普通用戶很難憑借經驗進行有效的識別。這表明,在實際工作產生的大量Office文檔中存在著大量的未知關系,這些未知關系不僅浪費了計算機寶貴的存儲資源,而且攻擊者可以通過這些常見的未知關系隱藏自己盜取的信息,從而使企業遭受不必要的財產損失。

表3 未知關系類型
圖6顯示了在50萬個OOXML文件所包含214個未知組件所在目錄的占比情況,結果表明OOXML文件包中存在大量未知組件,這些未知組件的存在表明在現實工作生活中,存在利用OOXML文件隱藏信息的可能。
實驗表明,文中所述隱藏信息的發現方法,可以優化指導涉及電子文件存儲的業務系統,在文件流轉過程中及時發現可能導致數據泄露的電子文件。

圖6 未知組件所在目錄情況
在網絡安全日趨復雜的今天,預防電子文件為載體的信息泄密,對于提高網絡空間的安全性具有重要的意義。本文提出基于OOXML未知關系和未知組件的信息隱藏,能夠在保證不影響用戶使用體驗的前提下從一定程度上提高隱藏信息的容量。與其他通過修改Office內容格式等方法進行信息隱藏的方法相比,具有較高的魯棒性且理論上沒有容量限制。實驗表明,在一些業務系統產生的Office文件中存在一定數量通過未知組件和未知關系隱藏的信息。今后,我們將更加深入研究OOXML規范中可能被用于信息隱藏的方法,進一步降低網絡空間攻擊者通過Office文件竊取信息的概率。
[1]曹雷.高校信息安全保障系統的設計與實現[J].現代電子技術,2021,44(02):81-85.
[2]張憧,張守彬.基于Word文本文檔的信息隱藏方法研究[J].電子技術與軟件工程,2015(12):219.
[3]錢宗峰,曹學軍,湯偉,等.基于Word文檔縮放字符比例的信息隱藏算法研究[J].河北北方學院學報(自然科學版),2011,27(04):32-36.
[4]李兵兵,王衍波,徐敏,等.一種Word 2007中可無源檢測的信息隱藏方法[J].計算機技術與發展,2010,20(05): 154-157.
[5]楊德明,郭盛.基于Word文檔的數據隱藏方法[J].計算機應用與軟件,2015,32(05):314-318.
[6]劉玉玲,萬晶,辛國江.Excel 2007文檔信息隱藏方法[J].計算機工程與應用,2010,46(28):70-72.
[7]郝宇,施勇,薛質.Office XML文檔信息隱藏方法[J].計算機技術與發展,2017,27(10):96-100.
[8]李兵兵,王衍波,徐敏.基于ZIP文檔格式的信息隱藏方法[J].計算機工程,2011,37(05):155-157+160.
[9]LIU T-Y,TSAI W-H.New steganographic method for data hiding in Microsoft Word documents by a change tracking technique[J].IEEE Transactions on Information Forensics and Security,2007,2(1):24–30.DOI:10.1109/TIFS.2006.890310.
[10]NISSIM N,COHEN A,ELOVICI Y.ALDOCX: Detection of Unknown Malicious Microsoft Office Documents Using Designated Active Learning Methods Based on New Structural Feature Extraction Methodology[J].IEEE Transactions on Information Forensics and Security,2017,12(3): 631-646.DOI:10.1109/TIFS.2016.2631905.
[11]DASARE A J,DHORE M L.Secured Approach for Hiding Data in MS Word Document Using MCDFF[M]//1st International Conference on Computing Communication Control and Automation Iccubea 2015.New York:Ieee,2015: 296-300.DOI:10.1109/ICCUBEA.2015.62.
[12]Wikipedia.Compound Document Format[EB/OL].https://en.wikipedia.org/wiki/Compound_File_Binary_Format.
[13]微軟.Microsoft Compound File Binary File Format,Version 3[EB/OL](2020-01-28)[2020-12-27] .https://www.loc.gov/preservation/digital/formats/fdd/fdd000380.shtml.
[14]ISO 29500-2:2008-2012,Open Packaging Conventions(Office Open XML)[S].
[15]郭儒佳.壓縮文件格式分析與應用[D].北京理工大學,2015.
[16]ECMA-376,Standard ECMA-376[S].