專利名稱:一種動(dòng)態(tài)軟件水印的編碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟件水印的編碼方法,尤其是一種動(dòng)態(tài)軟件水印 的編碼方法。
背景技術(shù):
計(jì)算機(jī)軟件版權(quán)作為知識(shí)產(chǎn)權(quán)的價(jià)值正在不斷提高。從技術(shù)方面 來(lái)說(shuō),對(duì)軟件版權(quán)的保護(hù)就是通過(guò)足夠的證據(jù)證明作者對(duì)軟件程序的 所有權(quán),而事先嵌入到軟件程序中的水印便是這種證明軟件作者所有 權(quán)的證據(jù)。
水印可以是一段文字、標(biāo)識(shí)、序列號(hào)等,它與圖像、音頻、視頻、 軟件程序等原始數(shù)據(jù)緊密結(jié)合并隱藏其中,成為源數(shù)據(jù)不可分離的一
部分。然而,不同于圖像水印、音頻水印、^L頻水印等多^ 某體水印4支 術(shù),軟件水印技術(shù)在水印的隱蔽性和抗攻擊性等方面存在較大的難度。 在^^開(kāi)號(hào)為"W09964973 ,,,名稱為 "Software Watermarking Techniques"的專利申請(qǐng)中介紹了直接將版權(quán)信息嵌入到軟件程序中
印方法,其中,動(dòng)態(tài)軟件水印方法中介紹了 7f基數(shù)循環(huán)鏈表水印結(jié)構(gòu) 和PPCT (Planted Plane Cubic Tree,改造的平面立體樹(shù))水印結(jié)構(gòu)。 /基數(shù)循環(huán)鏈表水印的編碼方法如下對(duì)于十進(jìn)制的水印數(shù)W,將其yf進(jìn)制分解為^=^>,《',其中,()&,<^。相應(yīng)地,此水印數(shù)#
'=0
可以用含有iM個(gè)節(jié)點(diǎn)的首尾相連的循環(huán)雙指針鏈表來(lái)表示,其中,
每個(gè)節(jié)點(diǎn)有左右兩個(gè)指針,為便于定位水印而設(shè)的頭節(jié)點(diǎn)的右指針指 向水印的首節(jié)點(diǎn),其余節(jié)點(diǎn)的右指針指向循環(huán)鏈表的下一個(gè)節(jié)點(diǎn),其
中,水印的尾節(jié)點(diǎn)的右指針指向頭節(jié)點(diǎn);頭節(jié)點(diǎn)的左指針為空,其余 節(jié)點(diǎn)的左指針依次用來(lái)編碼水印數(shù)W分解得到的f進(jìn)制數(shù)的各位數(shù)值 A O = 0,l,......2),編碼規(guī)則如下左指針為空表示0;左指針指向
節(jié)點(diǎn)自身表示1;左指針指向循環(huán)鏈表中除頭節(jié)點(diǎn)外的下一個(gè)節(jié)點(diǎn)表 示2,以此類推。因此,若水印數(shù)#= 4453,可以將其分解為六進(jìn)制 凄t: 〃= 4453化=3x 64+2x 63 + 3x62+4x6'+1x6°= 323416 ,則編碼得到 的/基數(shù)循環(huán)鏈表水印如圖1所示,即101節(jié)點(diǎn)表示3, 102節(jié)點(diǎn)表示 2, 103節(jié)點(diǎn)表示3, 104節(jié)點(diǎn)表示4, 105節(jié)點(diǎn)表示1。
PPCT水印由PPCT樹(shù)演化而來(lái),如圖2所示,PPCT樹(shù)是一種特殊 的二叉樹(shù),對(duì)其加以改進(jìn)即得到PPCT水印。參照?qǐng)D3,改進(jìn)得到的PPCT 水印的每個(gè)節(jié)點(diǎn)包括左右兩個(gè)指針;其中,頭節(jié)點(diǎn)301的左指針指向 PPCT樹(shù)的右下節(jié)點(diǎn)302,右指針指向PPCT樹(shù)的根節(jié)點(diǎn)304;頭節(jié)點(diǎn)以 外的節(jié)點(diǎn)中,非葉子節(jié)點(diǎn)的左右指針?lè)謩e指向自身的左右子節(jié)點(diǎn),葉 子節(jié)點(diǎn)的右指針指向節(jié)點(diǎn)自身;各葉子節(jié)點(diǎn)從PPCT樹(shù)的右下節(jié)點(diǎn)302 開(kāi)始到PPCT樹(shù)的左下節(jié)點(diǎn)303為止,通過(guò)其左指針順時(shí)針依次相連, PPCT樹(shù)的左下節(jié)點(diǎn)303的左指針指向頭節(jié)點(diǎn)301。
從以上的描述可以看出,PPCT水印中葉子節(jié)點(diǎn)的右指針并不包含 有編碼信息,而if基數(shù)循環(huán)鏈表水印的表示形式相對(duì)筒單,因而,兩 者作為軟件水印時(shí),其隱蔽性及抗攻擊性仍存在一定的不足。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種動(dòng)態(tài)軟件水印的編碼方法, 提高了軟件水印的隱蔽性和抗攻擊性。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是 一種動(dòng)態(tài)軟件水印的編碼方法,包括以下步驟
a、 將水印數(shù)N分解為/進(jìn)制數(shù),其中,/大于1的正整數(shù);
b、 構(gòu)造具有f-1個(gè)葉節(jié)點(diǎn)的PPCT水??;
c、 在由所述PPCT水印的頭節(jié)點(diǎn)及所述葉節(jié)點(diǎn)通過(guò)其左指針構(gòu)成 的循環(huán)鏈表中,根據(jù)所述J進(jìn)制數(shù)及/基數(shù)循環(huán)鏈表水印指針編碼規(guī) 則更新所述葉節(jié)點(diǎn)右指針的指向,使得所述葉子節(jié)點(diǎn)通過(guò)其右指針的 指向表示所述if進(jìn)制數(shù)的各位數(shù)值。
上述方案中,所述步驟a中,所述水印數(shù)N分解為r進(jìn)制數(shù)時(shí), 通過(guò)式(1)表示
<formula>formula see original document page 5</formula> 式(1 )
其中,e,為所述f進(jìn)制數(shù)的各位數(shù)值,為自然數(shù)且小于/。
上述方案中,所述水印數(shù)N為兩個(gè)代表軟件版權(quán)信息的質(zhì)數(shù)^和 / 2之積。
上述方案中,所述循環(huán)鏈表的頭節(jié)點(diǎn)的左指針指向的葉子節(jié)點(diǎn)至 左指針指向所述頭節(jié)點(diǎn)的葉子節(jié)點(diǎn),依次從高位到低位或者從低位到 高位表示所述/進(jìn)制數(shù)的各位數(shù)值。
上述方案中,所述/基數(shù)循環(huán)鏈表水印指針編碼規(guī)則為右指針 為空,所述右指針?biāo)诠?jié)點(diǎn)表示0;右指針指向所在節(jié)點(diǎn)自身,所述 右指針?biāo)诠?jié)點(diǎn)表示1;右指針指向所述循環(huán)鏈表中除頭節(jié)點(diǎn)及所在 節(jié)點(diǎn)外的其余節(jié)點(diǎn),指向節(jié)點(diǎn)與所在節(jié)點(diǎn)之間存在的除頭節(jié)點(diǎn)外的節(jié)點(diǎn)數(shù)為n時(shí),所述右指針?biāo)诠?jié)點(diǎn)表示n+2,其中,n為自然數(shù)。
本發(fā)明的有益效果主要表現(xiàn)在本發(fā)明提供了 一種實(shí)時(shí)動(dòng)態(tài)編碼 生成軟件水印的方法,水印實(shí)時(shí)生成并包含有較多的指針,由于操作 系統(tǒng)內(nèi)存管理的特點(diǎn),每次生成水印時(shí),指針的具體值均不相同,從 而增大了盜版者的攻擊難度,提高了軟件水印的隱蔽性和抗攻擊性。
圖1為7T基數(shù)循環(huán)鏈表水印的結(jié)構(gòu)示意圖2為PPCT樹(shù)的結(jié)構(gòu)示意圖3為PPCT水印的結(jié)構(gòu)示意圖4為本發(fā)明動(dòng)態(tài)軟件水印的編碼流程圖5為水印數(shù)為703時(shí)采用本發(fā)明編碼生成水印的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
圖1至圖3已在背景技術(shù)中加以描述,此處不再贅述。 本發(fā)明描述的編碼方法實(shí)時(shí)生成的軟件水印中,包含軟件版權(quán)信 息的是兩個(gè)質(zhì)數(shù)A和^。軟件作者可以選擇兩個(gè)足夠大的^和A,并 將兩者相乘所得更大的數(shù)作為水印數(shù)使得攻擊者破解時(shí)所付出的 代價(jià)要遠(yuǎn)大于其所能承受的代價(jià)。軟件作者將水印的編碼程序嵌入到 宿主軟件程序后,必要時(shí)觸發(fā)運(yùn)行生成軟件水印,由于該軟件水印是
動(dòng)態(tài)編碼得到的,并且水印數(shù)yV為《和^的乘積,根據(jù)數(shù)論中的大數(shù) 分解難的理論,盜版者即使得到了水印數(shù)A也很難得到真正包含版 4又信息的A和A,而只有合法用戶才能在^f僉測(cè)到^后將其分解為A和 A,從而證明其合法身份,實(shí)現(xiàn)軟件的版權(quán)保護(hù)。下面結(jié)合圖4及圖5對(duì)本發(fā)明作進(jìn)一步的描述。
參照?qǐng)D4, 一種動(dòng)態(tài)軟件水印的編碼方法,包括以下步驟
S401:將兩個(gè)代表軟件版權(quán)信息的質(zhì)數(shù)《和^之積一一水印數(shù)yV 分解為/進(jìn)制數(shù),其中,f為大于l的正整數(shù),分解后的#可以通過(guò) 式(1)表示
<formula>formula see original document page 7</formula>
其中,e'為分解得到的/進(jìn)制數(shù)的各位數(shù)值,其為自然數(shù)且小于/;
S402:構(gòu)造具有J-1個(gè)葉節(jié)點(diǎn)的PPCT水??;PPCT水印的結(jié)構(gòu)已 在背景技術(shù)中加以介紹,此處不再贅述;
S403:在由PPCT水印的頭節(jié)點(diǎn)及各個(gè)葉節(jié)點(diǎn)通過(guò)它們的左指針構(gòu) 成的循環(huán)鏈表中,根據(jù)分解得到的7f進(jìn)制數(shù)及J基數(shù)循環(huán)鏈表水印指 針編碼規(guī)則更新各個(gè)葉節(jié)點(diǎn)右指針的指向,使得各個(gè)葉子節(jié)點(diǎn)通過(guò)其 右指針的指向表示該J進(jìn)制數(shù)的各位數(shù)值,也就是說(shuō),循環(huán)鏈表的頭 節(jié)點(diǎn)的左指針指向的葉子節(jié)點(diǎn)至左指針指向頭節(jié)點(diǎn)的葉子節(jié)點(diǎn),依次 從高位到低位或者從低位到高位表示該J進(jìn)制數(shù)的各位數(shù)值;所述的 f基數(shù)循環(huán)鏈表水印指針編碼規(guī)則為
1、 右指針為空,該右指針?biāo)诠?jié)點(diǎn)表示O;
2、 右指針指向所在節(jié)點(diǎn)自身,該右指針?biāo)诠?jié)點(diǎn)表示l;
3、 右指針指向循環(huán)鏈表中除頭節(jié)點(diǎn)及所在節(jié)點(diǎn)外的其余節(jié)點(diǎn),指 向節(jié)點(diǎn)與所在節(jié)點(diǎn)之間存在的除頭節(jié)點(diǎn)外的節(jié)點(diǎn)數(shù)為/7時(shí),右指針?biāo)?在節(jié)點(diǎn)表示肝2,其中,刀為自然數(shù);也就是說(shuō),右指針指向循環(huán)鏈表 中除頭節(jié)點(diǎn)外的下一個(gè)節(jié)點(diǎn)時(shí),右指針?biāo)诠?jié)點(diǎn)表示2,以此類推。
圖5為水印數(shù)<formula>formula see original document page 7</formula>
采用上述編碼方法的編碼結(jié)果,其中,頭節(jié)點(diǎn)及各個(gè)葉節(jié)點(diǎn)通過(guò)它們的左指針構(gòu)成的循環(huán)鏈表中,401節(jié)點(diǎn)至405節(jié)點(diǎn),依次從高位到低位表示N分解后的各位數(shù)值,即401節(jié)點(diǎn)表示3, 402節(jié)點(diǎn)表示2, 403節(jié)點(diǎn)表示3, 404節(jié)點(diǎn)表示4, 405節(jié)點(diǎn)表示1。
本發(fā)明編碼生成的軟件水印具有二叉樹(shù)和鏈表的雙重特點(diǎn),其指針的具體值在每次運(yùn)行時(shí)都是不同的,具有較好的隱蔽性和抗攻擊性。這種結(jié)構(gòu)中某些節(jié)點(diǎn)的指針若被篡改,可以依據(jù)編碼規(guī)則對(duì)其進(jìn)行有效的恢復(fù)以防篡改。另外,這種具有J-1個(gè)葉節(jié)點(diǎn)的結(jié)構(gòu),只要找到其中的一個(gè)節(jié)點(diǎn),延其左指針就可以在if-2步內(nèi)找到頭節(jié)點(diǎn),從而能夠?qū)崿F(xiàn)對(duì)整個(gè)軟件水印的遍歷,這有助于在內(nèi)存堆棧中對(duì)軟件水印的定位。
以上所述僅為本發(fā)明的實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1、一種動(dòng)態(tài)軟件水印的編碼方法,其特征在于,包括以下步驟a、將水印數(shù)N分解為K進(jìn)制數(shù),其中,K為大于1的正整數(shù);b、構(gòu)造具有K-1個(gè)葉節(jié)點(diǎn)的改造的平面立體樹(shù)水印;c、在由所述改造的平面立體樹(shù)水印的頭節(jié)點(diǎn)及所述葉節(jié)點(diǎn)通過(guò)其左指針構(gòu)成的循環(huán)鏈表中,根據(jù)所述K進(jìn)制數(shù)及K基數(shù)循環(huán)鏈表水印指針編碼規(guī)則更新所述葉節(jié)點(diǎn)右指針的指向,使得所述葉子節(jié)點(diǎn)通過(guò)其右指針的指向表示所述K進(jìn)制數(shù)的各位數(shù)值。
2、 如權(quán)利要求1所述的動(dòng)態(tài)軟件水印的編碼方法,其特征在于, 所述步驟a中,所述水印數(shù)N分解為K進(jìn)制數(shù)時(shí),通過(guò)式(l)表示iV = §e,x/:' 式(1)其中,e,為所述K進(jìn)制數(shù)的各位數(shù)值,為自然數(shù)且小于K。
3、 如權(quán)利要求1或2所述的動(dòng)態(tài)軟件水印的編碼方法,其特征在 于所述水印數(shù)N為兩個(gè)代表軟件版權(quán)信息的質(zhì)數(shù)A和i 2之積。
4、 如權(quán)利要求1所述的動(dòng)態(tài)軟件水印的編碼方法,其特征在于 所述循環(huán)鏈表的頭節(jié)點(diǎn)的左指針指向的葉子節(jié)點(diǎn)至左指針指向所述頭 節(jié)點(diǎn)的葉子節(jié)點(diǎn),依次從高位到低位或者從低位到高位表示所述K進(jìn) 制數(shù)的各位數(shù)值。
5、 如權(quán)利要求1所述的動(dòng)態(tài)軟件水印的編碼方法,其特征在于, 所述K基數(shù)循環(huán)鏈表水印指針編碼規(guī)則為右指針為空,所述右指針 所在節(jié)點(diǎn)表示0;右指針指向所在節(jié)點(diǎn)自身,所述右指針?biāo)诠?jié)點(diǎn)表 示1;右指針指向所述循環(huán)鏈表中除頭節(jié)點(diǎn)及所在節(jié)點(diǎn)外的其余節(jié)點(diǎn), 指向節(jié)點(diǎn)與所在節(jié)點(diǎn)之間存在的除頭節(jié)點(diǎn)外的節(jié)點(diǎn)數(shù)為n時(shí),所述右指針?biāo)诠?jié)點(diǎn)表示n+2,其中,n為自然數(shù)。
全文摘要
本發(fā)明公開(kāi)了一種動(dòng)態(tài)軟件水印的編碼方法,首先,將水印數(shù)N分解為K進(jìn)制數(shù),其中,K大于1的正整數(shù);然后,構(gòu)造具有K-1個(gè)葉節(jié)點(diǎn)的PPCT水??;最后,在由所述PPCT水印的頭節(jié)點(diǎn)及所述葉節(jié)點(diǎn)通過(guò)其左指針構(gòu)成的循環(huán)鏈表中,根據(jù)所述K進(jìn)制數(shù)及K基數(shù)循環(huán)鏈表水印指針編碼規(guī)則更新所述葉節(jié)點(diǎn)右指針的指向,使得所述葉子節(jié)點(diǎn)通過(guò)其右指針的指向表示所述K進(jìn)制數(shù)的各位數(shù)值。本發(fā)明所述技術(shù)方案提高了軟件水印的隱蔽性和抗攻擊性。
文檔編號(hào)G06F21/00GK101630354SQ20081006853
公開(kāi)日2010年1月20日 申請(qǐng)日期2008年7月16日 優(yōu)先權(quán)日2008年7月16日
發(fā)明者沈靜博 申請(qǐng)人:中興通訊股份有限公司