專(zhuān)利名稱(chēng):一種文檔數(shù)字水印嵌入方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)安全領(lǐng)域。用于對(duì)文檔的分發(fā)進(jìn)行控制和檢測(cè)。
背景技術(shù):
在日常辦公中經(jīng)常有大量的文檔要進(jìn)行分發(fā),同時(shí)有些內(nèi)部文檔、涉密文檔為了安全保密,文檔通常不分發(fā)電子文檔而是打印出紙質(zhì)文檔進(jìn)行分發(fā),并且在紙質(zhì)文檔上進(jìn)行編號(hào),由文檔接收人簽字接收保管來(lái)進(jìn)行責(zé)任到人的監(jiān)督管理。這種管理方法顯然不利于電子化辦公,對(duì)遠(yuǎn)程文檔的分發(fā)也極其不方便,因而需要采取相應(yīng)的技術(shù)手段來(lái)對(duì)電子文檔的分發(fā)進(jìn)行控制。
對(duì)于電子文檔的分發(fā)控制,目前普遍是采用的方法是在文檔中添加數(shù)字水印來(lái)實(shí)現(xiàn)。數(shù)字水印作為一種有效的信息隱藏手段,通過(guò)將具有特定意義的信息(如用戶信息、版權(quán)信息等)嵌入各種格式的文件中,來(lái)實(shí)現(xiàn)對(duì)于產(chǎn)品的數(shù)字保護(hù)。
專(zhuān)利申請(qǐng)?zhí)枮?9118753.9,專(zhuān)利申請(qǐng)名稱(chēng)為“在文檔中嵌入信息的方法和系統(tǒng)”,提出了一種針對(duì)PDF格式的文檔的水印處理方法。該方法通過(guò)將文本中的需要嵌入信息的字符進(jìn)行分割,從而實(shí)現(xiàn)信息隱藏和防止拷貝的目的。缺點(diǎn)在于該方法針對(duì)的是PDF格式文件,對(duì)于其他格式文件并不適用。
專(zhuān)利申請(qǐng)?zhí)枮?00510065893.9,專(zhuān)利申請(qǐng)名稱(chēng)為“基于字符拓?fù)浣Y(jié)構(gòu)的文本數(shù)字水印技術(shù)”,描述了通過(guò)適當(dāng)改變字符(串)的拓?fù)浣Y(jié)構(gòu),從而設(shè)計(jì)出語(yǔ)義上相同的同一字符(串)的多種字符(串)外形,通過(guò)語(yǔ)義上相同的字符(串)的不同拓?fù)浣Y(jié)構(gòu)的字形來(lái)表示隱藏信息。首先由于中文字符數(shù)量較多,針對(duì)所有中文字符設(shè)計(jì)出多種變形這一工作量無(wú)疑是巨大的,對(duì)于電子文檔,為了讓攜帶隱藏信息的文本在用戶機(jī)器上正確顯示,需要在用戶機(jī)器上安裝相應(yīng)的變形字體。
專(zhuān)利申請(qǐng)?zhí)枮?00510077471.3,專(zhuān)利申請(qǐng)名稱(chēng)為“一種在英文文本中嵌入和提取水印的方法”,提出了在英文文本中嵌入和提取水印的方法。該方法將版權(quán)人的版權(quán)信息轉(zhuǎn)化為二進(jìn)制的比特位串,讀入文本并濾除空格和特殊字符,對(duì)所得字符串及版權(quán)人的私鑰做哈希運(yùn)算,得到整數(shù)Z;若Z整除嵌入比例,則下句作為水印信息句;用Z對(duì)版權(quán)信息比特串長(zhǎng)度取余,確定水印信息比特的位置,使位置相鄰的兩字母的編碼大小關(guān)系代表的0、1,與待嵌入的水印信息比特相同,直到文本結(jié)束。由于國(guó)內(nèi)絕大多數(shù)文檔的語(yǔ)言是中文,因而應(yīng)用該方法還是存在很大的局限性。
專(zhuān)利申請(qǐng)?zhí)枮?00510093364.X,專(zhuān)利申請(qǐng)名稱(chēng)為“一種文檔加密方法”,提出的文檔保護(hù)方法是A、對(duì)選定標(biāo)準(zhǔn)字進(jìn)行變體操作形成變形字;B、對(duì)所述變形字進(jìn)行編碼,并按照所述編碼將所述變形字添加到文件中,形成攜帶水印信息的文件;C、接受方對(duì)文件中的變形字進(jìn)行解碼,獲得所述的水印信息。該方法的問(wèn)題與專(zhuān)利號(hào)為200510065893.9的類(lèi)似,由于信息攜帶者是變形的字體,如果文檔查看者的計(jì)算機(jī)上沒(méi)有安裝該字體就無(wú)法查看該文件。
文章“文本數(shù)字水印”[1]和“基于文本的信息隱藏技術(shù)”[2]中提到了利用行間距、字間距、標(biāo)點(diǎn)符號(hào)、字符字體編碼來(lái)攜帶水印的技術(shù)。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種針對(duì)文檔的嵌入和提取水印的方法,該方法通過(guò)在文檔中水印來(lái)隱性在文檔中加入發(fā)送人、接收人、時(shí)間等信息,用來(lái)控制文檔的分發(fā),有效地追蹤電子文檔的復(fù)制,局部拷貝等操作。
本發(fā)明的基本原理是利用人眼不易察覺(jué)字體灰度小范圍的變化這一特點(diǎn),將要隱藏的信息進(jìn)行恰當(dāng)?shù)木幋a,利用字體灰度來(lái)嵌入數(shù)字水印信息。
本發(fā)明提出的在文檔中嵌入水印的方法,包括以下各個(gè)步驟(1)將需要隱藏的版權(quán)信息(發(fā)送人、接收人、時(shí)間等信息)進(jìn)行utf8編碼轉(zhuǎn)換,得到長(zhǎng)度為M的二進(jìn)制字符串。
(2)壓縮編碼,獲得長(zhǎng)度為L(zhǎng)的二進(jìn)制串。
(3)判斷嵌入版權(quán)信息所需的字符個(gè)數(shù)。將長(zhǎng)度為L(zhǎng)的二進(jìn)制串從低位開(kāi)始,以三位一組分割,如最高位缺位補(bǔ)零,獲得長(zhǎng)度為3×K的二進(jìn)制串。
(4)濾除文檔空格,讀取文檔的K+2個(gè)字符,如果文檔長(zhǎng)度不夠,提示無(wú)法加入水印。
(5)判斷讀入的K+2個(gè)字符RGB值是否相同,如果不相同跳過(guò)該字符并讀入文檔的下一字符。
(6)將獲取的K+2個(gè)字符中第一個(gè)字符的RGB(A,B,C)中A-1,表示水印開(kāi)始位置,最后一個(gè)字符的RGB(A,B,C)中C-1,表示水印結(jié)束位置。對(duì)于其他字符的RGB(Ai,Bi,Ci)值,依據(jù)獲得的K組二進(jìn)制串,使用B減去每組值獲得。例如第i組(i大于零,小于或等于K,i為整數(shù))為110,則將字符第i+1個(gè)字符的RGB(Ai,Bi,Ci)設(shè)置為RGB(Ai,Bi-6,Ci)。
(7)再次讀入文檔的K+2個(gè)字符,重復(fù)步驟(5)~(6),直到文檔結(jié)束。
本發(fā)明提出的在文檔中提取水印的方法,包括以下各個(gè)步驟(1)讀取文檔字符,濾除其中的空格和相鄰字符RGB(A,B,C)三原色差異超過(guò)7的字符和差為0的字符。
(2)如果濾除字符后攜帶水印信息的字符長(zhǎng)度為0表示文檔未嵌入水印。
(3)判斷已讀入字符相鄰兩字符的RGB值是存在RGB(A,B,C)中A差為1的情況,如果存在表示該字符為水印加入的起始位置。例如存在A1A2A3A4A5個(gè)字符,其RGB(A,B,C)值中的A分量分別為5,5,5,4,5,則A4為水印嵌入信息起始位。由于在水印信息嵌入前過(guò)濾了RGB值不同的字符,所以不可能出現(xiàn)諸如A值為5,3,2,5的情況。
(4)判斷已讀入字符相鄰兩字符的RGB值是存在RGB(A,B,C)中C差為1的情況,如果存在表示該字符為水印加入的結(jié)束位置。如果起始位置和結(jié)束位置不成對(duì)出現(xiàn),例如出現(xiàn)一個(gè)起始位置后,沒(méi)有結(jié)束位置,或是只有結(jié)束位置沒(méi)有起始位置,表示水印被破壞,重復(fù)步驟(3)~(4)。
(5)讀入起始和結(jié)束標(biāo)志中的字符串,中間存在字符個(gè)數(shù)設(shè)為K,則K個(gè)字符為水印信息攜帶字符串。
(6)得到K個(gè)字符的所有RGB值偏差(獲得方法是以起始字符RGB(A,B,C)作為基準(zhǔn),與其他字符的RGB(Ai,Bi,Ci)比較),得到一組3×K的二進(jìn)制串。
(7)除去最高位的零,得到長(zhǎng)度為L(zhǎng)的二進(jìn)制串。
(8)對(duì)該二進(jìn)制串進(jìn)行解壓縮編碼,得到長(zhǎng)度為M的二進(jìn)制串。
(9)將長(zhǎng)度為M二進(jìn)制串進(jìn)行utf8到GBK的編碼轉(zhuǎn)換,獲得原始的版權(quán)信息。
(10)重復(fù)步驟(3)~(9),獲得所有文檔攜帶的水印信息。
本發(fā)明提出的文檔嵌入和提取水印的方法,具有以下優(yōu)點(diǎn)(1)本發(fā)明提出的文檔水印方法不同與目前通過(guò)修改字體或是修改標(biāo)點(diǎn)符號(hào)的方法,嵌入水印文檔的讀取不需任何附加的字體或是專(zhuān)用的閱讀器,就可以打開(kāi),正常顯示。隱秘性好,安全性高。
(2)本發(fā)明提出的文檔水印嵌入方法,水印信息是通過(guò)修改字符的RGB值實(shí)現(xiàn)。版權(quán)信息通過(guò)utf8轉(zhuǎn)換后,經(jīng)過(guò)壓縮編碼,可以提高水印信息的信息容量,提高抗攻擊能力,同時(shí)水印信息的重復(fù)寫(xiě)入,進(jìn)一步提高了抗攻擊能力。
(3)本發(fā)明提出的文檔水印嵌入方法,具有簡(jiǎn)單、易行的特點(diǎn),非常適合用于電子化辦公中的文檔分發(fā)控制。
圖1是本發(fā)明的水印嵌入過(guò)程的流程框圖。
圖2是水印信息提取的流程框圖。
具體實(shí)施例方式
本發(fā)明提出的在文檔嵌入和提取水印方法,其中嵌入水印的流程框圖如圖1所示,首先,將要嵌入的版權(quán)信息將需要隱藏的版權(quán)信息(發(fā)送人、接收人、時(shí)間等信息)進(jìn)行編碼轉(zhuǎn)換,由于中文字符一個(gè)字符占兩個(gè)字節(jié),為了處理上的方便,對(duì)版權(quán)信息先進(jìn)行utf8編碼轉(zhuǎn)換,得到長(zhǎng)度為M的二進(jìn)制字符串。為了提高水印信息容量,減少需要嵌入的信息長(zhǎng)度,對(duì)獲得的M位二進(jìn)制串進(jìn)行壓縮編碼。
經(jīng)過(guò)壓縮編碼,獲得長(zhǎng)度為L(zhǎng)的二進(jìn)制串。將長(zhǎng)度為L(zhǎng)的二進(jìn)制串從低位開(kāi)始,以三位一組分割,如最高位缺位將其補(bǔ)零,獲得K組二進(jìn)制串,每組長(zhǎng)度為3。為了不引起字符顏色的劇烈變化,只修改每個(gè)字符RGB三原色中的一種,也就是說(shuō)要嵌入長(zhǎng)度為3×K的二進(jìn)制水印信息,需要K個(gè)字符。為了標(biāo)識(shí)水印起始和結(jié)束位置,實(shí)際上需要的字符數(shù)為K+2個(gè),也就是說(shuō)如果字符少于K+2個(gè)時(shí),是無(wú)法嵌入水印信息的。例如,假設(shè)版權(quán)信息中發(fā)送人、接收人、時(shí)間信息長(zhǎng)度設(shè)定為20個(gè)字符(20位,這里考慮了中文占用兩個(gè)字符情況),轉(zhuǎn)化為二進(jìn)制共160位,如果不采用壓縮編碼的話,可劃分為55個(gè)3位二進(jìn)制串,考慮到起始位和結(jié)束位,嵌入水印共需要57個(gè)字符。如果文檔格式采用宋體、小四號(hào)字體情況下,每行字符數(shù)是40,也就是說(shuō)兩行不到就可以完成水印的嵌入??紤]漢字轉(zhuǎn)化為utf8后字符的含有大量冗余字符的特點(diǎn)(例如含有大量的%),對(duì)原始二進(jìn)制串的壓縮編碼將很大程度上減少二進(jìn)制串的長(zhǎng)度,提高水印的信息量和抗攻擊能力。
讀入K+2個(gè)字符后,首先需要判斷字符的RGB值是否相同,如果不相同該字符不能嵌入水印,需要再讀入字符以保證水印嵌入所需字符數(shù)。將獲取的K+2個(gè)字符中第一個(gè)字符的RGB(A,B,C)中A-1,表示水印開(kāi)始位置,最后一個(gè)字符的RGB(A,B,C)中C-1,表示水印結(jié)束位置。對(duì)于其他字符的RGB(Ai,Bi,Ci)值,依據(jù)獲得的K組二進(jìn)制串,使用B減去每組值獲得。例如第i組(i大于零,小于或等于K,i為整數(shù))為110,則將字符第i+1個(gè)字符的RGB(Ai,Bi,Ci)設(shè)置為RGB(Ai,Bi-6,Ci)。再次讀入文檔的K+2個(gè)字符,重復(fù)寫(xiě)入版權(quán)信息,直到文檔結(jié)束。
本發(fā)明提出的文檔水印信息提取方法的流程框圖見(jiàn)圖2,讀取文檔字符,濾除其中的空格和相鄰字符RGB(A,B,C)三原色差異超過(guò)7的字符和差為0的字符。如果濾除字符后攜帶水印信息的字符長(zhǎng)度為0表示文檔未嵌入水印。
接著需要獲得水印的起始標(biāo)識(shí)和結(jié)束標(biāo)識(shí),判斷已讀入字符相鄰兩字符的RGB值是存在RGB(A,B,C)中A差為1的情況,如果存在表示該字符為水印加入的起始位置。例如存在A1A2A3A4A5個(gè)字符,其RGB(A,B,C)值A(chǔ)分別為5,5,5,4,5,則A4為水印嵌入信息起始位。由于在水印信息嵌入前過(guò)濾了RGB值不同的字符,所以不可能出現(xiàn)諸如A值為5,3,2,5的情況。判斷已讀入字符相鄰兩字符的RGB值是存在RGB(A,B,C)中C差為1的情況,如果存在表示該字符為水印加入的結(jié)束位置。如果起始位置和結(jié)束位置不成對(duì)出現(xiàn),例如出現(xiàn)一個(gè)起始位置后,沒(méi)有結(jié)束位置,或是只有結(jié)束位置沒(méi)有起始位置,表示水印被破壞,需要重新查找水印信息的起始位和結(jié)束位。
讀入起始和結(jié)束標(biāo)志中的字符串,讀入起始和結(jié)束標(biāo)志中的字符串,假設(shè)中間存在K個(gè)字符,則K個(gè)字符為水印信息攜帶字符串。根據(jù)得到的水印信息字符的RGB值,得到中間字符的所有RGB值偏差(獲得方法是以起始字符RGB(A,B,C)作為基準(zhǔn),與其他字符的RGB(Ai,Bi,Ci)比較),得到一組3×K的二進(jìn)制串。除去最高位的零,得到長(zhǎng)度為L(zhǎng)的二進(jìn)制串,對(duì)該二進(jìn)制串進(jìn)行解壓縮編碼,得到長(zhǎng)度為M的二進(jìn)制串。將長(zhǎng)度為M二進(jìn)制串進(jìn)行utf8到GBK的編碼轉(zhuǎn)換,獲得原始的版權(quán)信息。重復(fù)操作直到文檔結(jié)束,獲得所有文檔攜帶的水印信息。
權(quán)利要求
1一種文檔數(shù)字水印嵌入方法,其特征在于(1)將需要隱藏的版權(quán)信息(發(fā)送人、接收人、時(shí)間等信息)進(jìn)行utf8編碼轉(zhuǎn)換,得到長(zhǎng)度為M的二進(jìn)制字符串;(2)壓縮編碼,獲得長(zhǎng)度為L(zhǎng)的二進(jìn)制串;(3)判斷嵌入版權(quán)信息所需的字符個(gè)數(shù),將長(zhǎng)度為L(zhǎng)的二進(jìn)制串從低位開(kāi)始,以三位一組分割,如最高位缺位補(bǔ)零,獲得長(zhǎng)度為3×K的二進(jìn)制串;(4)濾除文檔空格,讀取文檔的K+2個(gè)字符,如果文檔長(zhǎng)度不夠,提示無(wú)法加入水?。?5)判斷讀入的K+2個(gè)字符RGB值是否相同,如果不相同跳過(guò)該字符并讀入文檔的下一字符;(6)將獲取的K+2個(gè)字符中第一個(gè)字符的RGB(A,B,C)中A-1,表示水印開(kāi)始位置,最后一個(gè)字符的RGB(A,B,C)中C-1,表示水印結(jié)束位置;對(duì)于其他字符的RGB(Ai,Bi,Ci)值,依據(jù)獲得的K組二進(jìn)制串,使用B減去每組值獲得;例如第i組(i大于零,小于或等于K,i為整數(shù))為110,則將字符第i+1個(gè)字符的RGB(Ai,Bi,Ci)設(shè)置為RGB(Ai,Bi-6,Ci);(7)再次讀入文檔的K+2個(gè)字符,重復(fù)步驟(5)~(6),直到文檔結(jié)束。
2.如權(quán)利要求1所述的一種文檔數(shù)字水印嵌入方法,其特征在于包括以下各個(gè)步驟(1)讀取文檔字符,濾除其中的空格和相鄰字符RGB(A,B,C)三原色差異超過(guò)7的字符和差為0的字符;(2)如果濾除字符后攜帶水印信息的字符長(zhǎng)度為0表示文檔未嵌入水?。?3)判斷已讀入字符相鄰兩字符的RGB值是存在RGB(A,B,C)中A差為1的情況,如果存在表示該字符為水印加入的起始位置,例如存在A1A2A3A4A5個(gè)字符,其RGB(A,B,C)值中的A分量分別為5,5,5,4,5,則A1為水印嵌入信息起始位,由于在水印信息嵌入前過(guò)濾了RGB值不同的字符,所以不會(huì)出現(xiàn)相鄰字符RGB中A分量差值大于1的情況,諸如A值為5,3,2,5的情況;(4)判斷已讀入字符相鄰兩字符的RGB值是存在RGB(A,B,C)中C差為1的情況,如果存在表示該字符為水印加入的結(jié)束位置,如果起始位置和結(jié)束位置不成對(duì)出現(xiàn),例如出現(xiàn)一個(gè)起始位置后,沒(méi)有結(jié)束位置,或是只有結(jié)束位置沒(méi)有起始位置,表示水印被破壞,重復(fù)步驟(3)~(4);(5)讀入起始和結(jié)束標(biāo)志中的字符串,中間存在的字符個(gè)數(shù)設(shè)為K,則K個(gè)字符為水印信息攜帶字符串;(6)得到K個(gè)字符的所有RGB值偏差(獲得方法是以起始字符RGB(A,B,C)作為基準(zhǔn),與其他字符的RGB(Ai,Bi,Ci)比較),得到一組3×K的二進(jìn)制串;(7)除去最高位的零,得到長(zhǎng)度為L(zhǎng)的二進(jìn)制串;(8)對(duì)該二進(jìn)制串進(jìn)行解壓縮編碼,得到長(zhǎng)度為M的二進(jìn)制串;(9)將長(zhǎng)度為M二進(jìn)制串進(jìn)行utf8到GBK的編碼轉(zhuǎn)換,獲得原始的版權(quán)信息;(10)重復(fù)步驟(3)~(9),獲得所有文檔攜帶的水印信息。
3.根據(jù)權(quán)利要求1、2所述一種文檔數(shù)字水印嵌入方法,其特征在于利用字符的顏色RGB值來(lái)嵌入和檢測(cè)水印。
全文摘要
本發(fā)明屬于計(jì)算機(jī)安全領(lǐng)域,用于對(duì)文檔的分發(fā)進(jìn)行控制和檢測(cè)。本發(fā)明提出了一種針對(duì)文檔的嵌入和提取水印的方法,利用人眼不易察覺(jué)字體灰度小范圍的變化這一特點(diǎn),將要隱藏的信息進(jìn)行恰當(dāng)?shù)木幋a,通過(guò)修改文檔中字符的灰度來(lái)實(shí)現(xiàn)水印信息的嵌入,通過(guò)水印信息,可以有效的控制文檔的分發(fā),追蹤電子文檔的復(fù)制,局部拷貝等操作。
文檔編號(hào)G06F21/00GK1924925SQ20061015253
公開(kāi)日2007年3月7日 申請(qǐng)日期2006年9月28日 優(yōu)先權(quán)日2006年9月28日
發(fā)明者陶然, 李志勇, 杜華, 張昊 申請(qǐng)人:北京理工大學(xué)