本發(fā)明涉及信息隱藏技術(shù)領(lǐng)域,尤其涉及一種基于數(shù)字指紋的PDF文檔版權(quán)保護(hù)方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)時(shí)代的到來,信息產(chǎn)業(yè)不斷發(fā)展壯大,無紙化辦公成為主流,大量企業(yè)和機(jī)關(guān)的內(nèi)部文件都以數(shù)字文件的形式保存、傳播,尤其以PDF文件格式的應(yīng)用最為廣泛。然而由于數(shù)字文件的易傳播性和易復(fù)制性,導(dǎo)致這些文件很容易遭到泄露,同時(shí)也造成了數(shù)字媒體盜版問題的泛濫。
基于上述原因,數(shù)字版權(quán)保護(hù)(即DRM,Digital Right Management)日益成為人們研究的焦點(diǎn),各種文件保護(hù)技術(shù)層出不窮。傳統(tǒng)技術(shù)的普遍工作流程是:1)對數(shù)字文件進(jìn)行加密;2)驗(yàn)證使用者身份,判斷其是否具有使用或者獲取內(nèi)容的權(quán)限;3)對于合法使用者,將文件解密。隨著人們的不斷創(chuàng)新,技術(shù)的持續(xù)進(jìn)步,上述過程中的加密和驗(yàn)證技術(shù)都已經(jīng)發(fā)展得相當(dāng)成熟。傳統(tǒng)技術(shù)是從內(nèi)容提供者的途徑進(jìn)行文件保護(hù),然而對于合法用戶通過正常渠道獲取內(nèi)容后,將其非法泄露上的行為,實(shí)用的保護(hù)技術(shù)還不多。在這一環(huán)節(jié)常用到的技術(shù)是數(shù)字水印,通常數(shù)字水印只用來證明文件的歸屬,對文件版權(quán)保護(hù)的力度不大。
技術(shù)實(shí)現(xiàn)要素:
有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是提供一種基于數(shù)字指紋的PDF文檔版權(quán)保護(hù)方法,本發(fā)明能夠?qū)⒂脩羯矸莸奈ㄒ蛔R(shí)別碼,即數(shù)字指紋,以魯棒性較高的方式嵌入到PDF文件中,并將處理過的文件分發(fā)給對應(yīng)用戶。處理過的文件能夠在各種攻擊之后,仍然保證用戶身份信息的完整。當(dāng)用戶泄露被保護(hù)文件之后,本發(fā)明可以通過分析被泄露的文件,從中提取泄露者的身份信息鎖定其身份,從而起到保護(hù)文件版權(quán)的作用。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于數(shù)字指紋的PDF文檔版權(quán)保護(hù)方法,其特征在于,包括:
步驟一、設(shè)計(jì)加密規(guī)則;
步驟二、通過信息嵌入算法隱藏?cái)?shù)字指紋,得到載密PDF文件;
步驟三、通過信息提取算法提取數(shù)字指紋,將載密PDF文件轉(zhuǎn)換為明文。
進(jìn)一步地,所述的信息嵌入算法輸入的數(shù)據(jù)信息為數(shù)字指紋、密鑰、原始PDF文件,輸出的數(shù)據(jù)信息為載密PDF文件,具體步驟如下:
S1:讀取數(shù)字指紋信息,計(jì)算出校驗(yàn)碼,根據(jù)密鑰對明文信息和校驗(yàn)碼進(jìn)行加密,將其合并后二進(jìn)制化,得到密文;
S2:打開原始PDF文件,讀取PDF的所有對象,生成對象集合;
S3:根據(jù)S2得到的PDF對象集合,找出一個(gè)隱藏對象,若沒有,則生成一個(gè)隱藏對象;
S4:隨機(jī)選擇事先制定的加密規(guī)則中的一種,并將其編號(hào)嵌入S3得到的隱藏對象中,并加入標(biāo)志位;
S5:根據(jù)S4中選擇的加密規(guī)則,確定不同的字符間距所代表的值,將加密的隱藏信息與其校驗(yàn)碼二進(jìn)制化,遍歷密文,在每一個(gè)會(huì)改變字符間距的值后面插入一個(gè)NULL值;
S6:統(tǒng)計(jì)原PDF文件中所有字符間距大小,將所占比例最高的字符間距設(shè)定為標(biāo)準(zhǔn)間距,調(diào)用PDF格式控制工具,遍歷PDF文件的文本對象,將S5處理后的密文以對應(yīng)的字符間距的形式按照順序循環(huán)嵌入每一個(gè)標(biāo)準(zhǔn)間距,直到最后一個(gè)標(biāo)準(zhǔn)間距;
S7:將上面得到的結(jié)果合并生成新的對象集,構(gòu)成載密PDF文件。
進(jìn)一步地,所述信息提取算法輸入數(shù)據(jù)信息為載密文件、密鑰,輸出數(shù)據(jù)信息為明文,具體步驟如下:
S1:使用和信息嵌入算法相同的步驟獲得對象集;
S2:根據(jù)標(biāo)志位,從S1得到的對象集中提取加密規(guī)則編號(hào),與事先設(shè)定的規(guī)則對照,確定實(shí)際使用的加密規(guī)則;
S3:統(tǒng)計(jì)原PDF文件中所有字符間距大小,找出數(shù)量最多且大小連續(xù)的三種字符間距,將它們都視作載密字符間距;
S4:按照順序從PDF文本中提取所有載密字符間距,去除冗余項(xiàng)后,參照S2確定的加密規(guī)則分析去除所有NULL值,并獲得密文;
S5:利用密鑰解密,得到明文,若得到的明文不符合校驗(yàn)碼,則返回S3重新確定載密字符間距。
進(jìn)一步地,所述加密規(guī)則包括四種,分別為:
(1)標(biāo)準(zhǔn)間距-1表示0,標(biāo)準(zhǔn)間距表示1,標(biāo)準(zhǔn)間距+1表示NULL(±1代表PDF文件頁面中x軸坐標(biāo)的一個(gè)單位);
(2)標(biāo)準(zhǔn)間距-1表示1,標(biāo)準(zhǔn)間距表示0,標(biāo)準(zhǔn)間距+1表示NULL;
(3)標(biāo)準(zhǔn)間距-1表示NULL,標(biāo)準(zhǔn)間距表示1,標(biāo)準(zhǔn)間距+1表示0;
(4)標(biāo)準(zhǔn)間距-1表示NULL,標(biāo)準(zhǔn)間距表示0,標(biāo)準(zhǔn)間距+1表示1。
本發(fā)明的有益效果是:
(1)本發(fā)明能夠追蹤文件泄露者的身份信息,提供了傳統(tǒng)文件保護(hù)之外的新一層保護(hù);
(2)本發(fā)明采用了混合方式隱藏身份信息,并通過循環(huán)嵌入的方式增加了隱藏信息的冗余量,提高了隱藏信息的魯棒性,能夠抵抗多種攻擊方式;
(3)本發(fā)明在利用字符間距嵌入隱藏信息的過程中,所使用的加密規(guī)則是隨機(jī)的,只有代表規(guī)則的編號(hào)隱藏在不可見對象中,且編號(hào)也可以不定時(shí)進(jìn)行更換,極大增加了隱藏信息的安全性;
(4)本發(fā)明通過統(tǒng)計(jì)原文得到標(biāo)準(zhǔn)間距,在不同字體、字母和符號(hào)所造成的不同字符間距中,只針對正文漢字間距進(jìn)行處理,并使用NULL值對應(yīng)的字符間距抵消了嵌入的+1或-1間距,這些措施將嵌入數(shù)字指紋過程中所造成的格式改變降低到最多只有一個(gè)單位坐標(biāo),同時(shí)也提高了信息的隱蔽性。正因?yàn)榫哂羞@些優(yōu)勢,所以該方法具有一定的實(shí)用價(jià)值和市場推廣前景,不僅能夠用于各企業(yè)、機(jī)關(guān)的機(jī)密文件保護(hù),還可以廣泛應(yīng)用于版權(quán)保護(hù)方面。
以下將結(jié)合附圖對本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進(jìn)一步說明,以充分地了解本發(fā)明的目的、特征和效果。
附圖說明
圖1是本發(fā)明數(shù)字指紋嵌入算法流程圖。
圖2是本發(fā)明數(shù)字指紋提取算法流程圖。
具體實(shí)施方式
本發(fā)明提供了一種基于數(shù)字指紋的PDF文檔版權(quán)保護(hù)方法,當(dāng)用戶申請并獲得PDF文件的授權(quán)后,將用戶的身份識(shí)別碼(即數(shù)字指紋)嵌入PDF文件中,再分發(fā)給對應(yīng)用戶;當(dāng)PDF文件被泄露后,提取其中的數(shù)字指紋,就可以確定泄露者的身份。由此可知,這種方法的關(guān)鍵就在于將用戶的身份信息隱藏在其所使用的PDF文件中。因此所要隱藏的數(shù)字指紋信息必須有很高的魯棒性,在經(jīng)歷過多種攻擊后仍然可以準(zhǔn)確識(shí)別出隱藏的數(shù)字指紋。
為達(dá)到上述目的,本發(fā)明首先對需要加密的原始PDF文件的所有字符間距大小進(jìn)行統(tǒng)計(jì),得到所占比例最高的一種字符間距(即正文中漢字的間距),將其定義為標(biāo)準(zhǔn)間距。
本發(fā)明還設(shè)計(jì)了四種加密規(guī)則:
(1)標(biāo)準(zhǔn)間距-1表示0,標(biāo)準(zhǔn)間距表示1,標(biāo)準(zhǔn)間距+1表示NULL(±1代表PDF文件頁面中x軸坐標(biāo)的一個(gè)單位);
(2)標(biāo)準(zhǔn)間距-1表示1,標(biāo)準(zhǔn)間距表示0,標(biāo)準(zhǔn)間距+1表示NULL;
(3)標(biāo)準(zhǔn)間距-1表示NULL,標(biāo)準(zhǔn)間距表示1,標(biāo)準(zhǔn)間距+1表示0;
(4)標(biāo)準(zhǔn)間距-1表示NULL,標(biāo)準(zhǔn)間距表示0,標(biāo)準(zhǔn)間距+1表示1。
設(shè)計(jì)這些規(guī)則的意義在于,在嵌入隱藏信息時(shí),當(dāng)每一個(gè)會(huì)改變原始字符間距的值出現(xiàn),都可以嵌入一個(gè)NULL值抵消其影響,從而將嵌入隱藏信息過程中對原始文件格式的改變減少到最低程度。
本發(fā)明使用了這樣一種方式來隱藏?cái)?shù)字指紋:隨機(jī)在預(yù)先設(shè)定的加密規(guī)則中選擇一種,來確定標(biāo)準(zhǔn)間距、標(biāo)準(zhǔn)間距+1、標(biāo)準(zhǔn)間距-1這三種間距所代表的值,并將隨機(jī)選擇的規(guī)則編號(hào)隱藏在PDF文件的不可見對象中,以便提取數(shù)字指紋時(shí)使用;然后按照不同間距所代表的值,將加密的隱藏信息與其校驗(yàn)碼二進(jìn)制化,依次重復(fù)嵌入PDF文件中每一個(gè)標(biāo)準(zhǔn)間距中,并在適當(dāng)?shù)奈恢貌迦肟罩?,從而降低改變字符間距對格式排版的影響,并提高隱藏信息的安全性。
在提取數(shù)字指紋時(shí),本發(fā)明采用了這樣一種方式:首先提取隱藏在PDF文件的不可見對象中的編號(hào),確定該文件加密時(shí)使用了何種規(guī)則;然后統(tǒng)計(jì)PDF文本中的所有字符間距,找出其中數(shù)量最多且連續(xù)的三種字符間距,將其視作載密字符間距;最后按照順序提取所有載密字符間距,根據(jù)加密規(guī)則去除其中的NULL值,并得到二進(jìn)制化的密文,再使用密鑰解密,得到數(shù)字指紋信息。
如圖1、2所示,本發(fā)明提出了一種信息嵌入算法和與其對應(yīng)的信息提取算法,具體步驟如下:
算法1:信息嵌入算法
輸入:數(shù)字指紋、密鑰、原始PDF文件。輸出:載密PDF文件。
S1:讀取數(shù)字指紋信息,計(jì)算出校驗(yàn)碼,根據(jù)密鑰對明文信息和校驗(yàn)碼進(jìn)行加密,將其合并后二進(jìn)制化,得到密文;
S2:打開原始PDF文件,讀取PDF的所有對象,生成對象集合;
S3:根據(jù)S2得到的PDF對象集合,找出一個(gè)隱藏對象,若沒有,則生成一個(gè)隱藏對象;
S4:隨機(jī)選擇事先制定的加密規(guī)則中的一種,并將其編號(hào)嵌入S3得到的隱藏對象中,并加入標(biāo)志位;
S5:根據(jù)S4中選擇的加密規(guī)則,確定不同的字符間距所代表的值(共有1,0,NULL三種值,具體規(guī)則參見下文表1),遍歷密文,在每一個(gè)會(huì)改變字符間距的值后面插入一個(gè)NULL值(例如,若按照規(guī)則1對應(yīng)標(biāo)準(zhǔn)間距+1,則這個(gè)值會(huì)改變字符間距,需在其后面插入NULL);
S6:統(tǒng)計(jì)原PDF文件中所有字符間距大小,將所占比例最高的字符間距設(shè)定為標(biāo)準(zhǔn)間距,調(diào)用PDF格式控制工具,遍歷PDF文件的文本對象,將S5處理后的密文以對應(yīng)的字符間距的形式按照順序循環(huán)嵌入每一個(gè)標(biāo)準(zhǔn)間距,直到最后一個(gè)標(biāo)準(zhǔn)間距;
S7:將上面得到的結(jié)果合并生成新的對象集,構(gòu)成載密PDF文件。
算法2:信息提取算法
輸入:載密文件、密鑰。輸出:明文。
S1:使用和算法1相同的步驟獲得對象集;
S2:根據(jù)標(biāo)志位,從S1得到的對象集中提取加密規(guī)則編號(hào),與事先設(shè)定的規(guī)則對照,確定實(shí)際使用的加密規(guī)則;
S3:統(tǒng)計(jì)原PDF文件中所有字符間距大小,找出數(shù)量最多且大小連續(xù)的三種字符間距,將它們都視作載密字符間距;
S4:按照順序從PDF文本中提取所有載密字符間距,去除冗余項(xiàng)后,參照S2確定的加密規(guī)則分析去除所有NULL值,并獲得密文;
S5:利用密鑰解密,得到明文,若得到的明文不符合校驗(yàn)碼,則返回S3重新確定載密字符間距。
表1不同標(biāo)準(zhǔn)間距下不同字符間距代表的值。
上表中注明了四種不同的加密規(guī)則,在這些規(guī)則下,每一個(gè)會(huì)改變字符間距的值都有一個(gè)與其相反的NULL值對應(yīng),從而抵消其對文本格式的影響。
本發(fā)明針對以上方法,給出了以下實(shí)施例:
實(shí)施例提供了一個(gè)簡單的線上PDF文件保護(hù)系統(tǒng),用于演示本發(fā)明的上述目的、特征和優(yōu)點(diǎn)。本實(shí)施例采用Java編程,由注冊模塊、Embed模塊和Extract模塊共三個(gè)模塊組成。
注冊模塊的主要功能是注冊和登錄,并在用戶注冊時(shí)生成其唯一的身份識(shí)別碼,即數(shù)字指紋。當(dāng)一個(gè)用戶申請PDF文件使用權(quán)限后,后臺(tái)會(huì)調(diào)用Embed模塊,將他的數(shù)字指紋嵌入到文件中,這樣就生成了一個(gè)新的帶指紋的文件。此時(shí)后臺(tái)會(huì)生成這個(gè)帶指紋的文件ID,并和該用戶唯一對應(yīng),實(shí)現(xiàn)了用戶和PDF文件的配對。這一機(jī)制讓用戶始終無法接觸到原始文件,增加了系統(tǒng)的安全性。
Embed模塊的主要功能是生成數(shù)字指紋、嵌入指紋。其工作流程如下:
步驟一:讀取用戶的身份識(shí)別碼,然后調(diào)用java.security.MessageDigest的getMD5String(String s)方法計(jì)算出其MD5校驗(yàn)碼,將身份識(shí)別碼和校驗(yàn)碼合并后,使用密鑰進(jìn)行加密并二進(jìn)制化,得到密文;
步驟二:使用iText工具打開原始PDF文件,并讀取PDF的所有對象,生成對象集合;
步驟三:根據(jù)PDF對象集合,找出一個(gè)不進(jìn)行頁面輸出的對象,若沒有,則生成一個(gè)這樣的對象;
步驟四:調(diào)用Math.random()方法隨機(jī)選擇事先制定的四種加密規(guī)則中的一種,將其編號(hào)嵌入得到的隱藏對象中,并加入特定信息作為標(biāo)志位;
步驟五:根據(jù)隨機(jī)選擇的加密規(guī)則,確定不同的字符間距所代表的值。在這里以標(biāo)準(zhǔn)間距-1表示1,標(biāo)準(zhǔn)間距表示0,標(biāo)準(zhǔn)間距+1表示NULL為例,遍歷密文,在每一個(gè)1后面插入一個(gè)NULL值;
步驟六:使用iText讀取原PDF文件中所有不同的字符間距大小,并分別記錄其總數(shù)量,將所占最多的字符間距設(shè)定為標(biāo)準(zhǔn)間距,遍歷PDF文件的文本對象,調(diào)用iText的格式控制方法,將處理后的密文以對應(yīng)的字符間距的形式按照順序循環(huán)嵌入每一個(gè)標(biāo)準(zhǔn)間距,直到最后一個(gè)標(biāo)準(zhǔn)間距;
步驟七:將上面得到的結(jié)果合并生成新的對象集,輸出為載密PDF文件。
Extract模塊的主要功能是提取指紋、追蹤用戶。步驟如下:
步驟一:使用和Embed模塊相同的步驟獲得對象集;
步驟二:遍歷對象集,根據(jù)標(biāo)志位找出加密規(guī)則編號(hào),與事先設(shè)定的規(guī)則對照,確定實(shí)際使用的加密規(guī)則,這里以標(biāo)準(zhǔn)間距-1表示1,標(biāo)準(zhǔn)間距表示0,標(biāo)準(zhǔn)間距+1表示NULL為例;
步驟三:使用iText讀取原PDF文件中所有不同的字符間距大小,并分別記錄其總數(shù)量,找出數(shù)量最多且大小連續(xù)的三種字符間距,將它們都視作載密字符間距;
步驟四:使用iText遍歷PDF文本對象,按照順序從PDF文本中提取所有載密字符間距,根據(jù)加密規(guī)則將其還原成1、0和NULL值,截取最長重復(fù)字段,去除NULL值,獲得密文;
步驟五:調(diào)用一次Embed模塊的加密方法來進(jìn)行解密,得到明文,將明文分為身份識(shí)別碼和校驗(yàn)碼兩部分,重新計(jì)算身份識(shí)別碼的校驗(yàn)碼,與解密獲得的校驗(yàn)碼進(jìn)行比較,若得到的結(jié)果不相同,則返回步驟三重新確定載密字符間距,若符合,則說明獲得了正確的身份識(shí)別碼;
步驟六:將獲得的身份識(shí)別碼與數(shù)據(jù)庫進(jìn)行匹配,獲得用戶的身份信息。
本發(fā)明的根本目的是提供安全可靠的文件保護(hù),安全性是首要考慮的問題。因此本實(shí)施例采用B/S模式,使系統(tǒng)具有很大的便捷性與靈活性,而且,系統(tǒng)升級(jí)對于用戶完全透明,只在服務(wù)器上完成,用戶僅得到反饋結(jié)果,這也提高了安全性。
以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)人員無需創(chuàng)造性勞動(dòng)就可以根據(jù)本發(fā)明的構(gòu)思做出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實(shí)驗(yàn)可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護(hù)范圍內(nèi)。