李志平,姜傳賢,謝競(jìng)松
(1.海南軟件職業(yè)技術(shù)學(xué)院,瓊海 571400;2.瓊臺(tái)師范學(xué)院信息科學(xué)系,海口571100;3.桂林理工大學(xué)信息科學(xué)與工程學(xué)院,桂林541004)
當(dāng)前高速發(fā)展的信息化時(shí)代,數(shù)據(jù)庫(kù)作為信息存儲(chǔ)的載體變得日益重要,與此同時(shí)數(shù)據(jù)庫(kù)技術(shù)也日臻成熟,目前已經(jīng)成為一門活躍的學(xué)科領(lǐng)域。在政務(wù)、國(guó)防等領(lǐng)域的信息基礎(chǔ)設(shè)施建設(shè)中,如何保護(hù)這些特定數(shù)據(jù)庫(kù)數(shù)據(jù)著作權(quán),可逆水印數(shù)據(jù)庫(kù)技術(shù)[1]扮演一個(gè)重要的角色。
在系統(tǒng)開發(fā)之前首先要搭建好系統(tǒng)的開發(fā)環(huán)境,然后在此基礎(chǔ)上才能進(jìn)行系統(tǒng)的開發(fā)工作。本系統(tǒng)的開發(fā)工具采用的是MyEclipse 2013,服務(wù)器采用的是Tomcat 6.0,數(shù)據(jù)庫(kù)采用是MySQL 5.5版本,開發(fā)包采用的是JDK 1.6。
本系統(tǒng)是基于遺傳模擬退火算法[2]的特定關(guān)系數(shù)據(jù)庫(kù)著作權(quán)保護(hù)系統(tǒng),采用B/S開發(fā)模式[3]和MVC三層開發(fā)架構(gòu)[4]。B/S開發(fā)模式是瀏覽器/服務(wù)器開發(fā)模式的簡(jiǎn)稱。采用這種開發(fā)模式只需開發(fā)服務(wù)器端程序,客戶端程序無需開發(fā),瀏覽器就是客戶端,從而減少了系統(tǒng)開發(fā)的工作量和降低了開發(fā)難度,提高了效率。MVC三層架構(gòu)分別是Model層、View層、Controller層,每層各施其職完成不同的工作。
在系統(tǒng)開發(fā)的整個(gè)過程中,功能模塊單獨(dú)開發(fā),功能模塊之間通信采用一些特殊的數(shù)據(jù)結(jié)構(gòu)保存數(shù)據(jù)。同時(shí)降低功能模塊之間的關(guān)聯(lián)度,達(dá)到系統(tǒng)具有高內(nèi)聚低耦合目的,便于系統(tǒng)后期的維護(hù)和擴(kuò)展。系統(tǒng)的功能模塊如圖1所示。
圖1 系統(tǒng)功能模塊圖
(1)預(yù)處理:數(shù)據(jù)庫(kù)預(yù)處理就是將待嵌水印的數(shù)據(jù)庫(kù)分為大小相等互不重疊的數(shù)據(jù)塊。在數(shù)據(jù)庫(kù)分塊的過程中,根據(jù)并設(shè)置屬列的眾數(shù),通過使用SQL語(yǔ)句相應(yīng)分塊查詢條件,使得滿足該條件的數(shù)據(jù)庫(kù)分塊保留下來,不滿足的過濾掉。從而完成數(shù)據(jù)庫(kù)的分塊處理。數(shù)據(jù)庫(kù)水印的不可見性和魯棒性直接影響數(shù)據(jù)塊的大小,所以需要將數(shù)據(jù)庫(kù)分塊的塊數(shù)保持在一定范圍之內(nèi)。
水印圖像預(yù)處理:先對(duì)圖像進(jìn)行二值化處理,后通過ZigZag掃描方式降維產(chǎn)生一維二進(jìn)制序列。圖像的二值化逆過程將該圖像恢復(fù)出來。
(2)水印嵌入:水印信息的嵌入模塊是關(guān)系數(shù)據(jù)庫(kù)水印系統(tǒng)的核心模塊。在水印信息嵌入時(shí),首先對(duì)由水印圖像生成的二進(jìn)制序列進(jìn)行遍歷,這作為最外層的循環(huán)。在內(nèi)層循環(huán)中對(duì)數(shù)據(jù)庫(kù)的每個(gè)分塊進(jìn)行遍歷并取出一個(gè)數(shù)據(jù)庫(kù)分塊求解互信息,用來確定水印嵌入的屬性列。同時(shí),再利用模擬退火算法為該數(shù)據(jù)庫(kù)分塊選取一個(gè)最優(yōu)的水印參數(shù),然后再遍歷這個(gè)16位的水印參數(shù),最終將水印信息嵌入到該數(shù)據(jù)庫(kù)分塊中。然后再不斷的遍歷二進(jìn)制圖像水印序列和數(shù)據(jù)庫(kù)分塊,最終將水印信息嵌入到數(shù)據(jù)庫(kù)的每個(gè)分塊中。在水印嵌入的過程中,同時(shí)也要將中間數(shù)據(jù)保存起來,用作水印提取和圖像恢復(fù)的需要。
互信息:數(shù)據(jù)塊中任意兩列屬性向量aj和ak間的相關(guān)度corj,k,用Pearson相關(guān)系數(shù)表示,其公式如下:
數(shù)據(jù)塊中一列數(shù)據(jù)與其他列數(shù)據(jù)相關(guān)程度大還是小,通過相關(guān)性來確定。當(dāng)某一列數(shù)據(jù)相關(guān)度值較大時(shí),表示這一數(shù)據(jù)與其他有較大的相關(guān)性,水印的嵌入對(duì)原數(shù)據(jù)可用性的影響較大。反之,水印嵌入對(duì)原數(shù)據(jù)可用性的影響較小。這樣選擇某一列或幾列相關(guān)性值較小的作為待嵌數(shù)據(jù)塊。因此通過相關(guān)度確定數(shù)據(jù)塊的待嵌屬性列,在一定程度上能提高了算法的安全性和不可見性。
(3)水印提?。喊凑涨八∏度氲哪孢^程策略提取水印。
(4)水印模擬攻擊:在現(xiàn)實(shí)生活中,由于數(shù)據(jù)庫(kù)數(shù)據(jù)是含有有價(jià)值的大量數(shù)據(jù),因此,數(shù)據(jù)庫(kù)數(shù)據(jù)常常會(huì)有一些不法分子“偷窺”和有害的攻擊。本系統(tǒng)將水印信息隱藏到關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)中,為了驗(yàn)證數(shù)據(jù)庫(kù)水印的性能,需要對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)模擬現(xiàn)實(shí)攻擊,來評(píng)價(jià)該仿真系統(tǒng)的性能。
在界面的設(shè)計(jì)中,將整個(gè)系統(tǒng)劃分成如下模塊(一個(gè)模塊是一個(gè)頁(yè)面),又將當(dāng)前模塊劃分成不同的子模塊鑲嵌在一個(gè)頁(yè)面中,能直觀展示實(shí)驗(yàn)結(jié)果。限于篇幅給出主要功能頁(yè)面。
圖2 系統(tǒng)主頁(yè)面
從圖2可以看出本系統(tǒng)的主要功能:二進(jìn)制水印的產(chǎn)出、水印的嵌入、水印的提取、模擬攻擊等。
圖3二進(jìn)制水印信息產(chǎn)生頁(yè)面
圖3 可以看出將圖像通過預(yù)處理得出二進(jìn)制水印。
圖4 水印嵌入數(shù)據(jù)庫(kù)的數(shù)據(jù)頁(yè)面
圖5 數(shù)據(jù)庫(kù)刪除攻擊頁(yè)面
圖4是將二進(jìn)制水印嵌入到數(shù)據(jù)庫(kù)中形成水印數(shù)據(jù)庫(kù)數(shù)據(jù)。
圖6在沒有受到攻擊條件下,數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)出的數(shù)據(jù)頁(yè)面。
圖6 數(shù)據(jù)庫(kù)數(shù)據(jù)復(fù)原頁(yè)面
本文設(shè)計(jì)開發(fā)了特定數(shù)據(jù)庫(kù)著作權(quán)保護(hù)系統(tǒng),對(duì)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)做了詳細(xì)的介紹,并通過本系統(tǒng)實(shí)驗(yàn)驗(yàn)證了著作權(quán)保護(hù)的性能,表明本系統(tǒng)具有保護(hù)特定關(guān)系數(shù)據(jù)庫(kù)著作權(quán)的能力。
圖7 水印圖像提取頁(yè)面