摘 要:目前QR二維碼采用隱形印刷等材料防偽加密比較復(fù)雜,只能在證件上使用,現(xiàn)有的數(shù)字水印加密技術(shù)在用于二維碼加密時,沒有很好的結(jié)合QR二維碼自身的編碼規(guī)則,負(fù)載的加密信息較少。根據(jù)QR二維碼的信息存放位置特點(diǎn)和QR二維碼圖像特征,將水印位置和鏈碼相結(jié)合,設(shè)計了一種新的二維碼水印加密和其解密算法。另外可以結(jié)合人體的多重生物特征對QR二維碼進(jìn)行加密,水印位置有限時采用模擬退火算法解決各項特征之間的位置競爭問題。理論和實驗表明,該算法具有速度快,準(zhǔn)確率高,加密不影響二維碼基本信息的識別,加密后的二維碼圖片能夠被主流的QR碼識別工具識別。
關(guān)鍵詞:QR碼;模擬退火算法;鏈碼;水印
1 二維碼水印加密背景及目前加密解密現(xiàn)狀
1.1 QR二維碼的應(yīng)用背景
隨著中國3G技術(shù)的普及,以及手機(jī)本身性能的提高,二維碼作為一種全新的信息存儲、傳遞和識別技術(shù)迅速地融入到了社會生活當(dāng)中,其保密和安全問題也越來越有研究價值,2012年鐵道部出現(xiàn)了用戶隱私資料信息被二維碼泄密的問題,病毒也開始通過二維碼傳播。目前國內(nèi)針對二維碼數(shù)字加密的技術(shù)的論述并不多,在當(dāng)前期刊網(wǎng)上有關(guān)二維碼討論的258篇論文也主要集中于二維碼自身的編碼解碼規(guī)則,只有16篇是討論二維碼數(shù)字手段加密的。其中加密采取的主要手段是通過復(fù)雜昂貴的隱形印刷技術(shù)。而討論數(shù)字加密的只是對一般圖像都通用的結(jié)合水印加密,未能很好的結(jié)合QR二維碼自身的編碼規(guī)則,所能負(fù)載的加密信息量也極少[3]。
1.2 國內(nèi)外二維碼加密研究現(xiàn)狀
目前,國內(nèi)外關(guān)于二維碼信息隱藏技術(shù)的文獻(xiàn)不是很多,研究對象主要是四一七條碼(Portable Data File417,PDF417碼)和QR碼。在國內(nèi),針對PDF417碼的研究較多且以空域水印為主,在國外,以研究QR碼居多,以頻域水印為主。牛夏牧[7]等利用變形技術(shù)對PDF417碼中的各組成單元寬度加以適量的變動,采用誤差累積的方式實現(xiàn)隱藏信息的嵌入和提取。陳崢等[3]針對PDF417碼,提出了基于邊界移位的隱藏信息嵌入算法。趙博等[4]提出一種基于結(jié)構(gòu)微調(diào)法的水印算法,對PDF417碼的組成條空進(jìn)行適量的微調(diào),將信息隱藏進(jìn)二維碼中。晁玉海等[5]提出一種對隱藏信息進(jìn)行擴(kuò)頻和映射處理,根據(jù)PDF417碼自身結(jié)構(gòu)特點(diǎn),通過微調(diào)條碼中的條和空將信息隱藏的方法。Ming Sun等[6]提出兩種基于離散小波變換(Discrete Wavelet Transform,DWT)變換的QR碼數(shù)字水印,分別可以嵌入隨機(jī)序列和圖片。Jau-Ji Shen等[7]針對PDF417碼提出一種稱作關(guān)聯(lián)水印的盲水印算法,該算法可以提高水印的嵌入容量并可將PDF417碼用于數(shù)據(jù)認(rèn)證。
⑴二維碼圖和傳統(tǒng)防偽制作技術(shù)(主要是印刷)相結(jié)合,避免碼圖被直接影印、拍照,比如采用隱形印刷等等;
⑵掌握二維碼編碼技術(shù),對二維碼碼圖本身做特殊處理(如加密、復(fù)合、變形等),這種方法的目的有二,一是可以讓別人的識讀軟件無法識別碼圖,二是可以在這些碼圖中編入特別信息,以作防偽校驗之用。
簡而言之,一個采用特殊印刷技術(shù),一個采用特殊編碼,從而提高技術(shù)門檻也就提高了造假的成本與難度。本文研究算法基于第二種方式,對二維碼碼圖進(jìn)行特殊處理,達(dá)到嵌入 信息進(jìn)行防偽校驗?zāi)康摹?/p>
2 適用于QR的數(shù)字水印算法
2.1 水印的嵌入算法
2.1.1 水印嵌入位置及表示方案
鏈碼和QR二維碼水印信息的位置選擇和像素值改變方案,根據(jù)鏈碼、改進(jìn)的LSB算法和二維碼的基本理論,本文結(jié)合處如下表示方案。QR碼圖像是由N*N個深色或者淺色的模塊圖形組成,實驗中是黑色和白色模塊。考慮水印需要的隱蔽性,我們選取黑色的正方形作為水印嵌入單元。假設(shè)QR碼的一個模塊圖形的大小為M*M,其中M為模塊的長度(高度),單位是像素。條碼矩陣的大小為N*N。每個正方形基元占用的像素點(diǎn)為M/N。
如圖2.1所示:跟四鏈碼的結(jié)合方式為將正方形基元平分成四等份,每一塊的大小為M/2N,選擇其中的一塊,按統(tǒng)一水印規(guī)則改變整個選中塊的像素值,嵌入水印信息,按照鏈碼方向的規(guī)則給四個方向的小矩陣編碼為0,1,2,3,四幅圖中的紅色區(qū)域分別對應(yīng)著0,1,2,3。這樣每個黑色QR碼的正方形基元便可以承載一位四進(jìn)制的數(shù)。當(dāng)圖像格式為RGB三色圖時,結(jié)合第一章所介紹的改進(jìn)的LSB編碼規(guī)則,每一塊像素值按規(guī)則改變后又可表示為00,01,10,11的四進(jìn)制,跟位置的編碼規(guī)則相結(jié)合,每個正方形模塊就可以表示一位十六進(jìn)制的數(shù),也就是4bit的信息。
2.1.2 水.印嵌入流程
如圖2.2 水印算法的整體嵌入步驟:
第一步:根據(jù)基本信息編碼出未加密的二維碼舉證,自左向右,自上而下,統(tǒng)計N*N黑色和白色模塊的QR二維碼可用來嵌入水印的黑色模塊的個數(shù),記為C,并記錄下各個可用的黑色模塊在二維碼的二維矩陣中的位置。
第二步:依據(jù)偽指紋特征隨機(jī)密鑰生成技術(shù),隨機(jī)生成三個指紋特征數(shù)據(jù)記為T1、T2、T3,并將T1、T2、T3轉(zhuǎn)碼成和水印嵌入方式所采用的編碼進(jìn)制(八進(jìn)制、十六進(jìn)制等)相同的編碼進(jìn)制,統(tǒng)計出T1,T2,T3所需要的占用編碼位數(shù)記為n1,n2,n3。
第三步:如果n1+n2+n3>c,則說明水印嵌入位置不足以嵌入所有的指紋特征數(shù)據(jù),當(dāng)嵌入位置不足時采用基于模擬退火算法競爭機(jī)制,解決各個特征信息之間采樣數(shù)競爭問題,模擬退火的優(yōu)勢能保證了嵌入位置的隨機(jī)性,和各個特征信息的均衡性。
第四步:依照模擬退火算法競爭機(jī)制產(chǎn)生的二維指紋矩陣加密位置對應(yīng)表,對QR二維碼圖形進(jìn)行加密。
2.2 水印的提取算法
如圖2.3:首先,從加密的二維碼圖片中解碼出二維碼的基本信息。
將加密后的二維碼圖片記為map1和未水印加密的二維圖片記為map2,導(dǎo)入解碼程序中。
第二步:將相應(yīng)的兩幅圖像做減法代數(shù)運(yùn)算,提取圖像中目標(biāo)區(qū)域,給定閾值大小為水印差值的一半,將低于閾值的像素點(diǎn)看作相同像素點(diǎn),差值取絕對值選取為了實現(xiàn)精確定位,因為兩幅圖像編碼格式一致,除了不通目標(biāo)區(qū)域以外,其他區(qū)域完全相同,包括圖像大小等。
第三部:使用數(shù)學(xué)形態(tài)學(xué)方法,實現(xiàn)斷線的連接,主要目的是保持目標(biāo)區(qū)域邊緣連續(xù),為孤立點(diǎn)的去除做準(zhǔn)備。第三步:使用改進(jìn)中值濾波去除圖像中孤立異常點(diǎn),如果除了目標(biāo)區(qū)域以外,其他區(qū)域完全相同,那么基本不需要去處異常點(diǎn),在做加入噪聲干擾實驗時去除邊緣毛邊是一個需要除了的問題。
第四步:采用曲線全向跟蹤技術(shù),尋找目標(biāo)區(qū)域的邊緣輪廓,探查到所有目標(biāo)區(qū)域邊緣。
第五步:將圖像按照二維碼自身的編碼規(guī)則分成N*N塊,根據(jù)上圖中提取去的各個嵌入水印的矩形區(qū)域的位置,并將區(qū)域大小經(jīng)過閾值判斷,去掉干擾點(diǎn),定位出各個區(qū)域?qū)?yīng)得編碼值,返回二維矩陣各個嵌入水印值位置對應(yīng)得值。和加密時候保存的加密二維矩陣值進(jìn)行對比,進(jìn)行水印驗證。
3 實驗
含有水印的QR碼的識別和提取實驗
算法穩(wěn)定性實驗,流程如下:
(1)產(chǎn)生一段隨機(jī)長度和隨機(jī)內(nèi)容的文本T1。
(2)將文本T1編碼為QR碼圖形Q1。
(3)計算Q1的水印容量大小。
(4)通過通過隨機(jī)指紋發(fā)生器和模擬退火競爭機(jī)制產(chǎn)生水印信息W。
(5)向Q1中嵌入水印信息W得到含有水印的QR碼圖形Q2。
(6)識讀Q2得到T2,并與原始編碼內(nèi)容T1對比,記錄對比結(jié)果。
(7)從含有水印的QR碼圖形Q2中提取水印信息WR。
(8)比較W和WR,記錄對比結(jié)果。
(9)重復(fù)1000次步驟(1)~(8)的試驗,并計算QR碼的識別正確率和水印嵌入和提取的正確率。
隨機(jī)文本T包含英文字母、數(shù)字和常用標(biāo)點(diǎn)符號。重復(fù)試驗的次數(shù)為100次,最后記錄實驗結(jié)果并計算正確率。實驗最終得到的數(shù)據(jù)是QR碼的識別正確率為97%,嵌入和提取水印的正確率為95%。該實驗表明,水印算法非常穩(wěn)定,嵌入的水印不會影響到QR碼的正確識別,并且水印信息的嵌入和提取不受水印內(nèi)容和QR碼載體圖像的影響。
4 結(jié)論
提出了一種適用于QR碼的魯棒性和嵌入信息量都適中的水印算法,該算法用鏈碼的方向編碼和改進(jìn)的LSB算法嵌入水印信息,保證水印信息不會改變QR碼的圖形結(jié)構(gòu),并確保嵌入的水印信息不會影響到QR碼的正確識別。與現(xiàn)有的利用誤差特性進(jìn)行信息隱藏的算法相比,該算法極大程度增強(qiáng)了數(shù)字水印的隱蔽性,提高了水印信息的嵌入量。同時算法不會受到QR碼的容量限制,并且適合電子保存和打印等多種形式,具有提取水印速度快,抗干擾能力強(qiáng)等優(yōu)勢。并且提出了由多種生物特征提取出的信息組成水印信息的方式,將二維碼與用戶綁定,實現(xiàn)了人碼一體的認(rèn)證功能。
[參考文獻(xiàn)]
[l]何葉.基于二維條碼的數(shù)字水印技術(shù)研究.長沙理工大學(xué)碩士學(xué)位論文.(2009).
[2]趙博.二維條碼研究.西安電子科技大學(xué)碩士學(xué)位論文.(2007).
[3]紀(jì)興中.基于二維條碼技術(shù)的數(shù)字水印系統(tǒng)研究.浙江工業(yè)大學(xué)碩士學(xué)位論文.(2007).
[4]陳哲,張永林.數(shù)字水印技術(shù)在二維條碼證件防偽中的應(yīng)用.計算機(jī)工程與科學(xué).28(4).42-44.(2006).
[5]王毅.二維條碼技術(shù)應(yīng)用及標(biāo)準(zhǔn)化狀況介紹.中國標(biāo)準(zhǔn)化.5.26-42.(2006).
[6]紀(jì)震,張基宏,蔣一峰.小波域的擴(kuò)頻數(shù)字圖像水印算法.電子域信息學(xué)報.23(8).509-813.(2001).
[7]牛牧夏,黃文軍.基于二維條碼的信息隱藏技術(shù).中山大學(xué)學(xué)報(自然科學(xué)版).43(增刊).21-25.(2004).