專利名稱:自然語言水印魯棒性測試方法及其系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及自然語言水印領域,特別涉及一種自然語言水印魯棒性測試方法及其系統(tǒng)。
背景技術:
隨著計算機技術的發(fā)展和互聯(lián)網(wǎng)的普及,人們一方面享受著科技發(fā)展帶來的便捷,一方面卻越來越擔心信息的安全傳遞。無論是國家軍事信息、文學作品或者是個人隱私,人們都希望這些信息能夠在網(wǎng)絡上安全的傳輸,所以數(shù)字水印這項技術也越來越受到人們的關注和重視。1993年Tirkel首次正式提出了數(shù)字水印的概念,數(shù)字水印旨在通過給圖像、音頻視頻等作品中嵌入水印來保護數(shù)字作品的版權。圖像水印是較成熟的一項數(shù)字水印技術,它將一段標志版權所有者的信息嵌入圖 像中,并使該信息不被人感知。但利用圖像水印保護文字作品卻面臨著如下問題(1)作品必須以圖片的形式保存、傳播,導致最終用戶無法進行正常的編輯;(2) OCR能夠去除水印,導致保護失效;(3)圖片的傳播形式容易引起敵手的懷疑,增大了水印被破壞的可能性。因此,圖像水印技術并不適于文字作品的版權保護。自然語言水印為文字作品的保護開辟了新的思路,它使用自然語言文本作為水印載體,利用保留語義的變換方法改寫文字,從而在語法語義結(jié)構中嵌入秘密信息,因此水印不會因為排版、OCR等操作而被破壞或去除,更能有效的保護文字作品。水印算法的魯棒性體現(xiàn)在含水印文本在遭受惡意攻擊或者經(jīng)過正常操作后,依然能夠從中正確的提取出水印信息的特性。惡意攻擊是指為破壞水印而采取的具有攻擊性的處理方法,如刪除關鍵語句、打亂語句順序;正常操作是用戶對于文本進行的不可避免的操作,如復制粘貼、字體更改、排版。由于互聯(lián)網(wǎng)上的文字作品能夠輕易的被復制、修改,因此,一個好的水印系統(tǒng)必須具備良好的魯棒性,才能對版權信息進行有效保護。目前還沒有針對自然語言水印魯棒性的統(tǒng)一評測方案,因此多種水印算法無法進行公平的比較,這導致(I)用戶無法得知自己的基本需求是否得到了滿足;(2)研究人員無法通過比較不同的算法來對自己的算法提出改進措施。除此之外,研究人員對于自己提出的水印算法的評測并不一定全面客觀,很多聲稱安全的算法都已經(jīng)被攻破。綜上所述,雖然自然語言水印可以保護文字作品的版權,但是目前缺乏對自然語言水印魯棒性的統(tǒng)一評測方案,導致自然語言水印技術的應用與科學評測受到制約。因此,本發(fā)明所研究的自然語言水印魯棒性評測系統(tǒng)對于自然語言水印技術的發(fā)展具有重大意義。
發(fā)明內(nèi)容
針對上述現(xiàn)有技術存在的缺陷或不足,本發(fā)明的目的在于,提供一種自然語言水印魯棒性測試方法及其系統(tǒng),本發(fā)明使用待測水印算法對載體文本嵌入水印信息,并針對水印算法的敵手模型得到不同的主動攻擊方法,利用主動攻擊方法對水印文本進行攻擊,然后從攻擊后的水印文本中提取出新的水印信息,最終得到誤比特率。經(jīng)試驗驗證,本發(fā)明能夠有效地評價待測的自然語言水印算法的魯棒性。為了達到上述目的,本發(fā)明采用如下的技術解決方案一種自然語言水印魯棒性測試方法,具體包括如下步驟I)讀取系統(tǒng)運行所需參數(shù);2)利用待測水印嵌入算法,向原始載體文本中嵌入水印信息,生成水印文本;3)利用主動攻擊方法對水印文本進行主動攻擊,生成攻擊后文本;4)利用待測水印提取算法,從攻擊后文本中提取出新的水印信 息;5)計算誤比特率,將從攻擊后文本中提取出的新的水印信息和原始水印信息逐比特比較,不相同的比特數(shù)和水印信息比特總數(shù)之比即為誤比特率。進一步的,所述主動攻擊方法采用替換攻擊方法、刪除攻擊方法或者排序攻擊方法,所述替換攻擊方法是指使用與待測水印嵌入算法相同的NLP工具對載體文本中的載體單元進行語義不變的變換的方法;所述刪除攻擊方法為SAI刪除攻擊方法、SAII刪除攻擊方法或SAIII刪除攻擊方法,其中,所述SAI刪除攻擊方法是指利用自動摘要工具對整篇水印文本進行壓縮比為c的自動摘要,其攻擊力度為被刪除的載體單元個數(shù)和水印文本中載體單元總數(shù)的比值;所述SAII刪除攻擊方法是指利用自動摘要工具,對水印文本中的每個段落分別進行給定壓縮比的自動摘要;所述SAIII刪除攻擊方法是指利用自動摘要工具,對水印文本中的每個段落分別進行給定壓縮比的摘要,其攻擊力度為刪除的單詞個數(shù)和水印文本單詞總數(shù)的比值;所述排序攻擊方法是指調(diào)整段落在載體文本中的順序,以期破壞水印息同步的方法。進一步的,所述替換攻擊方法具體包括如下步驟步驟I :利用與待測水印算法相同的NLP工具分析載體得到所有載體單元,并將所有載體單元加入集合AllUnits ;步驟2 :令當前攻擊力度a=minstrength ;步驟3 :若a〈=maxstrength,計算需要攻擊的載體單元個數(shù)an,其中a為當前攻擊力度,η為載體文本AllUnits中載體單元的個數(shù);否則,攻擊結(jié)束;步驟4 :從AllUnits中隨機挑選an個載體單元;對于每個載體單元,隨機選取它的一個可行變換對其進行替換;步驟5 :a=a+step,轉(zhuǎn)至步驟 3。進一步的,所述SAII刪除攻擊方法具體包括如下步驟步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取下一個段落,統(tǒng)計該段落中載體單元個數(shù)i,轉(zhuǎn)至步驟2 ;步驟2 :對該段落進行給定壓縮比c的自動摘要,生成攻擊后的文本段落attackedPar ;步驟3 :統(tǒng)計attackedPar中的載體單元個數(shù)j ;步驟4 :計算攻擊前后載體單元減少的數(shù)目unitNum=i-j。若unitNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和unitNum,同時記錄該段在載體文本中的位置Ioc;否則,轉(zhuǎn)至步驟I ;步驟5 :令當前攻擊力度a=minstrength ;
步驟6 :若a〈=maxstrength,計算水印文本中需要刪除的載體單元個數(shù)an, η是載體文本中載體單元的個數(shù);否則,攻擊結(jié)束;步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落;此時,AllUnits中的每一段相當于一個物品,an相當于背包容量,每段對應的unitNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案;步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落的內(nèi)容,然后對照相應的loc,生成該攻擊力度對應的攻擊后文本;步驟9 :a=a+step,轉(zhuǎn)至步驟 6。進一步的,所述SAIII刪除攻擊方法的具體步驟如下
步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取一個未檢測段落,統(tǒng)計該段落中單詞個數(shù)i,轉(zhuǎn)至步驟2 ;步驟2 :對該段進行給定壓縮比c的自動摘要,生成攻擊后的段落attackedPar ;步驟3 :統(tǒng)計attackedPar中的單詞個數(shù)j ;步驟4 :計算攻擊前后單詞減少的數(shù)目wordNum=i_j。若wordNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和wordNum,同時記錄該段在載體文本中的位置loc;否則,轉(zhuǎn)至步驟I ;步驟5 :令當前攻擊力度a=minstrength ;步驟6 :若a〈=maxstrength,計算水印文本中需要刪除的單詞個數(shù)an, η是載體文本中單詞總和;否則,攻擊結(jié)束;步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落。此時,AllUnits中的每一個段落相當于一個物品,an相當于背包容量,每段落對應的wordNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案;步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落內(nèi)容,然后對照相應的loc,生成攻擊后文本;步驟9 :a=a+step,轉(zhuǎn)至步驟 6。進一步的,所述排序攻擊方法的具體步驟如下步驟I :若載體文本中所有段落都處理完畢,轉(zhuǎn)至步驟3 ;否則,選取下一段,利用Traverse函數(shù)統(tǒng)計該段載體單元的個數(shù)i ;步驟2 :若i古0,將該段對應的i和該段在載體文本中的位置序號Ioc加入集合Rec;否則,轉(zhuǎn)至步驟I;步驟3 :令當前攻擊力度a=minstrength ;步驟4 :若a〈=maxstrength,計算需要攻擊的載體單元個數(shù)an, η為載體文本中載體單元總數(shù);否則,攻擊結(jié)束;步驟5 :利用背包算法從集合Rec中選擇需要攻擊的段落位置序號。每一段相當于一個物品,an相當于背包容量,每一段對應的i相當于物品體積,-I為每個物品的價值;步驟6:所選的段落位置序號構成序列R,將R重排,要求每一個段落的位置都發(fā)生變化,生成排序后位置序列Q ;
步驟7 :遍歷集合Rec,將Ioc對應的段落移動到序列Q中記錄的相應位置,生成攻擊后文本;步驟8 :a=a+step,轉(zhuǎn)至步驟 4。實現(xiàn)上述自然語言水印魯棒性檢測方法的系統(tǒng),其特征在于,包括依次連接的參數(shù)配置模塊、嵌入模塊、攻擊模塊、提取模塊和計算模塊;所述模塊分別實現(xiàn)如下功能參數(shù)配置模塊讀取系統(tǒng)運行所需參數(shù),并為嵌入模塊、提取模塊和攻擊模塊提供必要的參數(shù);嵌入模塊利用待測水印嵌入算法,向原始載體文本中嵌入水印信息,生成水印文本,并為攻擊模塊提供水印文本;攻擊模塊利用主動攻擊方法對水印文本進行主動攻擊,生成攻擊后文本,并將攻 擊后文本提供給提取模塊;提取模塊利用待測水印提取算法,從攻擊后文本中提取出新的水印信息;計算模塊計算誤比特率BER。進一步的,所述替換模塊通過如下流程實現(xiàn)其功能步驟I :利用與待測水印算法相同的NLP工具分析載體得到所有載體單元,并將所有載體單元加入集合AllUnits。步驟2 :令當前攻擊力度a=minstrength。步驟3 :若a〈=maxstrength,計算需要攻擊的載體單元個數(shù)an,其中a為當前攻擊力度,η為載體文本AllUnits中載體單元的個數(shù);否則,攻擊結(jié)束。步驟4 從AllUnits中隨機挑選an個載體單元。對于每個載體單元,隨機選取它的一個可行變換對其進行替換。步驟5 :a=a+step,轉(zhuǎn)至步驟 3。進一步的,所述刪除攻擊模塊包括SAI刪除攻擊模塊、SAII刪除攻擊模塊和SAIII刪除攻擊模塊,其中,所述SAII刪除攻擊模塊通過如下流程實現(xiàn)其功能步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取下一個段落,統(tǒng)計該段落中載體單元個數(shù)i,轉(zhuǎn)至步驟2。步驟2 :對該段進行給定壓縮比c的自動摘要,生成攻擊后的文本段落attackedPar。步驟3 :統(tǒng)計attackedPar中的載體單元個數(shù)j。步驟4 :計算攻擊前后載體單元減少的數(shù)目unitNum=i-j。若unitNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和unitNum,同時記錄該段在載體文本中的位置Ioc;否則,轉(zhuǎn)至步驟I。步驟5 :令當前攻擊力度a=minstrength。步驟6 :若a〈=maxstrength,計算水印文本中需要刪除的載體單元個數(shù)an, η是載體文本中載體單元的個數(shù);否則,攻擊結(jié)束。步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落。此時,AllUnits中的每一段相當于一個物品,an相當于背包容量,每段對應的unitNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案。步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落的內(nèi)容,然后對照相應的loc,生成該攻擊力度對應的攻擊后文本。步驟9 :a=a+step,轉(zhuǎn)至步驟 6。進一步的,所述SAIII刪除攻擊模塊通過如下流程實現(xiàn)其功能步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取一個未檢測段落,統(tǒng)計該段落中單詞個數(shù)i,轉(zhuǎn)至步驟2。步驟2 :對該段進行給定壓縮比c的自動摘要,生成攻擊后的段落attackedPar。步驟3 :統(tǒng)計attackedPar中的單詞個數(shù)j。步驟4 :計算攻擊前后單詞減少的數(shù)目wordNum=i - j。若wordNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和wordNum,同時記錄該段在載體文本中的位置loc;否則,轉(zhuǎn)至步驟I?!げ襟E5 :令當前攻擊力度a=minstrength。步驟6 :若a<=maxstrength,計算水印文本中需要刪除的單詞個數(shù)an, η是載體文本中單詞總和;否則,攻擊結(jié)束。步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落。此時,AllUnits中的每一段相當于一個物品,an相當于背包容量,每段落對應的wordNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案。步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落內(nèi)容,然后對照相應的loc,生成該攻擊力度對應的攻擊后文本。步驟9 :a=a+step,轉(zhuǎn)至步驟 6。
圖I為本發(fā)明的總體流程圖。圖2為本發(fā)明中替換攻擊流程圖。圖3為本發(fā)明中SAII刪除攻擊流程圖。圖4為本發(fā)明中SAIII刪除攻擊流程圖。圖5為本發(fā)明中排序攻擊流程圖。圖6為刪除攻擊位置和誤比特的關系示意圖。圖7為在刪除攻擊下,空域編碼算法的誤比特率曲線。圖8為在刪除攻擊下,變換域擴頻編碼算法的誤比特率曲線。以下結(jié)合附圖和具體實施方式
對本發(fā)明進一步解釋說明。
具體實施例方式首先,將本發(fā)明涉及的術語定義如下I、載體單元文本中可被一種特定NLP (自然語言處理)技術處理并生成語義不變變換的最小語言片段。2、可行變換在給定載體單元所處的上下文中,與載體單元語義相同的不同表達形式稱為可行變換。3、可行變換集合一個載體單元和它的所有可行變換構成的集合,稱為可行變換集合。例如,對于基于同義詞替換的水印算法,載體文本中具有同義詞的單詞是載體單元,它的同義詞都是它的可行變換,該單詞以及它的同義詞構成可行變換集合;而對于基于句式變換的水印算法,載體文本中可以做句式變換的句子就是載體單元,它的各種變換句式是可行變換,這些句子構成可行變換集合。對于一個給定的載體文本以及該文本中的一個載體單元,可行變換集合中的每個元素,在該語境中均可以互相替換,而不影響語義。4、嵌入率(e):e=l/n。其中,I為水印比特長度,η為載體文本中載體單元的個數(shù)。目前大部分自然語言水印算法均采用比特串作為水印,所以本文采用誤比特率作為衡量水印算法魯棒性的指標。5、誤比特率(BER):將從攻擊后文本中提取出的新的水印信息和原始水印信息逐比特比較,不相同的比特數(shù)和水印信息比特總數(shù)之比即為誤比特率。6、壓縮比(c):通過摘要軟件提取出來的詞數(shù)占原始文檔詞數(shù)的百分比稱為壓縮比。7、攻擊力度(a) a=k/n, k是水印文本中被攻擊的單元數(shù)量,η為水印文本中載體 單元個數(shù)或單詞個數(shù)。例如,替換攻擊時,η被替換的載體單元數(shù)量;刪除攻擊時,η根據(jù)不同的刪除方式來確定。本發(fā)明的自然語言水印魯棒性測試方法,具體包括如下步驟I、從用戶配置文件scheme, xml中讀取系統(tǒng)運行所需參數(shù)a)originalPath :原始文本所在文件夾路徑。b) embededPath :水印文本所在文件夾路徑。如果已有水印文本,可將它們放在該文件夾中,選擇跳過系統(tǒng)中的嵌入模塊,直接進入攻擊模塊。c)attackedPath :攻擊后文本所在的文件夾路徑。d)resultPath :誤比特率輸出文本路徑。e)key:密鑰。要求同一篇文本的嵌入和提取所用的密鑰是相同的。f)m:水印信息。g)e :嵌入率(實驗證明嵌入率對于攻擊效果影響很小,一般選擇e=0. 5)。h)attackModel :用戶選擇的主動攻擊方法。主動攻擊方法有如下幾種SA0,SAI,SAII,SAIII和SAIV。其中,SAO表示替換攻擊;SAI,SAII,SAIII都表示刪除攻擊,他們之間的差異將在主動攻擊部分進行說明;SAIV表示排序攻擊。i) c :壓縮比(建議值0. 5)。j)maxstrength代表攻擊力度上限,minstrength代表攻擊力度下限,step代表攻擊力度變化步長。2、利用待測水印嵌入算法,向原始載體文本中嵌入水印信息m,生成水印文本。為了使本發(fā)明能夠用于各種水印算法魯棒性的測試,本發(fā)明為水印嵌入提供如下接口 # public void Traverse(string cover, UnitCollection AllUnits)本函數(shù)用于對載體文本cover進行分析,將cover中所有的載體單元添加到集合AllUnits 中,AllUnits 是 cover 中所有載體單兀的集合。UnitCollection 繼承 System.Collection. CollectionBase,是由本系統(tǒng)提供的一個統(tǒng)一的數(shù)據(jù)結(jié)構。# public string Embedding(UnitCollection AllUnits, string m, char[]key)本函數(shù)用于根據(jù)密鑰key,將水印信息m嵌入到cover中,AllUnits由Traverse得到。
3、根據(jù)用戶配置參數(shù),對水印文本進行主動攻擊,生成攻擊后文本;4、從攻擊后文本中提取出新的水印信息。本發(fā)明為水印提取提供如下接口 # public char[]Extracting(string cover,UnitCollection AllUnits, char[]key)本函數(shù)用于從cover中提取出新的水印信息。其中,AllUnits是由Traverse函數(shù)對cover進行分析得到。5、計算誤比特率(BER)。參見圖1,一種實現(xiàn)本發(fā)明的自然語言水印魯棒性測試方法的系統(tǒng),具體包括依次相連接的參數(shù)配置模塊、嵌入模塊、攻擊模塊、排序模塊和計算模塊,所述模塊分別實現(xiàn)如下功能 (I)參數(shù)配置模塊該模塊與嵌入模塊、提取模塊和攻擊模塊交互,用于從用戶配置文件scheme, xml中讀取系統(tǒng)運行所需參數(shù),并為嵌入模塊、提取模塊和攻擊模塊提供必要的參數(shù)。k)originalPath :原始文本所在文件夾路徑。l)embededPath :水印文本所在文件夾路徑。如果已有水印文本,可將它們放在該文件夾中,選擇跳過系統(tǒng)中的嵌入模塊,直接進入攻擊模塊。m) attackedPath :攻擊后文本所在的文件夾路徑。n)resultPath :誤比特率輸出文本路徑。o)key:密鑰。要求同一篇文本的嵌入和提取所用的密鑰是相同的P) m:水印信息。q)e :嵌入率(實驗證明嵌入率對于攻擊效果影響很小,一般選擇e=0. 5)。r)attackModel :用戶選擇的主動攻擊方法。主動攻擊方法有如下幾種SA0,SAI,SAII,SAIII和SAIV。其中,SAO表示替換攻擊;SAI,SAII,SAIII都表示刪除攻擊,他們之間的差異將在主動攻擊部分進行說明;SAIV表示排序攻擊。s) c :壓縮比(建議值0. 5)。t)maxstrength代表攻擊力度上限,minstrength代表攻擊力度下限,step代表攻擊力度變化步長。(2)嵌入模塊該模塊與參數(shù)配置模塊和攻擊模塊交互,用于利用待測水印嵌入算法,向原始載體文本中嵌入水印信息m,生成水印文本,并為攻擊模塊提供水印文本。為了使本發(fā)明能夠用于各種水印算法魯棒性的測試,本發(fā)明為水印嵌入提供如下接口 # public void Traverse(string cover, UnitCollection AllUnits)本函數(shù)用于對載體文本cover進行分析,將cover中所有的載體單元添加到集合AllUnits 中,AllUnits 是 cover 中所有載體單兀的集合。UnitCollection 繼承 System.Collection. CollectionBase,是由本系統(tǒng)提供的一個統(tǒng)一的數(shù)據(jù)結(jié)構。# public string Embedding(UnitCollection AllUnits, string m, char[]key)本函數(shù)用于根據(jù)密鑰key,將水印信息m嵌入到cover中,AllUnits由Traverse得到。(3)攻擊模塊該模塊與參數(shù)配置模塊和提取模塊交互,用于根據(jù)參數(shù)配置模塊提供的用戶配置參數(shù),對水印文本進行主動攻擊,生成攻擊后文本,并將攻擊后文本提供給提取模塊。(4)提取模塊該模塊與參數(shù)配置模塊和攻擊模塊交互,用于利用待測水印提取算法,從攻擊后文本中提取出新的水印信息。本發(fā)明為水印提取提供如下接口 # public char[]Extracting(string cover,UnitCollection AllUnits, char[]key)
本函數(shù)用于從cover中提取出新的水印信息。其中,AllUnits是由Traverse函數(shù)對cover進行分析得到。(5)計算模塊該模塊與提取模塊交互,用于計算誤比特率(BER)。在Atallah等人提出的針對句子級水印算法的敵手模型的基礎上,我們提出針對自然語言水印攻擊的通用敵手模型I、根據(jù)Kerckhoffs原則,攻擊者可以使用與水印算法相同的NLP工具對載體文本中的同義詞或句子等進行語義不變的變換,以期擦除水??;2、改變語義的同義詞替換、句子變換等,以期破壞水印同步。但攻擊的地方不能過多,否則影響文本的原意;3、插入或刪除少量或不重要的句子以期破壞水印同步3. I插入新的句子。插入的句子不可能是任意的,因為要保證語義的流暢,所以只能是在語義上是重復性的或透明性的句子;3. 2刪除不重要的句子。人類語言具有一定冗余,比如重要的信息往往會在文本中重復出現(xiàn);需要強調(diào)的信息也會通過不同表達方式重復敘述。從載體文本中摘除少量重復性的句子不會對載體文本的使用價值造成明顯影響。4、調(diào)整段落的順序。相當于打亂水印比特的順序。其中,第2條相當于刪除原有語義后再插入新語義,效果相當于3. I和3. 2同時使用,但造成語義改變較3. I和3. 2大,而且NLP工具難以自動實現(xiàn)。第3條中,考慮到要保證語義的流暢,3. I也難以實現(xiàn)因為要找到合適的位置可以插入重復性或透明性的句子,根據(jù)目前的NLP技術還難以做到。而3. 2可以利用自動摘要軟件實現(xiàn)。3. I和3. 2的效果分別來看是相同的,兩種攻擊從效果上看都是相當于同步攻擊,即使得嵌入時和提取時水印比特序列錯位造成秘密信息無法正確提取。因此,只須考慮
3.2即可。由此可見,評估自然語言水印算法時,實際上需要考慮的敵手模型只有第I條,第
3.2條和第4條。依據(jù)上述敵手模型,本發(fā)明提供三種主動攻擊方法第一種替換攻擊使用與待測水印嵌入算法相同的NLP工具對載體文本中的載體單元進行語義不變的變換,這種攻擊方法稱為替換攻擊。由于該攻擊方法使用與待測水印嵌入算法相同的變換,因此對水印文本語義的破壞較其他攻擊算法小。如圖2所示,替換攻擊流程的步驟如下步驟I :利用待測水印嵌入算法中Traverse函數(shù)分析載體文本,將所有載體單元加入集合AllUnits。步驟2 :令當前攻擊力度a=minstrength。步驟3 :若a〈maxstrength,計算需要攻擊的載體單元個數(shù)an,其中a為當前攻擊力度,η為載體文本AllUnits中載體單元的個數(shù);否則,攻擊結(jié)束。步驟4 從AllUnits中隨機挑選an個載體單元。對于每個載體單元,隨機選取它的一個可行變換對其進行替換。步驟5 :a=a+step,轉(zhuǎn)至步驟 3。第二種刪除攻擊利用Microsoft Office Word 2007的自動摘要工具,從載體文本中刪除少量語義上不重要的句子,這種攻擊方法稱為刪除攻擊。雖然刪除攻擊對水印文本語義的破壞較替換攻擊大,但是這種攻擊方式使用摘要工具進行攻擊,操作簡單,無需進行繁瑣復雜的自然語言處理過程。刪除攻擊方法有以下三種,用戶可以根據(jù)需要進行選 擇DSAI :利用自動摘要工具(Microsoft Office Word 2007自動摘要工具)對整篇水印文本進行壓縮比為c的自動摘要。攻擊力度的計算方式是被刪除的單詞個數(shù)和載體文本中單詞總數(shù)的比值。SAI方式只能控制被刪除的單詞總數(shù),而無法控制被刪除的單詞在水印文本中的分布,所以效率不高,但是該方式操作簡單、速度快,并且基本能夠反映水印算法的魯棒性。在想要迅速了解某種水印算法魯棒性大體趨勢的情況下,可選擇該種攻擊方式。由于在該種方式中,攻擊力度和壓縮比存在以下關系c=l-a,因此只需對載體文本進行壓縮比為c的自動摘要即可完成SAI刪除攻擊。2) SAII :利用自動摘要工具(如Microsoft Office Word 2007的自動摘要工具),對水印文本中的每個段落分別進行給定壓縮比的自動摘要,使得被刪除的載體單元均勻分布在水印文本中。SAII方法中攻擊力度的計算方式是被刪除的載體單元個數(shù)和水印文本中載體單元總數(shù)的比值。大量實驗表明,SAII攻擊方法產(chǎn)生的誤比特率和理論誤比特率最接近,也即是說,該方法較其他攻擊方法更為準確,但該方法非常耗時。因此,在需要準確知曉某種水印算法魯棒性,而無需考慮時間代價的情況下,用戶可選擇SAII刪除攻擊方法。如圖3所示,SAII刪除攻擊方法的具體步驟如下步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取下一個段落,統(tǒng)計該段落中載體單元個數(shù)i,轉(zhuǎn)至步驟2。步驟2 :對該段進行給定壓縮比c的自動摘要,生成攻擊后的文本段落attackedPar。步驟3 :統(tǒng)計attackedPar中的載體單元個數(shù)j。步驟4 :計算攻擊前后載體單元減少的數(shù)目unitNum=i-j。若unitNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和unitNum,同時記錄該段在載體文本中的位置loc;否則,轉(zhuǎn)至步驟I。步驟5 :令當前攻擊力度a=minstrength。步驟6 :若3〈11^181:代叩1:11,計算水印文本中需要刪除的載體單元個數(shù)311,11是載體文本中載體單元的個數(shù);否則,攻擊結(jié)束。步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落。此時,AllUnits中的每一段相當于一個物品,an相當于背包容量,每段對應的unitNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案。步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落的內(nèi)容,然后對照相應的loc,生成攻擊后文本。步驟9 :a=a+step,轉(zhuǎn)至步驟 6。3)SAIII :和SAII —樣,利用自動摘要工具,對水印文本中的每個段落分別進行給定壓縮比的摘要,唯一不同之處在于攻擊力度的計算方式。SAIII方法中攻擊力度計算方式刪除的單詞個數(shù)和水印文本單詞總數(shù)的比值。由于無需分析和統(tǒng)計載體文本中的載體單元,SAIII的效率比SAII高,但攻擊效果不如SAII。如圖4所示,SAIII刪除攻擊方式的具體步驟如下步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取一個未檢測段落,統(tǒng)計該段落中單詞個數(shù)i,轉(zhuǎn)至步驟2。步驟2 :對該段進行給定壓縮比c的自動摘要,生成攻擊后的段落attackedPar。步驟3 :統(tǒng)計attackedPar中的單詞個數(shù)j。 步驟4 :計算攻擊前后單詞減少的數(shù)目wordNum=i - j。若wordNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和wordNum,同時記錄該段在載體文本中的位置loc;否則,轉(zhuǎn)至步驟I。步驟5 :令當前攻擊力度a=minstrength。步驟6 :若3〈11^181:代叩1:11,計算水印文本中需要刪除的單詞個數(shù)311,11是載體文本中單詞總和;否則,攻擊結(jié)束。步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落。此時,AllUnits中的每一個段落相當于一個物品,an相當于背包容量,每一個段落對應的wordNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案。步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落內(nèi)容,然后對照相應的loc,生成攻擊后文本。步驟9 :a=a+step,轉(zhuǎn)至步驟 6。第三種排序攻擊調(diào)整段落在載體文本中的順序,以期破壞水印信息同步,此類攻擊稱為排序攻擊。這種攻擊方式一般針對說明書、手冊之類的文本,因為該類文本中包含大量并行結(jié)構,段落順序的調(diào)整對語義邏輯的影響較小。排序攻擊中攻擊力度的計算方式是被亂序的載體單元個數(shù)和水印文本中載體單元總數(shù)的比值。排序攻擊的具體步驟如下步驟I :若載體文本中所有段落都處理完畢,轉(zhuǎn)至步驟3;否則,選取下一段,利用Traverse函數(shù)統(tǒng)計該段載體單元的個數(shù)i。步驟2 :若i古0,將該段對應的i和該段在載體文本中的位置序號Ioc加入集合Rec ;否則,轉(zhuǎn)至步驟I。步驟3 :令當前攻擊力度a=minstrength。步驟4 :若3〈11^181:代叩1:11,計算需要攻擊的載體單元個數(shù)311,11為載體文本中載體單元總數(shù);否則,攻擊結(jié)束。步驟5 :利用背包算法從集合Rec中選擇需要攻擊的段落位置序號。每一個段落相當于一個物品,an相當于背包容量,每一個段落對應的i相當于物品體積,-I為每個物品的價值。利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案。
步驟6:所選的段落位置序號構成序列R,將R重排,要求每一個段落的位置都發(fā)生變化,生成排序后位置序列Q。步驟7 :遍歷集合Rec,將Ioc對應的段落移動到序列Q中記錄的相應位置,生成攻擊后文本。步驟8 :a=a+step,轉(zhuǎn) 至步驟 4。本發(fā)明中攻擊算法的攻擊效果理論分析一、現(xiàn)有的自然語言水印編碼算法主要分為以下三種(I)空域技術空域算法的一般模型首先找出載體文本中所有載體單元S={Sl,S2,…,sn}其中,Si代表一個載體單元。每個Si的可行變換集合為Ti={tn,ti2,…,tim},其中,tim代表一個可行變換。根據(jù)密鑰從Ti選擇一個可行變換作為代表元(選擇代表元是為了防止嵌入時選擇不同的可行變換可能會造成嵌入前排序的結(jié)果與提取時排序的結(jié)果不一致)。然后根據(jù)密鑰和計算出一個秘密數(shù)字,按照這個秘密數(shù)字的大小把S中的元素排序。接下來根據(jù)密鑰從S中隨機選出部分元素準備嵌入,記作S' ={s/,s2',…,s/ }。把S'中的元素s/的可行變換集合Ti'用密鑰分成兩個子集,分別代表O和I。嵌入時對比水印比特與s/表示的比特是否相同,如果不同則使用相應的可行變換對其進行替換以生成含密文章。(2)變換域技術自然語言不像圖像,缺乏變換域。現(xiàn)有的變換域算法一般都是以載體單元的某些特征出現(xiàn)的頻次作為變換域來嵌入信息的。(3)擴頻技術擴頻編碼模型首先根據(jù)密鑰和載體單元的代表元計算秘密值。然后根據(jù)秘密值把S劃分成I個組。每組包含的載體單元數(shù)量記作X。最后利用組內(nèi)包含規(guī)定特征的載體單元的數(shù)量進行編碼。當組代表的比特與目標水印比特不同時,對組內(nèi)的載體單元進行替換使規(guī)定的特征出現(xiàn)的次數(shù)正好表達水印的比特。二、現(xiàn)有的自然語言水印編碼算法的魯棒性分析針對上述不同的編碼技術,我們從理論角度分析替換攻擊和刪除攻擊對其產(chǎn)生的誤比特率引理I.在替換攻擊中,Si被成功攻擊的概率至少為O. 5。證明按照編碼算法的不同,Ti可以被劃分成兩個子集Ti'和Ti"。設Ti'表示表示“I”。若集合Ti中元素個數(shù)為m,則集合Ti'和Ti"中元素個數(shù)有表I中的
幾種情況表I
權利要求
1.一種自然語言水印魯棒性測試方法,其特征在于,具體包括如下步驟 1)讀取系統(tǒng)運行所需參數(shù); 2)利用待測水印嵌入算法,向原始載體文本中嵌入水印信息,生成水印文本; 3)利用主動攻擊方法對水印文本進行主動攻擊,生成攻擊后文本; 4)利用待測水印提取算法,從攻擊后文本中提取出新的水印信息; 5)計算誤比特率,將從攻擊后文本中提取出的新的水印信息和原始水印信息逐比特比較,不相同的比特數(shù)和水印信息比特總數(shù)之比即為誤比特率。
2.如權利要求I所述的自然語言水印魯棒性測試方法,其特征在于,所述主動攻擊方法采用替換攻擊方法、刪除攻擊方法或者排序攻擊方法,所述替換攻擊方法是指使用與待測水印嵌入算法相同的NLP工具對載體文本中的載體單元進行語義不變的變換的方法;所述刪除攻擊方法為SAI刪除攻擊方法、SAII刪除攻擊方法或SAIII刪除攻擊方法,其中,所述SAI刪除攻擊方法是指利用自動摘要工具對整篇水印文本進行壓縮比為c的自動摘要,其攻擊力度為被刪除的載體單元個數(shù)和水印文本中載體單元總數(shù)的比值;所述SAII刪除攻擊方法是指利用自動摘要工具,對水印文本中的每個段落分別進行給定壓縮比的自動摘要;所述SAIII刪除攻擊方法是指利用自動摘要工具,對水印文本中的每個段落分別進行給定壓縮比的摘要,其攻擊力度為刪除的單詞個數(shù)和水印文本單詞總數(shù)的比值;所述排序攻擊方法是指調(diào)整段落在載體文本中的順序,以期破壞水印信息同步的方法。
3.如權利要求2所述的自然語言水印魯棒性測試方法,其特征在于,所述替換攻擊方法具體包括如下步驟 步驟I :利用與待測水印算法相同的NLP工具分析載體得到所有載體單元,并將所有載體單元加入集合AllUnits ; 步驟2 :令當前攻擊力度a=minstrength ; 步驟3 :若a〈=maxstrength,計算需要攻擊的載體單元個數(shù)an,其中a為當前攻擊力度,η為載體文本AllUnits中載體單元的個數(shù);否則,攻擊結(jié)束; 步驟4 :從AllUnits中隨機挑選an個載體單元;對于每個載體單元,隨機選取它的一個可行變換對其進行替換;最終生成攻擊后文本。
步驟5 :a=a+step,轉(zhuǎn)至步驟3。
4.如權利要求2所述的自然語言水印魯棒性測試方法,其特征在于,所述SAII刪除攻擊方法具體包括如下步驟 步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取下一個段落,統(tǒng)計該段落中載體單元個數(shù)i,轉(zhuǎn)至步驟2 ; 步驟2:對該段落進行給定壓縮比c的自動摘要,生成攻擊后的文本段落attackedPar ; 步驟3 :統(tǒng)計attackedPar中的載體單元個數(shù)j ; 步驟4 :計算攻擊前后載體單元減少的數(shù)目unitNum=i-j。若unitNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和unitNum,同時記錄該段在載體文本中的位置Ioc;否則,轉(zhuǎn)至步驟I; 步驟5 :令當前攻擊力度a=minstrength ; 步驟6 :若a〈=maxstrength,計算水印文本中需要刪除的載體單元個數(shù)an, η是載體文本中載體單元的個數(shù);否則,攻擊結(jié)束; 步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落;此時,AllUnits中的每一段相當于一個物品,an相當于背包容量,每段對應的unitNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案; 步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落的內(nèi)容,然后對照相應的loc,生成該攻擊力度對應的攻擊后文本; 步驟9 :a=a+step,轉(zhuǎn)至步驟6。
5.如權利要求2所述的自然語言水印魯棒性測試方法,其特征在于,所述SAIII刪除攻擊方法的具體步驟如下 步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取一個未檢測段落,統(tǒng)計該段落中單詞個數(shù)i,轉(zhuǎn)至步驟2 ; 步驟2 :對該段進行給定壓縮比c的自動摘要,生成攻擊后的段落attackedPar ; 步驟3 :統(tǒng)計attackedPar中的單詞個數(shù)j ; 步驟4 :計算攻擊前后單詞減少的數(shù)目wordNum=i - j。若wordNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和wordNum,同時記錄該段在載體文本中的位置loc;否則,轉(zhuǎn)至步驟I; 步驟5 :令當前攻擊力度a=minstrength ; 步驟6 :若a〈=maxstrength,計算水印文本中需要刪除的單詞個數(shù)an, η是載體文本中單詞總和;否則,攻擊結(jié)束; 步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落。此時,AllUnits中的每一個段落相當于一個物品,an相當于背包容量,每段落對應的wordNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案; 步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落內(nèi)容,然后對照相應的loc,生成攻擊后文本; 步驟9 :a=a+step,轉(zhuǎn)至步驟6。
6.如權利要求2所述的自然語言水印魯棒性測試方法,其特征在于,所述排序攻擊方法的具體步驟如下 步驟I :若載體文本中所有段落都處理完畢,轉(zhuǎn)至步驟3;否則,選取下一段,利用Traverse函數(shù)統(tǒng)計該段載體單元的個數(shù)i ; 步驟2 :若i古0,將該段對應的i和該段在載體文本中的位置序號Ioc加入集合Rec ;否則,轉(zhuǎn)至步驟I; 步驟3 :令當前攻擊力度a=minstrength ; 步驟4 :若a〈=maxstrength,計算需要攻擊的載體單元個數(shù)an, η為載體文本中載體單元總數(shù);否則,攻擊結(jié)束; 步驟5 :利用背包算法從集合Rec中選擇需要攻擊的段落位置序號。每一段相當于一個物品,an相當于背包容量,每一段對應的i相當于物品體積,-I為每個物品的價值; 步驟6 :所選的段落位置序號構成序列R,將R重排,要求每一個段落的位置都發(fā)生變化,生成排序后位置序列Q ;步驟7 :遍歷集合RecJf Ioc對應的段落移動到序列Q中記錄的相應位置,生成攻擊后文本; 步驟8 :a=a+step,轉(zhuǎn)至步驟4。
7.實現(xiàn)權利要求I所述的自然語言水印魯棒性檢測方法的系統(tǒng),其特征在于,包括依次連接的參數(shù)配置模塊、嵌入模塊、攻擊模塊、提取模塊和計算模塊;所述模塊分別實現(xiàn)如下功能 參數(shù)配置模塊讀取系統(tǒng)運行所需參數(shù),并為嵌入模塊、提取模塊和攻擊模塊提供必要的參數(shù); 嵌入模塊利用待測水印嵌入算法,向原始載體文本中嵌入水印信息,生成水印文本,并為攻擊模塊提供水印文本; 攻擊模塊利用主動攻擊方法對水印文本進行主動攻擊,生成攻擊后文本,并將攻擊后文本提供給提取模塊; 提取模塊利用待測水印提取算法,從攻擊后文本中提取出新的水印信息; 計算模塊計算誤比特率BER。
8.如權利要求7所述的自然語言水印魯棒性測試系統(tǒng),其特征在于,所述替換模塊通過如下流程實現(xiàn)其功能 步驟I :利用與待測水印算法相同的NLP工具分析載體得到所有載體單元,并將所有載體單元加入集合AllUnits。
步驟2 :令當前攻擊力度a=minstrength。
步驟3 :若a〈=maxstrength,計算需要攻擊的載體單元個數(shù)an,其中a為當前攻擊力度,η為載體文本AllUnits中載體單元的個數(shù);否則,攻擊結(jié)束。
步驟4 :從AllUnits中隨機挑選an個載體單元。對于每個載體單元,隨機選取它的一個可行變換對其進行替換。
步驟5 :a=a+step,轉(zhuǎn)至步驟3。
9.如權利要求7所述的自然語言水印魯棒性測試系統(tǒng),其特征在于,所述刪除攻擊模塊包括SAI刪除攻擊模塊、SAII刪除攻擊模塊和SAIII刪除攻擊模塊,其中,所述SAII刪除攻擊模塊通過如下流程實現(xiàn)其功能 步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取下一個段落,統(tǒng)計該段落中載體單元個數(shù)i,轉(zhuǎn)至步驟2。
步驟2 :對該段進行給定壓縮比c的自動摘要,生成攻擊后的文本段落attackedPar。
步驟3 :統(tǒng)計attackedPar中的載體單元個數(shù)j。
步驟4 :計算攻擊前后載體單元減少的數(shù)目unitNum=i-j。若unitNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和unitNum,同時記錄該段在載體文本中的位置loc;否則,轉(zhuǎn)至步驟I。
步驟5 :令當前攻擊力度a=minstrength。
步驟6 :若a〈=maxstrength,計算水印文本中需要刪除的載體單元個數(shù)an, η是載體文本中載體單元的個數(shù);否則,攻擊結(jié)束。
步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落。此時,AllUnits中的每一段相當于一個物品,an相當于背包容量,每段對應的unitNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案。
步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落的內(nèi)容,然后對照相應的loc,生成該攻擊力度對 應的攻擊后文本。
步驟9 :a=a+step,轉(zhuǎn)至步驟6。
10.如權利要求9所述的自然語言水印魯棒性測試系統(tǒng),其特征在于,所述SAIII刪除攻擊模塊通過如下流程實現(xiàn)其功能 步驟I :若載體文本中所有段落都已處理完畢,轉(zhuǎn)至步驟5,否則,選取一個未檢測段落,統(tǒng)計該段落中單詞個數(shù)i,轉(zhuǎn)至步驟2。步驟2 :對該段進行給定壓縮比c的自動摘要,生成攻擊后的段落attackedPar。
步驟3 :統(tǒng)計attackedPar中的單詞個數(shù)j。
步驟4 :計算攻擊前后單詞減少的數(shù)目wordNum=i - j。若wordNum>0,則將該段落加入集合AllUnits,保存對應的attackedPar和wordNum,同時記錄該段在載體文本中的位置loc;否則,轉(zhuǎn)至步驟I。
步驟5 :令當前攻擊力度a=minstrength。
步驟6 :若a〈=maxstrength,計算水印文本中需要刪除的單詞個數(shù)an, η是載體文本中單詞總和;否則,攻擊結(jié)束。
步驟7 :利用背包算法從AllUnits中選擇需要攻擊的段落。此時,AllUnits中的每一段相當于一個物品,an相當于背包容量,每段落對應的wordNum相當于該物品的體積,I為每個物品的價值,利用背包算法選擇體積不超過背包容量時,物品價值最大的選擇方案。
步驟8 :對每一個需要攻擊的段落,用attackedPar替換該段落內(nèi)容,然后對照相應的loc,生成該攻擊力度對應的攻擊后文本。
步驟9 :a=a+step,轉(zhuǎn)至步驟6。
全文摘要
本發(fā)明公開了一種自然語言水印魯棒性測試方法,讀取系統(tǒng)運行所需參數(shù);利用待測水印嵌入算法,向原始載體文本中嵌入水印信息,生成水印文本;利用主動攻擊方法對水印文本進行主動攻擊,生成攻擊后文本;利用待測水印提取算法,從攻擊后文本中提取出新的水印信息;計算誤比特率。本發(fā)明依據(jù)水印算法的敵手模型得到不同的主動攻擊方法,利用主動攻擊方法對水印文本進行攻擊,然后從攻擊后的水印文本中提取出新的水印信息,最終得到誤比特率。經(jīng)試驗驗證,本發(fā)明能夠有效、客觀地評價待測的自然語言水印算法的魯棒性。
文檔編號G06F21/60GK102902929SQ201210284799
公開日2013年1月30日 申請日期2012年8月10日 優(yōu)先權日2012年8月10日
發(fā)明者何路, 武睿峰, 房鼎益 申請人:西北大學