戴夏菁,徐誼程,王馨婭,佟德宇
(南京財(cái)經(jīng)大學(xué)信息工程學(xué)院,江蘇 南京 210023)
2415700426@qq.com;YichengXu421@163.com;1520369099@qq.com;tdyforweb@163.com
以中文文本為主要載體的信息在網(wǎng)絡(luò)空間廣泛傳播,例如小說(shuō)、論文、檔案、博客等,但是此類文本信息極易被復(fù)制和修改,不僅侵害了文本原創(chuàng)作者的權(quán)益,更給網(wǎng)絡(luò)空間安全帶來(lái)了不可忽視的影響,亟須采取切實(shí)有效的技術(shù)手段解決文本的版權(quán)保護(hù)問(wèn)題。
近年來(lái),數(shù)字水印在文本的版權(quán)保護(hù)領(lǐng)域得到了廣泛的研究和應(yīng)用。經(jīng)典的嵌入式水印的主要思想是對(duì)需要保護(hù)的文本進(jìn)行小幅修改,將水印信息嵌入其中,同時(shí)保證嵌入的信息難以被肉眼察覺。目前,文本數(shù)字水印的算法主要分為三類:(1)基于文本內(nèi)容的水印算法,例如肖湘蓉等提出基于英文字母的文字特性,用希臘字母進(jìn)行替換的方法[1];(2)基于字形結(jié)構(gòu),例如LIU等人提出了基于文本字形結(jié)構(gòu)構(gòu)造文本圖像水印的方法[2];(3)基于文本格式,例如將水印信息嵌入行間距信息中的改進(jìn)方法[3],以及將水印嵌入字間距中的嵌入方法[4]。但是,上述研究不可避免地需要對(duì)文本進(jìn)行修改,勢(shì)必影響文本的可用性和完整性,因此如何解決這一矛盾,是文本版權(quán)保護(hù)技術(shù)研究人員需要深入思考的問(wèn)題。
零水印作為一種新興的數(shù)字水印方法,它的原理是在不對(duì)原始載體信號(hào)進(jìn)行任何更改的情況下,將版權(quán)信息與特征數(shù)據(jù)相結(jié)合,實(shí)現(xiàn)水印的生成并注冊(cè)至可信的第三方機(jī)構(gòu),即可在發(fā)生版權(quán)糾紛時(shí)進(jìn)行仲裁,實(shí)現(xiàn)版權(quán)信息的保護(hù)[5]。對(duì)于中文文本零水印的研究,龔禮春等人提出了通過(guò)訓(xùn)練文本實(shí)體識(shí)別模型得到實(shí)體特征的方法[6];蒙應(yīng)杰等提出了用對(duì)漢字進(jìn)行矢量化處理的方法實(shí)現(xiàn)水印的嵌入[7];張娜等將文本主題詞在《同義詞詞林》中的編碼與依據(jù)全文信息熵直方圖獲取的編碼融合,加密后形成文本零水印[8]。
為進(jìn)一步提高文本零水印的魯棒性,特別是增強(qiáng)零水印對(duì)各種文本攻擊方式的抵抗能力,本文基于自然語(yǔ)言處理技術(shù)中的Word2Vec模型,提出了一種適用于中文文本的零水印算法。
Word2Vec是一個(gè)將自然語(yǔ)言中的字詞轉(zhuǎn)化為計(jì)算機(jī)可理解的稠密向量的工具,它可以把文本內(nèi)容處理簡(jiǎn)化為向量運(yùn)算,并通過(guò)計(jì)算向量空間的相似度表示文本語(yǔ)義上的相似度[9]。Word2Vec的本質(zhì)是一個(gè)淺層神經(jīng)網(wǎng)絡(luò)用于映射每個(gè)詞至一個(gè)向量,這種映射生成的詞向量可以很好地度量詞與詞之間的相似性。
Word2Vec算法多指用于計(jì)算的詞向量的連續(xù)詞袋(Continuous Bag-of-Word,CBOW)模型[10]和連續(xù)跳字(Skip-Gram)模型[11],前者通過(guò)上下文預(yù)測(cè)當(dāng)前詞,后者通過(guò)當(dāng)前詞預(yù)測(cè)上下文。

圖1 CBOW模型Fig.1 CBOW model
計(jì)算隱藏層h的輸出,為輸入向量的加權(quán)平均:

計(jì)算在每個(gè)輸出層每個(gè)節(jié)點(diǎn)的輸入:


