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