專利名稱::一種OracleSpatial空間數(shù)據(jù)庫的數(shù)字水印嵌入與提取方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于地理信息版權(quán)保護領(lǐng)域,具體涉及一種OracleSpatial空間數(shù)據(jù)庫的數(shù)字水印方法。
背景技術(shù):
:數(shù)字水印技術(shù)作為信息隱藏的一個重要分支,在版權(quán)認證方面起著關(guān)鍵作用?;跀?shù)據(jù)庫在數(shù)據(jù)管理中發(fā)揮的重要作用,其版權(quán)認證研究正在迅速開展并形成了多種數(shù)據(jù)庫水印嵌入和提取算法,如《漢明碼和多數(shù)選舉在關(guān)系數(shù)據(jù)庫數(shù)字水印中的應(yīng)用》(鄭光明.湖南理工學(xué)院學(xué)報.2005,18(3):23-25.)提出基于差錯控制的關(guān)系數(shù)據(jù)庫數(shù)字水印算法,在整體上把通過拉格郎日插值公式進行密鑰分存的思想引入到關(guān)系數(shù)據(jù)庫數(shù)字水印的分存過程中,然后在局部再與漢明碼和多數(shù)選舉相結(jié)合的糾錯方法進行差錯控制;《基于密鑰分存的關(guān)系數(shù)據(jù)庫數(shù)字水印技術(shù)》(胡斌,施榮華,彭沛夫.計算機應(yīng)用研究,2007,24(8):144-145.)提出的基于密鑰分存的關(guān)系數(shù)據(jù)庫數(shù)字水印技術(shù),將可信中心和密鑰分存的思想引入關(guān)系數(shù)據(jù)庫水印算法,首先爭取對水印信息分存,然后根據(jù)分存值序列,分成三元組序列,再對數(shù)據(jù)庫中有效位數(shù)較多的數(shù)值型字段值進行更新,修改其最低有效位的值;《基于BIBD的數(shù)據(jù)庫壓縮水印技術(shù)》(栗新宇,王以剛.計算機科學(xué).2008,25(3):97-102)提出了基于BIBD的數(shù)據(jù)庫壓縮水印技術(shù)使用一維轉(zhuǎn)換為二維的元組標識算法,并以此將數(shù)據(jù)庫中的元組進行分組、排序,得到元組的排列方式,在每一個元組分組的內(nèi)部,運用BIBD算法對數(shù)據(jù)庫中的元組進行篩選,最終得到待嵌入水印信息的元組;《基于多維云模型的關(guān)系數(shù)據(jù)庫數(shù)字水印算法》(徐龍琴,劉雙印,沈玉利.佳木斯大學(xué)學(xué)報.2008,26(3):330-333)提出了基于多維云模型的關(guān)系數(shù)據(jù)庫數(shù)字水印算法根據(jù)關(guān)系數(shù)據(jù)庫某些數(shù)值型屬性允許一定誤差的特點,結(jié)合云理論,將每一個數(shù)值型屬性都作為一個維度,結(jié)合多維云模型,提出一種半盲觀'J的關(guān)系數(shù)據(jù)庫水然而,數(shù)據(jù)庫的結(jié)構(gòu)特征是數(shù)據(jù)庫水印研究的基礎(chǔ)和前提,只有針對數(shù)據(jù)庫的組織結(jié)構(gòu)特點,才能設(shè)計出有效的數(shù)字水印算法。以O(shè)racleSpatial為典型代表的對象關(guān)系空間數(shù)據(jù)庫模型,與傳統(tǒng)的數(shù)據(jù)庫組織有較大不同,目前已有數(shù)據(jù)庫數(shù)字水印算法也難以直接應(yīng)用于OracleSpatial空間數(shù)據(jù)庫的版權(quán)認證。
發(fā)明內(nèi)容本發(fā)明的目的在于本發(fā)明針對OracleSpatial空間數(shù)據(jù)庫的數(shù)據(jù)存儲特征和結(jié)構(gòu)特征,提出一種適用于OracleSpatial空間數(shù)據(jù)庫的魯棒性水印嵌入和提取算法,根據(jù)坐標排列的不同狀態(tài)來嵌入不同的水印信息,即突破了以往數(shù)據(jù)庫水印算法主要針對數(shù)值型數(shù)據(jù)的使用限制,又避免了水印嵌入對數(shù)據(jù)質(zhì)量的影響。同時,該方法對于格式變換操作、元組增加攻擊以及數(shù)據(jù)壓縮操作等諸多操作與攻擊具有較好的魯棒性。'本發(fā)明的總體思路是利用空間數(shù)據(jù)庫中要素的坐標排列順序改變不會影響數(shù)據(jù)質(zhì)量的特點,以坐標排列順序的不同狀態(tài)來表示水印信息O和1(圖1所示)。該方法由于修改的只是坐標排列順序而不是數(shù)據(jù)本身,從而不會對載體數(shù)據(jù)精度造成任何影響。并且本算法對于投影操作、幾何變換以及數(shù)據(jù)壓縮等諸多操作具有較好的魯棒性。本發(fā)明OracleSpatial空間數(shù)據(jù)庫的水印嵌入方法,步驟如下(1)元組分組并生成待嵌入元組序列Q針對空間數(shù)據(jù)庫中的數(shù)據(jù)表G,選擇適當?shù)膯蜗騂ash函數(shù),與給定的密鑰key結(jié)合,對待嵌入數(shù)據(jù)表的空間數(shù)據(jù)字段最小外接矩形編碼計算Hash值,并對Hash值求余數(shù),挑選余數(shù)符合條件的元組R供水印嵌入。其具體過程如下1)計算空間數(shù)據(jù)庫G中每個元組其空間數(shù)據(jù)字段R.g的最小外接矩形,基于該最小外接矩形對角線兩頂點坐標經(jīng)運算,生成元組標識編碼,記為R.s;2)根據(jù)單向Hash函數(shù)以及用戶事先給定的密鑰key,由公式1)計算每個元組所對應(yīng)的哈希值R.h;R.h=H(R.s,key)1)3)若R.h滿足R.hmodv=w,則將元組R放入待嵌入元組序列Q。其中,除數(shù)v和余數(shù)w均由用戶在滿足下式2)條件的前提下事先給出。<formula>formulaseeoriginaldocumentpage6</formula>2)其中l(wèi)為空間數(shù)據(jù)庫G中元組的數(shù)量,乂,為水印信息m的長度,《為若R.h不滿足R.hmodv=w,則不將元組R放入待嵌入元組序列Q。(2)將待嵌入元組序列Q中的元組,按照R.h值的大小進行從大到小或者,到大排序,將經(jīng)過排序的待嵌入元組序列記為Qs;(3)循環(huán)取Qs中的每一個待嵌入元組Ri和水印信息m的第i位mi,若mi二O,將該元組空間數(shù)據(jù)坐標Ri.g按照要素的坐標序列以X最小值點為開頭排列;若mi=l,則將該元組空間數(shù)據(jù)坐標Ri.g按照要素的坐標序列以X最大值點為開本發(fā)明OracleSpatial空間數(shù)據(jù)庫的水印提取方法,步驟如下(1)元組分組并選取包含水印信息的元組Q'根據(jù)嵌入算法的單向Hash函數(shù)以及密鑰key,對欲提取水印數(shù)據(jù)表的空間數(shù)據(jù)字段最小外接矩形編碼計算Hash值,并對Hash值求余數(shù),余數(shù)符合條件的元組即為包含水印信息的元組。其具體過程如下1)計算待提取數(shù)據(jù)表G'中每個元組其空間數(shù)據(jù)字段R.g的最小外接矩形,基于該最小外接矩形對角線兩頂點坐標,計算元組標識編碼,記為R.s;2)根據(jù)單向Hash函數(shù)以及水印嵌入時輸入的密鑰key,由公式3)計算每個元組所對應(yīng)的哈希值R.h;R.h:H(R.s,key)3)3)若R.h滿足R.hmodv=w,則將元組R放入包含水印信息元組的序列Q'。其中,除數(shù)v和余數(shù)w取用戶嵌入時給定的值。若R.h不滿足R.hmodv=w,則不將元組R放入包含水印信息元組的序列Q,。(2)將含水印信息元組序列Q'中的元組,按照水印嵌入時的順序,根據(jù)R.h值按嵌入時的大小順序進行排序,將經(jīng)過排序的元組序列記為Qs';(3)循環(huán)取Qs'中的每一個待提取元組Ri,檢測其坐標排列順序,如果要素的坐標序列是以X最小值點為開頭排列的,則mi=0;如果要素的坐標序列是以X最大值點為開頭排列的,則mpl;(4)將mi按先后順序組合,可形成完整的水印信息m"。將提取的水印編碼m'與原始水印編碼m進行比對,判別其相似度。如果二者相似度大于閾值^,則可證明待提取數(shù)據(jù)表G,的版權(quán)歸屬。圖l基于坐標排列次序的水印信息嵌入示意圖;其中a為原始數(shù)據(jù)的坐標排列次序;b表示"1"的坐標排列次序;C表示"0"的坐標排列次序;圖2江蘇省巿縣級行政區(qū)劃圖層;圖3江蘇省巿縣級行政區(qū)劃圖層所對應(yīng)的空間數(shù)據(jù)表;圖4最小外接矩形示意圖5水印嵌入效果圖。具體實施例方式下面結(jié)合附圖并通過描述一個針對OracleSpatial空間數(shù)據(jù)庫中數(shù)據(jù)的水印嵌入和提取實例,進一步說明本發(fā)明的效果。本實例選擇江蘇省巿縣級行政區(qū)劃圖層為實驗數(shù)據(jù)(圖2所示),比例尺為l:25萬,面圖層,格式為OracleSpatial,其所對應(yīng)的空間數(shù)據(jù)表結(jié)構(gòu)如圖3所示。版權(quán)信息為"NJNU",其所對應(yīng)的二進制水印編碼信息為"1001110100101010011101010101",使用MD5算法作為哈希函數(shù),水印嵌入所使用的密鑰為"wlw"。具體實施過程如下1、空間數(shù)據(jù)庫數(shù)字水印嵌入步驟l:元組的分組,挑選符合條件的待嵌入元組序列Q。具體過程如下(1)最小外接矩形編碼計算讀取每個元組的空間數(shù)據(jù)字段,分別計算每個元組所對應(yīng)的最小外接矩形,并依據(jù)每個元組對角線兩頂點的X坐標和Y坐標進行相應(yīng)最小外接矩形編碼。例如Rl、R2、R3、R4、R5為實驗數(shù)據(jù)中的5個元組,其最小外接矩形及相應(yīng)的編碼如表1所示。表l元組最小外接矩形及其相應(yīng)的編碼元組編號<table>tableseeoriginaldocumentpage9</column></row><table>(2)哈希值計算對每個元組的最小外接矩形編碼后,利用單向哈希函數(shù)以及密鑰計算哈希值,這里用MD5算法作為哈希函數(shù),密鑰為,并將所得的MD5碼轉(zhuǎn)化成整數(shù)。以上述5個元組為例,計算所得的哈希值為Hash(Rl)=103098911291365490,Hash(R2)=124251064536824990,Hash(R3)=68910729591775952,Hash(R4)=253871395883784290,Hash(R5)=84056616369779280。(3)求余并分組對每個元組所計算的哈希值求余數(shù),余數(shù)滿足條件的元組分為一組作為待嵌入元組,這里重復(fù)嵌入次數(shù)《取值為1,除數(shù)取3,余數(shù)取0滿足下式選取要求v<——2~Vt,<V元組哈希值除以3,余數(shù)為0的元組即被挑選出。以上述5個元組為例,求9余所得結(jié)果分別為mod(R1)^,mod(R2):l,mod(R3)二2,mod(R4)=0,mod(R5)=0,則元組R1、R4、R5為待嵌入元'組,在本例的實驗數(shù)據(jù)中,共有29個元組被挑選出來。步驟2:元組的排序。根據(jù)步驟l中所計算每個元組對應(yīng)的哈希值,按照從小到大的順序進行排序。以R1、R4、R5為例,Hash(R4)〉Hash(R5)〉Hash(Rl),因此,這三個元組的排列順序為R4、R5、Rl,將所有被選中的29個元組均按照這個方法進行排序,經(jīng)過排序的待嵌入元組序列記為Qs。步驟3:基于坐標排列順序的修改嵌入水印信息。根據(jù)水印信息,依次修改每個待嵌入元組的坐標排列順序,其具體過程如下(1)讀取待嵌入元組序列記Qs中第一個元組的空間數(shù)據(jù)字段,并讀取水印信息的第一位。水印信息"1001110100101010011101010101"的第一位為1,則將Qs中第一個元組R4的坐標排列順序修改為以X最大值點為開頭。R4的原始坐標排列順序為表2所示,嵌入水印后的坐標排列順序為表3所示。表2R4的原始坐標排列順序點序號X坐標Y坐標1120.118500032.68617632120.112808032.6873856k120.304174632.3635902120.118500032.68617633R4嵌入水印信息后的坐標排列順序點序號X坐標Y坐標10<table>tableseeoriginaldocumentpage11</column></row><table>(2)循環(huán)上述步驟,完成全部水印信息的嵌入。2、空間數(shù)據(jù)庫數(shù)字水印提取步驟l:元組分組并將包含水印的元組挑選出來。具體過程如下(1)最小外接矩形編碼計算該步驟與水印嵌入時相同,對于待提取數(shù)據(jù)表G'中的每個元組分別計算每個元組所對應(yīng)的最小外接矩形,并依次記錄對角線兩頂點的X坐標和Y坐標。例如計算所得的元組R1的最小外接矩形編碼為120883286120903282;元組R2的最小外接矩形編碼為120863283120873283;元組R3的最小外接矩形編碼為120863282120873280;元組R4的最小外接矩形編碼為119803271120303268;元組R5的最小外接矩形編碼為120193271120873260。對于數(shù)據(jù)表中的每一個元組,均計算并記錄相應(yīng)的最小外接矩形編碼。(2)哈希值計算對每個元組的最小外接矩形編碼,利用單向哈希函數(shù)以及密銷計算哈希值,這里采用嵌入時所用的MD5算法作為函數(shù),密鑰是嵌入時所輸入的"wlw"。以上述5個元組為例,計算所得的哈希值為Hash(Rl)=103098911291365490,Hash(R2)=124251064536824990,Hash(R3)=68910729591775952,Hash(R4)=253871395883784290,Hash(R5)二84056616369779280。(3)求余并分組對每個元組所計算的哈希值求余數(shù),余數(shù)滿足條件的元組為含水印信息的元組Q',按照嵌入時的取值,這里的除數(shù)取3,余數(shù)取0,元組哈希值除以3,余數(shù)為0的元組即被挑選出,以上述5個元組為例,求余所得結(jié)果分別為mod(Rl)二0,mod(R2)=l,mod(R3)=2,mod(R4)二0,mod(R5)二0,則元組Rl、R4、R5被識別為包含水印的元組。在本例的實驗數(shù)據(jù)中,共有29個元組被挑選出來。步驟2:元組的排序。根據(jù)步驟l中所計算每個元組對應(yīng)的哈希值,按照從小到大的順序進行排序。以R1、R4、R5為例,Hash(R4)〉Hash(R5)〉Hash(Rl),因此,這三個元組的排列順序為R4、R5、Rl,將所有被選中的29個元組均按照這個方法進行排序。排序后的含水印信息元組,記為Qs'。步驟3:根據(jù)坐標排列順序還原水印信息。依次檢測Qs,中每個元組的X坐標排列順序,還原水印信息。其具體過程如下(1)讀取第一個元組的空間數(shù)據(jù)字段,檢測第一個元組R4的坐標排列順序,若是以X最大值點為開頭,則水印的第一位信息為1;若是以X最小值點為開頭,則水印的第一位信息為0。(2)循環(huán)上述步驟,完成水印提取,獲得最終的水印信息為"1001110100101010011101010101"。3、實驗與分析(1)數(shù)據(jù)格式轉(zhuǎn)換攻擊。將嵌入水印的OracleSpatial中數(shù)據(jù)庫的1:25萬江蘇省巿縣級行政區(qū)劃圖層通過FME軟件轉(zhuǎn)換為.shp格式存放,然后將其再次導(dǎo)入到OracleSpatial數(shù)據(jù)庫中,并進行水印提取。實驗結(jié)果可知,水印信息被完整提取。由于格式轉(zhuǎn)換并沒有改變數(shù)據(jù)中要素的坐標排列順序,該方法對數(shù)據(jù)格式轉(zhuǎn)換攻擊具有較好的魯棒性。(2)嵌入水印信息前后的數(shù)據(jù)質(zhì)量實驗。將嵌入水印前后的兩數(shù)據(jù)通過FME軟件轉(zhuǎn)換為.shp格式后,利用ArcToolbox的erase功能對它們作異或操作。操作結(jié)果(圖5所示)為一空集,說明操作前后兩數(shù)據(jù)是完全一致的,沒有任何精度的損失。(3)OracleSpatial中數(shù)據(jù)表的元組增加攻擊。元組增加攻擊成功與否主要是看所增加元組的最小外接矩形編碼哈希值是否滿足事先給定的求余條件。因為條件公式是利用加密哈希函數(shù)來進行計算的,攻擊者在不知道密鑰的情況下無法知道哈希值所滿足的條件,而任意增加元組滿足事先給定條件的幾率是很低的。并且,當元組較多時,水印信息是重復(fù)多次嵌入的。該算法對元組增加攻擊具有較好的魯棒性。(4)坐標系轉(zhuǎn)換攻擊。將含有水印的數(shù)據(jù)進行坐標轉(zhuǎn)換,由于坐標系轉(zhuǎn)換會造成組成要素的點的坐標都發(fā)生輕微變化,最小外接矩形和坐標大小關(guān)系也會發(fā)生細徼變化,從而引起坐標數(shù)據(jù)排列順序的一定變化,會導(dǎo)致水印信息無法提取。該缺陷可在求取最小外接矩形編碼時,通過對所取小數(shù)點后的位數(shù)進行控制,有效消除該攻擊對水印信息的攻擊。(5)坐標排序攻擊。本算法是基于坐標排序原理的,惡意攻擊者如果將所有空間數(shù)據(jù)坐標全部重新排序,則會對水印造成難以防范的破壞,這是算法的固有缺陷。然而,并不存在十全十美的水印算法,都有一定的缺陷存在。由本發(fā)明原理可知,在使用本發(fā)明嵌入水印的同時,可利用其它基于替換、加性或乘性原理的已有水印算法嵌入水印信息,而不會造成彼此的干擾和沖突。為此,基于多功能水印原理,在應(yīng)用該方法的同時,結(jié)合使用其它水印算法,可優(yōu)勢互補,有效提高算法的魯棒性。本發(fā)明技術(shù)方案和實施例中僅基于橫坐標X進行水印信息的嵌入與提取??梢赃x擇在縱坐標Y中進行水印信息的嵌入與提取,也可以在橫坐標X和縱坐標Y中同時進行水印信息的嵌入與提取,其嵌入和提取方法與在橫坐標X中方法相同。權(quán)利要求1、一種OracleSpatial空間數(shù)據(jù)庫的水印嵌入方法,步驟如下步驟1、元組分組并生成待嵌入元組序列Q針對空間數(shù)據(jù)庫中的數(shù)據(jù)表G,選擇適當?shù)膯蜗騂ash函數(shù),與給定的密鑰key結(jié)合,對待嵌入數(shù)據(jù)表的空間數(shù)據(jù)字段最小外接矩形編碼計算Hash值,并對Hash值求余數(shù),挑選余數(shù)符合條件的元組R供水印嵌入;具體過程如下1)計算空間數(shù)據(jù)庫G中每個元組其空間數(shù)據(jù)字段R.g的最小外接矩形,基于該最小外接矩形對角線兩頂點坐標經(jīng)運算,生成元組標識編碼,記為R.s;2)根據(jù)單向Hash函數(shù)以及用戶事先給定的密鑰key,由下式計算每個元組所對應(yīng)的哈希值R.hR.h=H(R.s,key);3)若R.h滿足R.hmodv=w,則將元組R放入待嵌入元組序列Q;其中,除數(shù)v和余數(shù)w滿足下式w<v式中NG為空間數(shù)據(jù)庫G中元組的數(shù)量,Nm為水印信息m的長度,K為重復(fù)嵌入次數(shù);若R.h不滿足R.hmodv=w,則不將元組R放入待嵌入元組序列Q;步驟2、將待嵌入元組序列Q中的元組,按照R.h值的大小進行從大到小或者從小到大排序,將經(jīng)過排序的待嵌入元組序列記為Qs;步驟3、循環(huán)取Qs中的每一個待嵌入元組Ri和水印信息m的第i位mi,若mi=0,則將該元組空間數(shù)據(jù)坐標Ri.g按照要素的坐標序列以X最小值點為開頭排列;若mi=1,則將該元組空間數(shù)據(jù)坐標Ri.g按照要素的坐標序列以X最大值點為開頭排列。2、一種權(quán)利要求1所述OracleSpatial空間數(shù)據(jù)庫的水印的提取方法,其步驟如下步驟l、元組分組并選取包含水印信息的元組Q'根據(jù)嵌入算法的單向Hash函數(shù)以及密鑰key,對欲提取水印數(shù)據(jù)表的空間數(shù)據(jù)字段最小外接矩形編碼計算Hash值,并對Hash值求余數(shù),余數(shù)符合條件的元組即為包含水印信息的元組;具體過程如下'1)計算待提取數(shù)據(jù)表G'中每個元組其空間數(shù)據(jù)字段R.g的最小外接矩形,基于該最小外接矩形對角線兩頂點坐標,計算元組標識編碼,記為R.s;2)根據(jù)單向Hash函數(shù)以及水印嵌入時輸入的密鑰key,計算每個元組所對應(yīng)的哈希值R.h:R.h=H(R.s,key)3)若R.h滿足R.hmodv=w,則將元組R放入包含水印信息元組的序列Q';其中,除數(shù)v和余數(shù)w取用戶嵌入時給定的值;若R.h不滿足R.hmodv=w,則不將元組R放入包含水印信息元組的序列Q,;步驟2、將含水印信息元組序列Q'中的元組,按照水印嵌入時的順序,根據(jù)R.h值按嵌入時的大小順序進行排序,將經(jīng)過排序的元組序列記為Qs';步驟3、循環(huán)取Qs'中的每一個待提取元組Ri,檢測其坐標排列順序,如果要素的坐標序列是以X最小值點為開頭排列的,則mpO;如果要素的坐標序列是以X最大值點為開頭排列的,則m產(chǎn)l;(4)將nu按先后順序組合,形成完整的水印信息m'。全文摘要本發(fā)明公開了一種OracleSpatial空間數(shù)據(jù)庫的數(shù)字水印嵌入與提取方法。本發(fā)明利用空間數(shù)據(jù)庫中要素的坐標排列順序改變不會影響數(shù)據(jù)質(zhì)量的特點,以坐標排列順序的從小到大及從大到小兩種不同狀態(tài)來分別表示二進制水印信息“0”和“1”。該方法由于修改的只是坐標排列順序而不是數(shù)據(jù)本身,從而不會對載體數(shù)據(jù)精度造成任何影響。并且本方法對于投影操作、幾何變換以及數(shù)據(jù)壓縮等諸多操作具有較好的魯棒性。文檔編號G06F17/30GK101661495SQ200910032558公開日2010年3月3日申請日期2009年6月23日優(yōu)先權(quán)日2009年6月23日發(fā)明者吳掠桅,李安波,解憲麗,閭國年申請人:南京師范大學(xué)