本發(fā)明涉及信息隱藏的隱寫(xiě)檢測(cè)
技術(shù)領(lǐng)域:
,特別是涉及一種針對(duì)RSID隱藏信息的無(wú)源檢測(cè)方法。
背景技術(shù):
:為了更高效地操作和管理文檔,微軟自O(shè)ffice2007版本后利用一種新的OfficeOpenXML(OOXML)格式來(lái)存儲(chǔ)Office文檔。由于OOXML格式使用ZIP文件壓縮技術(shù),因此可以減小存儲(chǔ)文件所需的磁盤(pán)空間,并降低了通過(guò)電子郵件、網(wǎng)絡(luò)和Web傳輸文件所需的帶寬。此外,OOXML格式與二進(jìn)制格式相比,還具有互操作性、可靠性、高效性和安全性等優(yōu)勢(shì)。修改標(biāo)識(shí)符(RevisionIdentifier,RSID)是OOXML格式的一類重要元素,它可以唯一的標(biāo)識(shí)每次對(duì)文檔的編輯。微軟OfficeWord文檔(包括Word2007/2010/2013版本)的DOCX文件利用RSID標(biāo)識(shí)來(lái)追蹤用戶對(duì)文檔的修改,并且可以依據(jù)RSID來(lái)合并多份不同修改版本。但是,DOCX文件的RSID并不是解析文件所必需的。因此,很多用戶通過(guò)利用DOCX文件的RSID標(biāo)識(shí)的冗余信息來(lái)嵌入秘密消息,隱蔽地傳輸給消息接收方。隨著OfficeWord軟件的更新升級(jí),當(dāng)前大部分Word文檔都是利用DOCX格式進(jìn)行存儲(chǔ)。在基于RSID標(biāo)識(shí)冗余內(nèi)容的信息隱藏研究方面,已經(jīng)有專門(mén)的隱寫(xiě)工具軟件,如Brain等。Brain軟件是一款專門(mén)的針對(duì)RSID標(biāo)識(shí)的隱寫(xiě)軟件,它支持DOCX格式文檔載體和純文本消息嵌入。Brain工具通過(guò)直接替換RSID標(biāo)識(shí)屬性值的末尾3個(gè)字節(jié)數(shù)據(jù)來(lái)嵌入隱藏消息,因而不會(huì)改變修改后DOCX文檔的內(nèi)容,具有很強(qiáng)的隱蔽性。由于每個(gè)RSID標(biāo)識(shí)屬性值可以隱藏3字節(jié)信息,并且通常在DOCX文檔中包含大量的RSID標(biāo)識(shí),因此brain軟件的隱寫(xiě)容量很大。當(dāng)前,在基于RSID標(biāo)識(shí)隱藏信息及檢測(cè)方面的研究已經(jīng)取得了一些研究成果。2009年解放軍理工大學(xué)徐敏等人提出了一種Word2007文檔隱藏信息的新方法,該方法利用WordXML的特點(diǎn)提出了替換“修改標(biāo)識(shí)”的信息隱藏方案(參考:Word2007文檔信息隱藏的新方法,《計(jì)算機(jī)研究與發(fā)展》,46:112-116,2009),2015年鄭州大學(xué)董艷等人利用偽隨機(jī)二進(jìn)制序列抽取載體文件特定的“修改標(biāo)識(shí)”屬性值,提出了一種改進(jìn)算法(參考:一種基于WordXML的信息隱藏新方法,《計(jì)算機(jī)技術(shù)與發(fā)展》,第2期,2015)。2011年意大利那不勒斯第二大學(xué)Castiglione等人提出了一種替換“修改標(biāo)識(shí)”屬性值的信息隱藏算法(參考:NewSteganographicTechniquesfortheOOXMLFileFormat,ARES2011,LNCS6908,pp.344–358,2011)。2012年中國(guó)發(fā)明專利201210424754.0提出了一種基于刪除標(biāo)記的OOX文檔數(shù)字水印方法,把水印信息嵌入到OOX文檔中的刪除修改標(biāo)識(shí)符w:rsidDel(參考:專利CN102968596A一種基于刪除標(biāo)記的OOX文檔數(shù)字水印方法,申請(qǐng)?zhí)?01210424754.0)。但是通過(guò)文獻(xiàn)調(diào)研分析發(fā)現(xiàn),當(dāng)前在針對(duì)修改標(biāo)識(shí)隱藏信息的檢測(cè)方法研究方面還未見(jiàn)公開(kāi)文獻(xiàn)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問(wèn)題是RSID標(biāo)識(shí)隱藏信息的無(wú)源檢測(cè),提供一種針對(duì)RSID隱藏信息的無(wú)源檢測(cè)方法,適用于檢測(cè)某個(gè)文本文檔是否包含隱藏信息,在不需要原始載體文件前提下檢測(cè)出隱藏信息是否存在。特別地,本發(fā)明適用于檢測(cè)某個(gè)DOCX文檔是否利用RSID標(biāo)識(shí)來(lái)隱藏秘密消息。本發(fā)明的技術(shù)解決方案是一種針對(duì)RSID隱藏信息的無(wú)源檢測(cè)方法,通過(guò)利用OOXML格式的特點(diǎn),只需要依據(jù)當(dāng)前檢測(cè)文檔就可以判定DOCX文檔是否含有隱藏信息,主要包括如下步驟:(1)解析待檢測(cè)的DOCX文檔,抽取出settings.xml和document.xml文件數(shù)據(jù);(2)解析settings.xml文件,從settings.xml文件中提取w:rsid的屬性值,并將結(jié)果順序存儲(chǔ)在第一容器中;(3)解析document.xml文件,按照目錄樹(shù)前序遍歷方式,從document.xml文件中提取前綴是w:rsid的屬性值,并將結(jié)果順序存儲(chǔ)在第二容器中;(4)對(duì)第二容器中的元素按照數(shù)值大小進(jìn)行從小到大排序、去除重復(fù)元素;(5)依據(jù)第一容器和第二容器中的元素,計(jì)算待檢測(cè)DOCX文檔的噪聲值;(6)依據(jù)用戶設(shè)定的檢測(cè)模式,確定檢測(cè)閾值;(7)通過(guò)比較文檔噪聲值和檢測(cè)閾值的大小關(guān)系,判定文檔是否隱藏秘密消息。進(jìn)一步地,步驟1)采用ZIP文件格式方式解析待檢測(cè)的DOCX文檔。進(jìn)一步地,步驟2)順序依次提取settings.xml文件中w:rsid的屬性值為4字節(jié)表示的十六進(jìn)制數(shù)值字符串,將該字符串轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制整型數(shù),并將結(jié)果順序存儲(chǔ)在所述第一容器中。進(jìn)一步地,步驟3)按照目錄樹(shù)前序遍歷方式,順序依次提取document.xml文件中前綴是w:rsid的屬性值為4字節(jié)表示的十六進(jìn)制數(shù)值字符串,將該字符串轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制整型數(shù),并將結(jié)果順序存儲(chǔ)在所述第二容器中。進(jìn)一步地,步驟6)所述檢測(cè)模式包括:漏警率低優(yōu)先模式、虛警率低優(yōu)先模式、成功率優(yōu)先模式。本發(fā)明所述“容器”可以采用C++容器類中vector、deque、list等順序存儲(chǔ)結(jié)構(gòu)。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果在于:(1)本發(fā)明中,給出了一種計(jì)算DOCX文檔噪聲值的算法,計(jì)算方法適用于任意.docx文件,獲得文檔噪聲值表征了文檔的一種固有的基本特征。(2)本發(fā)明中,基于文檔噪聲值特征提出了一種檢測(cè)DOCX文檔是否隱藏秘密消息的檢測(cè)方法。(3)本發(fā)明中,檢測(cè)方法是一種無(wú)源檢測(cè)方法,它不需要知道原始載體文檔數(shù)據(jù),僅僅通過(guò)利用待檢測(cè)文檔自身的特征就能夠?qū)崿F(xiàn)對(duì)文檔是否包含秘密信息進(jìn)行判別。(4)本發(fā)明中,用戶可以實(shí)際需求自由地選擇三種不同的檢測(cè)模式。檢測(cè)算法能夠根據(jù)用戶所設(shè)定的檢測(cè)模式,設(shè)置合適的算法閾值進(jìn)行隱藏消息的分析檢測(cè),以滿足不同用戶的實(shí)際應(yīng)用需要。(5)本發(fā)明中,給出了一種通用的閾值T的訓(xùn)練算法,適用于任意的用戶應(yīng)用場(chǎng)景,利用給定的訓(xùn)練算法確定閾值T,能夠降低既定場(chǎng)景下檢測(cè)算法的漏警率和虛警率。附圖說(shuō)明圖1是本發(fā)明方法實(shí)施例的實(shí)現(xiàn)流程圖;圖2是本發(fā)明方法實(shí)施例DOCX文檔的邏輯結(jié)構(gòu)示意圖;圖3是本發(fā)明方法中settings.xml文件<w:rsids>元素的示意圖;圖4是本發(fā)明方法中document.xml文件的目錄樹(shù)結(jié)構(gòu)示意圖;圖5是本發(fā)明方法中計(jì)算DOCX文檔噪聲值的流程示意圖。具體實(shí)施方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面通過(guò)具體實(shí)施例和附圖,對(duì)本發(fā)明做進(jìn)一步說(shuō)明。如圖1所示,是本發(fā)明實(shí)現(xiàn)無(wú)源檢測(cè)的流程示意圖,本發(fā)明的具體實(shí)現(xiàn)過(guò)程如下:(S1)解析待檢測(cè)的DOCX文檔,抽取出settings.xml和document.xml文件數(shù)據(jù)。對(duì)于用戶輸入待檢測(cè)的DOCX文檔,采用ZIP文件格式方式進(jìn)行解析,可以得到文檔的邏輯結(jié)構(gòu)是一個(gè)目錄結(jié)構(gòu)。以Example.docx文檔為例,其目錄樹(shù)結(jié)構(gòu)如圖2所示,可以發(fā)現(xiàn)在./word/目錄下包含settings.xml和document.xml文件。為了后續(xù)步驟中的檢測(cè),需要抽取出./word/settings.xml和./word/document.xml文件數(shù)據(jù)。(S2)從settings.xml文件中提取w:rsid屬性值,并將結(jié)果存儲(chǔ)在容器v0。處理步驟S1中抽取得到的settings.xml文件,在settings.xml根元素<w:settings>中包含子元素<w:rsids>,而元素<w:rsids>由1個(gè)w:rsidRoot元素和若干個(gè)w:rsid元素組成。依次順序提取w:rsid中屬性w:val的屬性值,它是一個(gè)4字節(jié)表示的十六進(jìn)制數(shù)值字符串,也即該字符串包含8個(gè)字符且每個(gè)字符為‘0’~‘9’或者‘A’~‘F’。將上述字符串按照十六進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制整數(shù),并將該整數(shù)依次按照提取順序存儲(chǔ)到容器vector<int>v0。以Example.docx文檔為例,其settings.xml文件中元素<w:rsids>的內(nèi)容如圖3所示。依次提取w:rsid中屬性w:val的屬性值為字符串“00300F3E”和“005579D9”,將其轉(zhuǎn)化成十進(jìn)制整型數(shù)分別等于3,149,630和5,601,753。然后依次順序存儲(chǔ)到容器vector<int>v0中得到,v0[0]=3,149,630、v0[1]=5,601,753。(S3)按照目錄樹(shù)前序遍歷方式,從document.xml文件中提取前綴是w:rsid的屬性值,并將結(jié)果存儲(chǔ)在容器v1。處理步驟S1中抽取得到的document.xml文件,該xml文檔的根元素<w:document>包含子元素<w:body>,而元素<w:body>由若干個(gè)<w:p>、<w:r>和<w:sectPr>等子元素組成,并且各子元素內(nèi)可以嵌套多個(gè)子元素。xml格式文件是一個(gè)目錄樹(shù)結(jié)構(gòu),利用樹(shù)的前序遍歷算法可以搜索文檔的每個(gè)節(jié)點(diǎn)(元素)。然后匹配每個(gè)節(jié)點(diǎn)中元素屬性名前綴為“w:rsid”的屬性,在document.xml文件中只存在4種屬性,分別是w:rsidP、w:rsidR、w:rsidRPr和w:rsidRDefault。可以獲得這些屬性名的屬性值,它是一個(gè)4字節(jié)表示的十六進(jìn)制數(shù)值字符串,也即該字符串包含8個(gè)字符且每個(gè)字符為‘0’~‘9’或者‘A’~‘F’。將上述字符串按照十六進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制整數(shù),并將該整數(shù)依次按照提取順序存儲(chǔ)到容器vector<int>v1。以Example.docx文檔為例,其document.xml文件的內(nèi)容如圖4所示。按照節(jié)點(diǎn)前序遍歷方式搜索,依次提取屬性名前綴為“w:rsid”的屬性值為字符串“005579D9”、“00300F3E”和“005579D9”,將其轉(zhuǎn)化成十進(jìn)制整型數(shù)分別等于5,601,753、3,149,630和5,601,753。然后依次順序存儲(chǔ)到容器vector<int>v1中得到,v1[0]=5,601,753、v1[1]=3,149,630、v1[2]=5,601,753。(S4)對(duì)v1中的元素按照數(shù)值大小進(jìn)行從小到大排序、去除重復(fù)元素。處理步驟S3中容器v1中的元素,由于v1中每個(gè)元素都是整型數(shù),因此可以利用排序算法對(duì)其按照從小到大進(jìn)行排序。然后刪除容器v1中的重復(fù)元素,生成一個(gè)有序且不含重復(fù)元素的v1。以步驟S3中獲得的容器v1為例,排序去重后生成的v1為:v1[0]=3,149,630、v1[1]=5,601,753。(S5)利用v0和v1計(jì)算DOCX文檔的特征噪聲值N。通過(guò)利用步驟S2獲得的容器v0和步驟S4生成的容器v1,計(jì)算待檢測(cè)DOCX文檔的噪聲值N,如圖5所示,具體計(jì)算方法如下:(S5-1)依次順序讀取v1的每一個(gè)元素x直到所有元素都讀取完畢;(S5-2)順序查找v0中的元素,若發(fā)現(xiàn)v0中存在與x值相等的元素則執(zhí)行步驟S5-1,否則執(zhí)行步驟S5-3;(S5-3)將十進(jìn)制整型數(shù)x表示成一個(gè)32比特的二進(jìn)制數(shù),不足的高位用‘0’填充,并且采用序列<1,2,…,32>按照從高有效位到低有效位的次序標(biāo)記這32個(gè)比特,記錄n值等于出現(xiàn)比特‘1’的最小序數(shù);(S5-4)將n值累加到文檔噪聲值N(初始值N=0),執(zhí)行步驟S5-1。依據(jù)計(jì)算步驟S5-1到步驟S5-4,待檢測(cè)DOCX文檔的特征噪聲值N的計(jì)算表達(dá)式為,其中nx表示在32比特二進(jìn)制表征的整數(shù)x中從最高有效位開(kāi)始計(jì)數(shù)到首次出現(xiàn)比特‘1’的序數(shù),表示x在容器v1中但不在容器v0中。(S6)確定檢測(cè)算法的閾值T。依據(jù)用戶設(shè)定的檢測(cè)模式,包括漏警率低優(yōu)先模式、虛警率低優(yōu)先模式和成功率優(yōu)先模式,確定檢測(cè)算法的閾值T,檢測(cè)模式和閾值T的對(duì)應(yīng)關(guān)系如表1所示。即當(dāng)選擇漏警率低優(yōu)先模式時(shí),閾值T=16;當(dāng)選擇虛警率低優(yōu)先模式時(shí),閾值T=128;當(dāng)選擇成功率優(yōu)先模式時(shí),閾值T=48。表1檢測(cè)模式和閾值T的對(duì)應(yīng)關(guān)系表假定事件A表示含隱藏信息文檔判定為不含隱藏信息,事件B表示不含隱藏信息文檔判定為含有隱藏信息,則檢測(cè)算法的漏警率PMD、虛警率PFA、成功率PSUCC可以表示成,PSUCC=1-PMD+PFA2]]>值得注意的是,閾值T不局限于表1中的取值,用戶可以根據(jù)實(shí)際需求來(lái)確定,表1中閾值T的取值是根據(jù)通常模型訓(xùn)練而獲得的經(jīng)驗(yàn)值,具備一般性。(S7)通過(guò)比較N值與T值的大小,判定文檔是否隱藏秘密消息。通過(guò)比較步驟S5中計(jì)算得到N值與步驟S6中設(shè)定T值的大小,判定文檔是否隱藏秘密消息,具體判定方法如表2所示。即當(dāng)N>T時(shí),待檢測(cè)的DOCX文檔含有隱藏信息;當(dāng)N≤T時(shí),待檢測(cè)的DOCX文檔不含有隱藏信息。表2判定文檔是否含有隱寫(xiě)信息比較值判定結(jié)果N>T含有N≤T不含有本發(fā)明中所述閾值T的訓(xùn)練算法具體實(shí)施步驟如下:步驟1:在用戶既定場(chǎng)景中選擇K對(duì)陽(yáng)性、陰性樣本,記陽(yáng)性樣本集合陰性樣本集合通常要求樣本數(shù)量K≥500;步驟2:利用檢測(cè)算法中步驟S1至步驟S5計(jì)算樣本的特征噪聲值,得到結(jié)果為陽(yáng)性樣本的噪聲值集合陰性樣本的噪聲值集合其中表示某單個(gè)樣本的特征噪聲值;步驟3:記表示陽(yáng)性樣本噪聲值集合N+中的最小噪聲值、表示陰性樣本噪聲值集合N-中的最大噪聲值,即則根據(jù)訓(xùn)練集數(shù)據(jù)計(jì)算閾值T的結(jié)果如表3所示,具體如下,(1)若選擇漏警率低優(yōu)先模式,則閾值(2)若選擇虛警率低優(yōu)先模式,則閾值(3)若選擇成功率優(yōu)先模式,則閾值T的計(jì)算表達(dá)式為,(3-a)當(dāng)時(shí),(3-b)當(dāng)時(shí),表3根據(jù)訓(xùn)練集計(jì)算閾值T以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,本領(lǐng)域的普通技術(shù)人員可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求書(shū)所述為準(zhǔn)。當(dāng)前第1頁(yè)1 2 3