Skip-Gram模型則與之相反。
奇異值分解(Singular Value Decomposition,SVD)是線性代數(shù)中對(duì)特征值分解的推廣,適用于任何維度矩陣的分解;其本質(zhì)是借助低維矩陣實(shí)現(xiàn)對(duì)原矩陣的特征提取。SVD的應(yīng)用非常廣泛,它不僅可用于降維算法中的特征提取[如在主成分分析法(Principal Component Analysis,PCA)中的應(yīng)用[12],還可被用于數(shù)據(jù)壓縮[13]、自然語(yǔ)言處理[14-15]等領(lǐng)域[如在隱性語(yǔ)義索引(Latent Semantic Indexing,LSI)中的應(yīng)用。
SVD變換有兩個(gè)很好的性質(zhì):一是經(jīng)過(guò)一些常見的處理,如濾波、壓縮等操作,奇異值變化較小。二是奇異值包含豐富的內(nèi)在屬性,不易改變。這兩個(gè)性質(zhì)決定了SVD具有較強(qiáng)的安全性。
具體步驟如下:先將詞向量A分別左乘和右乘它的轉(zhuǎn)置,并計(jì)算其特征向量和對(duì)應(yīng)的特征值;接著取出的特征向量組成U,的特征向量組成V;最后求出非零的特征值的平方根,對(duì)應(yīng)上述特征向量的位置,填入奇異值矩陣。
設(shè)W是生成的詞向量實(shí)數(shù)矩陣集合,是其中的第i個(gè)矩陣,根據(jù)奇異值分解的原理:


通常,將奇異值按照由大到小的順序排列在主對(duì)角線上,奇異值越大,它所代表的信息越多。因而,當(dāng)選取前面若干個(gè)最大的奇異值時(shí),往往能夠在很大程度上還原數(shù)據(jù)本身,這就實(shí)現(xiàn)了對(duì)矩陣的降維壓縮。
余弦相似度用向量空間中的兩個(gè)向量夾角的余弦值作為衡量?jī)蓚€(gè)個(gè)體間差異大小的度量,其值越接近1,就說(shuō)明夾角角度越接近0°,也就是兩個(gè)向量越相似[16]。余弦相似度通常用于文本挖掘中的文件比較[17]。
設(shè)兩個(gè)屬性向量分別為A和B,Ai和Bi分別表示向量A和B的各分量,向量A和B的余弦相似性θ由點(diǎn)積和向量長(zhǎng)度給出,公式如下所示:

余弦相似度通常用于正空間,因此給出的值為-1—1。-1意味著兩個(gè)向量指向的方向正好截然相反,1表示它們的指向是完全相同的,0通常表示它們之間是獨(dú)立的,而介于0和1的數(shù)值則表示中間程度的相似性或相異性。因此,余弦相似度可用于水印相似度的檢驗(yàn)。
數(shù)字水印的安全性是指未經(jīng)授權(quán)的用戶無(wú)法進(jìn)行檢測(cè)與解碼、嵌入和刪除水印等操作。數(shù)字水印的安全性依賴于密鑰,針對(duì)安全性的攻擊目的也是為了獲得水印系統(tǒng)密鑰。本文通過(guò)對(duì)中文文本的特征詞的詞向量矩陣進(jìn)行加密,從而生成零水印。
本文在構(gòu)造零水印時(shí),首先對(duì)中文文本進(jìn)行預(yù)處理,主要包括刪除標(biāo)點(diǎn)符號(hào)和根據(jù)詞性對(duì)文本進(jìn)行分詞處理,以方便詞頻的統(tǒng)計(jì)及特征的提取。然后借助詞頻統(tǒng)計(jì)算法,對(duì)所選文本中所有的詞匯進(jìn)行詞頻統(tǒng)計(jì),選擇中頻詞作為備選詞,以充分體現(xiàn)文本的特征,保證備選詞的典型性、代表性。本文采用連續(xù)詞袋模型進(jìn)行Word2Vec的訓(xùn)練。在訓(xùn)練時(shí),借助隨機(jī)梯度下降法和反向傳播誤差算法(Error Back Propagation)提高神經(jīng)網(wǎng)絡(luò)訓(xùn)練的效率,不斷迭代生成權(quán)重矩陣,直至完成訓(xùn)練。借助Word2Vec生成備選詞詞向量后,為了減小特征數(shù)據(jù)量,采用SVD對(duì)詞向量矩陣進(jìn)行降維處理,生成SVD特征矩陣。為了保證零水印的權(quán)威性,避免未授權(quán)人員的水印檢測(cè),引入密鑰對(duì)SVD的特征值采用AES加密,最終生成難以被破解的零水印信息,可提交至第三方機(jī)構(gòu)進(jìn)行版權(quán)注冊(cè),水印生成流程如圖2所示。

圖2 水印生成流程圖Fig.2 Watermark generation flow chart
Step1:Word2Vec模型的訓(xùn)練。
輸入的文本記為X,文本X的容量大小記為V,隱藏層的大小為N,隱藏層的向量記為n,權(quán)重矩陣記為M,M矩陣中一個(gè)與輸入層相關(guān)的單詞的N維向量記為VM。具體的訓(xùn)練步驟如下。
(1)對(duì)文本X進(jìn)行One-hot編碼,One-hot編碼中每個(gè)單詞的向量表示為,其中只有一個(gè)節(jié)點(diǎn)為1,其他節(jié)點(diǎn)為0,得到編碼后的文本。
(2)根據(jù)公式計(jì)算得到輸入層與輸出層之間的權(quán)重矩陣M,表示第v個(gè)輸入節(jié)點(diǎn)到第n個(gè)隱藏層節(jié)點(diǎn)邊的權(quán)值,公式如下:


(4)依次計(jì)算N個(gè)單詞的詞向量,然后計(jì)算隱藏層的h向量,將輸入的上下文單詞的向量累加后求均值。

(5)隱藏層的輸出h向量即訓(xùn)練好的詞向量。
Step2:文本預(yù)處理。
考慮到選取的中文文本較長(zhǎng),本文采用了中文分詞庫(kù)——jieba分詞庫(kù)(可參考官網(wǎng)https://pypi.org/project/jieba/),根據(jù)已有的中文詞庫(kù),推算單個(gè)漢字之間相互關(guān)聯(lián)的概率,計(jì)算出結(jié)果后將概率大的漢字組成詞語(yǔ),記為分詞后的結(jié)果,存放在詞典D中。
Step3:詞頻統(tǒng)計(jì)。
分詞結(jié)束后,遍歷詞典D中的所有字詞,并記錄每組字詞出現(xiàn)的次數(shù)。為了保障所選取的特征詞在具有文本代表性的同時(shí),排除虛詞、人稱代詞等帶來(lái)的影響,本方法將所有字詞按照出現(xiàn)的次數(shù)從大到小進(jìn)行排序,并選取出現(xiàn)次數(shù)占總次數(shù)的40%—60%的中頻詞作為該文本的特征詞,記為A數(shù)組。
Step4:詞向量生成。
將提取出的特征詞A輸入訓(xùn)練好的Word2Vec模型,得到由隱藏層輸出的詞向量記為W。
Step5:奇異值分解。
將生成的W向量空間進(jìn)行降維壓縮,本算法選取4作為奇異值矩陣的維數(shù),生成低維矩陣:

式(10)作為AES加密的原始數(shù)據(jù)。重復(fù)上述操作,得到矩陣集合:

Step6:運(yùn)用AES生成水印。

Step7:將生成的零水印T和版權(quán)所有者信息R提交至可信第三方機(jī)構(gòu)或版權(quán)管理部門。
當(dāng)產(chǎn)生版權(quán)糾紛時(shí),可以提取注冊(cè)的零水印進(jìn)行水印檢測(cè),從而確定版權(quán)歸屬,具體的檢測(cè)流程如圖3所示。

圖3 水印檢測(cè)流程圖Fig.3 Watermark detection flow chart
Step1:根據(jù)公式(11)對(duì)注冊(cè)的零水印T進(jìn)行AES解密,對(duì)解密后的零水印進(jìn)行SVD處理后,得到矩陣集。
Step2:將預(yù)處理后的待檢測(cè)文本輸入Word2Vec模型進(jìn)行訓(xùn)練,得到特征詞的詞向量。
本文構(gòu)造的零水印不會(huì)更改原始數(shù)據(jù)載體信號(hào),而是通過(guò)數(shù)據(jù)本身的特征構(gòu)造水印密文,故可以有效抵擋破壞數(shù)據(jù)載體的簡(jiǎn)單攻擊,如壓縮、噪聲、剪切、旋轉(zhuǎn)等。
本實(shí)驗(yàn)構(gòu)造零水印的第一個(gè)步驟是根據(jù)數(shù)據(jù)源的詞頻特性,選擇中頻詞作為數(shù)據(jù)的特征詞,這就意味著水印構(gòu)造對(duì)于數(shù)據(jù)源內(nèi)容的刪減、替換等攻擊具有高度的敏感性,對(duì)攻擊行為的辨別能力很強(qiáng);此外,特征選擇時(shí)是以詞語(yǔ)為最小單位,故水印在面對(duì)句式轉(zhuǎn)換攻擊時(shí),仍能保持較高的穩(wěn)定性和魯棒性。
本實(shí)驗(yàn)基于Windows 10操作系統(tǒng)、Anaconda環(huán)境,編程語(yǔ)言為Python,以名著《鋼鐵是怎樣煉成的》為例,進(jìn)行零水印的生成與檢測(cè)。在換用《童年》《一千零一夜》《紅與黑》等長(zhǎng)篇書籍進(jìn)行多次試驗(yàn)后,本文將閾值定為0.8。
該實(shí)驗(yàn)通過(guò)隨機(jī)刪除特定比例的句子造成刪減攻擊,文本刪減率確定在0.10—0.45。將經(jīng)過(guò)不同的文本刪減率刪減的每篇文章選取的特征備選詞與原文本的特征詞進(jìn)行比對(duì),計(jì)算二者間的相似度。將不同文章在不同的文本刪減率下與原文本的相似度的平均值作為分析依據(jù),得到的結(jié)果如圖4所示。

圖4 不同文本刪減率的水印相似度情況Fig.4 Similarity under different pruning rates
可見,當(dāng)文本刪減率增大時(shí),水印相似度降低,并且刪減率越高,水印相似度下降幅度越大。當(dāng)文本刪減率大于25%時(shí),水印相似度小于閾值0.8,此時(shí)該水印被判定為不相似。從實(shí)驗(yàn)結(jié)果來(lái)看,本文算法在應(yīng)對(duì)刪減攻擊時(shí)具有較強(qiáng)的穩(wěn)定性。
將實(shí)驗(yàn)文本進(jìn)行不同程度的句型轉(zhuǎn)換,然后將轉(zhuǎn)換后的文本水印與原文本水印進(jìn)行對(duì)比,計(jì)算它們的相似度。句式轉(zhuǎn)換主要分為以下五種:①將陳述句改成“把字句”和“被字句”;②“把字句”和“被字句”的互改;③肯定句和否定句的互改;④把直接敘述改為間接敘述;⑤不同語(yǔ)氣句子的句式改變。以句子“被拋棄后,請(qǐng)不要哭泣”為例,將其改為“別人把你拋棄后,請(qǐng)不要哭泣”,句型雖然從“把字句”變?yōu)椤氨蛔志洹保瞧渚湟馕醋儭1敬螌?shí)驗(yàn)選取0%—35%的文本句子,將這些句子進(jìn)行句型轉(zhuǎn)換,句型轉(zhuǎn)換攻擊下水印相似度如圖5所示。

圖5 句型轉(zhuǎn)換攻擊下水印相似度結(jié)果Fig.5 Watermark similarity results under sentence pattern conversion attack
從圖5可以看出,在不同程度的句型轉(zhuǎn)換攻擊下,轉(zhuǎn)換后文本與原文本的水印相似度都在0.9以上,這是因?yàn)楸疚乃惴ㄗ⒅靥崛≡~頻特征,而句型轉(zhuǎn)換對(duì)詞頻的影響較小,因而算法對(duì)于句型轉(zhuǎn)換攻擊具有較強(qiáng)的魯棒性。
從文本中隨機(jī)選取10%的字詞,對(duì)其進(jìn)行同義詞替換,用于模擬同義詞替換攻擊。選取被攻擊后文本中的部分特征詞,將其轉(zhuǎn)為詞向量并對(duì)矩陣進(jìn)行降維處理,最后將生成的新矩陣與原矩陣進(jìn)行相似度比對(duì),結(jié)果如圖6所示。

圖6 不同同義詞替換率下的水印相似度情況Fig.6 Watermark similarity under different synonym replacement rates
從圖6可以看出,在替換的同義詞較少的情況下,新文本和原文本的相似度接近1;若將字詞替換的比例擴(kuò)大為35%,再將新矩陣和原矩陣進(jìn)行比對(duì)發(fā)現(xiàn),相似度仍高于0.97。由此可見,此算法穩(wěn)定性較高,能抵抗大范圍的同義詞攻擊,這是因?yàn)樵撍惴ㄟx取的加密文本為中頻詞,所以能夠避免一定程度上的同義詞替換對(duì)提取特征的影響。
研究人員結(jié)合上述三種實(shí)驗(yàn)發(fā)現(xiàn),本文算法在句型轉(zhuǎn)換及同義詞替換的攻擊下能較好地保留原有的水印信息,具有很強(qiáng)的抵抗性,同時(shí)對(duì)文本適量刪減也有一定的抵抗能力。
數(shù)字水印的安全性不同于密碼,它比密碼更復(fù)雜,主要表現(xiàn)為魯棒性與安全性并不是獨(dú)立的,它們是相互影響的。
本文基于自然語(yǔ)言處理領(lǐng)域的Word2Vec技術(shù)提出了一種零水印算法,首先根據(jù)文本的中頻詞生成詞向量,然后利用SVD算法和AES加密進(jìn)行詞向量的降維與加密,從而生成能夠充分體現(xiàn)文本特征的零水印。實(shí)驗(yàn)結(jié)果表明,本文提出的零水印算法,能夠抵抗一定程度的增減、句型轉(zhuǎn)換、同義詞替換等攻擊,水印具有較強(qiáng)的魯棒性,能夠有效解決文本版權(quán)的鑒定和保護(hù)問(wèn)題。