呂慧中 藍(lán)鳳華 李宏昌
(武警工程大學(xué),陜西西安 710086)
基于彩色二維碼圖像的數(shù)字水印算法研究
呂慧中 藍(lán)鳳華 李宏昌
(武警工程大學(xué),陜西西安 710086)
在介紹了傳統(tǒng)黑白二維碼的基礎(chǔ)上,對(duì)彩色二維碼進(jìn)行了介紹.將二維碼變成彩色,提供了更多的水印嵌入位置和更高的不可見(jiàn)性。通過(guò)Matlab仿真實(shí)驗(yàn),驗(yàn)證了在彩色二維碼中嵌入水印信息的可行性,并結(jié)合彩色二維碼的特點(diǎn),對(duì)數(shù)字水印在彩色二維碼中的應(yīng)用進(jìn)行研究,采用R、G和B三種顏色分量分別平移和旋轉(zhuǎn)的方法嵌入水印,設(shè)計(jì)出了一種可抵抗幾何攻擊的彩色二維碼水印算法,提高了二維碼的安全性和實(shí)用性。
數(shù)字水印 彩色二維碼 抗幾何攻擊
目前,二維碼技術(shù)已經(jīng)滲入到社會(huì)生活的方方面面,隨之也產(chǎn)生了一系列安全問(wèn)題。某些不法分子借助二維碼傳播病毒、木馬程序和釣魚(yú)網(wǎng)站等,以達(dá)到其竊取信息和欺騙訛詐的目的。二維碼不具備防偽功能,只要有二維碼生成軟件,一般人都可以制作。犯罪分子正是利用這一特點(diǎn),將木馬病毒或手機(jī)吸費(fèi)軟件等惡意程序通過(guò)網(wǎng)址鏈接生成二維碼,誘導(dǎo)用戶進(jìn)行掃描,一旦中毒,手機(jī)中存儲(chǔ)的通訊錄和銀行卡卡號(hào),包括交易時(shí)銀行發(fā)來(lái)的驗(yàn)證碼等隱私信息都會(huì)泄露出去。因此,將含有身份認(rèn)證的數(shù)字水印信息嵌入到二維碼中,通過(guò)這些隱藏在載體中的信息,可以達(dá)到確認(rèn)內(nèi)容創(chuàng)建者、購(gòu)買(mǎi)者、傳送隱秘信息或者判斷載體是否被篡改等目的,從而提高了二維碼的安全性。
若將傳統(tǒng)二維碼的外觀變成彩色,就形成了彩色二維碼。彩色二維碼與黑白二維碼的區(qū)別僅僅是外觀上更具吸引力,其本質(zhì)并未改變。然而,從數(shù)字水印的角度來(lái)看,彩色圖像相對(duì)于二值圖像和灰度圖像而言具有更大的水印嵌入容量,在水印嵌入強(qiáng)度相同的情況下具有更高的不可見(jiàn)性。但目前鮮少有人專門(mén)對(duì)彩色二維碼水印進(jìn)行過(guò)研究。因此,在分析了二維碼的發(fā)展現(xiàn)狀和現(xiàn)有的二維碼水印技術(shù)后,本文提出了一種基于彩色二維碼的數(shù)字水印研究技術(shù)。
二維碼是在橫向和縱向2個(gè)方向上同時(shí)進(jìn)行編碼和解碼的,具有信息容量大、可靠性高、成本低和魯棒性強(qiáng)等特點(diǎn)[1]。目前,國(guó)內(nèi)外關(guān)于二維碼信息隱藏技術(shù)的文獻(xiàn)不是很多,研究對(duì)象主要是四一七條碼(Portable Data File 417,PDF417碼)。在國(guó)內(nèi),針對(duì)PDF417碼的研究較多且以空域水印為主;在國(guó)外,以研究QR碼居多,以頻域水印為主[2]。
QR Code[3]是一種矩陣二維碼符號(hào),是日本Denso公司于1994年9月研制的,它除了具有一維條碼及其他二維碼所具有的優(yōu)點(diǎn)外,還有如下主要特點(diǎn):超高速全方位識(shí)讀、能夠有效地表示中國(guó)漢字和日本漢字。QR碼有40個(gè)版本,4個(gè)糾錯(cuò)等級(jí),單個(gè)字符最大可以容納1 817個(gè)字符,最高糾錯(cuò)等級(jí)可以糾錯(cuò)約30%的數(shù)據(jù)碼字,因此本文著重于對(duì)QR碼的水印研究。
QR碼符號(hào)如圖1所示,它由編碼區(qū)域和包括位置探測(cè)圖形、定位圖形和校正圖形在內(nèi)的功能圖形組成[4]。編碼區(qū)域的作用是數(shù)據(jù)編碼,功能圖形不用于數(shù)據(jù)編碼,符號(hào)的四周留有寬度至少為4個(gè)模塊的空白區(qū)。
圖1 QR碼符號(hào)
彩色二維碼是一種特殊的二維碼,它具有傳統(tǒng)黑白二維碼的所有功能,但彩色二維碼需滿足前景色為深色、背景色為淺色,并且定位點(diǎn)的顏色與其他模塊的顏色類似的條件,否則會(huì)影響掃碼軟件的識(shí)讀。前景色為多彩色,背景色為純白色構(gòu)成的一幅彩色二維碼圖像如圖2所示。
圖2 彩色二維碼
3.1 圖像預(yù)處理
針對(duì)QR碼數(shù)據(jù)容量和安全性的要求,必須對(duì)擬嵌入圖像進(jìn)行預(yù)處理。對(duì)嵌入圖像進(jìn)行壓縮,采用Arnold變換置亂圖像,使的Arnold變換[5]的定義為:
式中,x、y∈{0,1,K,N-1},(x,y)、(x',y')分別表示像素在圖像矩陣中變換前后的坐標(biāo),N為圖像階數(shù)。Arnold變換運(yùn)算遍歷圖像所有像素以后,將坐標(biāo)(x,y)對(duì)應(yīng)的圖像信息映像到新坐標(biāo)(xc,yc)即可得到一幅新的與原先截然不同的圖像。對(duì)水印圖W像進(jìn)行Arnold置亂,再將其展開(kāi)成一維序列后進(jìn)行混沌加密,得到水印序列Wk(如果水印本身就是二值序列,可直接進(jìn)行混沌加密)。置亂次數(shù)n以及混沌發(fā)生器的初值作為密鑰保存。
3.2 水印嵌入
為了提高彩色二維碼的安全性,在其中嵌入數(shù)字水印,具體算法如下:
①由于二維碼的空白區(qū)大小不定,且在此區(qū)域作修改會(huì)影響二維碼的正常識(shí)讀,因此嵌入水印前需將空白部分裁剪掉,只保留中間部分作為水印嵌入?yún)^(qū)域[6]。因此,首先對(duì)彩色二維碼圖像I0去除空白區(qū),并進(jìn)行4×4大小的模塊標(biāo)準(zhǔn)化得到I,經(jīng)過(guò)去除空白區(qū)和模塊標(biāo)準(zhǔn)化的二維碼核心部分如圖3所示;
圖3 去空白標(biāo)準(zhǔn)化
②對(duì)I進(jìn)行RGB色彩分離,得到R、G和B三個(gè)分量的灰度圖;
③對(duì)R分量進(jìn)行8×8大小的不重疊分塊,分塊大小應(yīng)等于模塊大小的整數(shù)倍,以抵抗縮放等攻擊;
④對(duì)各分塊做DCT變換(離散余弦變換),得到DC系數(shù),記為dij;
⑤對(duì)某一分塊嵌入強(qiáng)度為α,對(duì)所有的dij做如下四舍五入取整變換:s=round(dij/α),若mod(s+Wk,2)=1,則dij'= (s-0.5)×α;若mod(s+Wk,2)=0,則dij'=(s+0.5)×α;
⑥對(duì)各分塊做DCT反變換,得到含水印的R分量圖像,記為R';
⑦將G分量旋轉(zhuǎn)90°并向右循環(huán)平移圖像大小的1/2,將B分量旋轉(zhuǎn)180°并向上循環(huán)平移圖像大小的1/2,與R分量相同,分別對(duì)變換后的分量執(zhí)行第2至5步,然后分別逆旋轉(zhuǎn)和循環(huán)平移恢復(fù)得到G'和B';
⑧合并R'、G'和B'三個(gè)分量得到含水印的彩色圖像,添加空白區(qū)域使之變?yōu)闃?biāo)準(zhǔn)的二維碼圖像I'。
3.3水印提取
水印提取基本上是嵌入的逆過(guò)程,不需原始載體圖像參與,實(shí)現(xiàn)了水印的盲提?。?/p>
①對(duì)含水印的彩色二維碼圖像Ic0校正后去除空白區(qū),并進(jìn)行4×4大小的模塊標(biāo)準(zhǔn)化,得到Ic;
②對(duì)Ic進(jìn)行RGB色彩分離,得到3個(gè)分量的灰度圖;
③對(duì)R分量進(jìn)行8×8大小的不重疊分塊;
④對(duì)各分塊做DCT變換,得到DC系數(shù),記為dij;
⑤對(duì)某一分塊中所有dij做如下檢測(cè)處理:s=floor(dij/α),若mod(s,2)=1,則該塊計(jì)數(shù)器W1(k)=W1(k)+1;若mod(s,2)=0,則該塊計(jì)數(shù)器W0(k)=W0(k)+1;當(dāng)該塊DC系數(shù)全部檢測(cè)完成后,若W1(k)>W(wǎng)0(k),則該塊提取出水印WR(k)=1;反之,WR(k) =0。
⑥將G分量旋轉(zhuǎn)90°并向右循環(huán)平移載體圖像大小的1/2,將B分量旋轉(zhuǎn)180°并向上循環(huán)平移載體圖像大小的1/2,之后按照與R分量相同的提取過(guò)程,得到WG和WB;
⑦對(duì)WR、WG和WB每一位按照多數(shù)原則進(jìn)行合并,得到一維水印序列W';
⑧對(duì)W'進(jìn)行混沌解密,還原為二維矩陣后對(duì)其進(jìn)行Arnold逆變換,得到水印圖像Wc。
選用大小為326×326的圖2作為原始載體圖像,以大小為32×32的“工程大學(xué)”字樣的二值圖像作為水印圖像,如圖4所示,實(shí)驗(yàn)平臺(tái)為Matlab7.0。嵌入水印后的載體圖像和提取出來(lái)的水印圖像分別為圖5和圖6所示,PSNR=37.1891,NC=1,用二維碼檢測(cè)器可以正確識(shí)讀含水印載體圖像,這說(shuō)明該算法滿足了二維碼水印不可見(jiàn)的條件,是有效的。
圖4 原始水印圖像
圖5 含水印載體圖
圖6 提取水印
對(duì)含水印的載體圖像進(jìn)行放大和縮小2倍的縮放攻擊,如圖7(a)和圖8(a)所示,提取出的水印如圖7(b)和圖8(b)所示。對(duì)提取水印進(jìn)行標(biāo)準(zhǔn)化縮放校正,其NC值分別為1和0.9916,這證明該算法具有較好的抗縮放攻擊能力,滿足二維碼水印的要求。
圖7 放大2倍
圖8 縮小1/2
將含水印載體圖像的中心部分裁剪掉1/5,如圖9所示,從不同分量中提取出的水印以及最終得到的水印如圖10所示,NC=0.9859。由此可見(jiàn),該算法可較好地抵抗裁剪涂抹攻擊,對(duì)于類似在二維碼中心覆蓋不超過(guò)1/10圖片的攻擊,水印信息也可以準(zhǔn)確地提取出來(lái)。同時(shí),通過(guò)不同分量中提取出的水印可以直觀的看出,在嵌入水印時(shí)對(duì)彩色二維碼載體圖像不同分量的旋轉(zhuǎn)和平移,可以有效地分散局部連續(xù)涂抹攻擊對(duì)同一位置水印信息的影響。此外,單個(gè)分量中提取出水印的NC值也分別能達(dá)到0.7142、0.8824和0.8685,基本滿足了水印有效性的指標(biāo)。因此,在沒(méi)有特別要求時(shí),可在不同分量中嵌入不同的水印信息,這樣便能夠成倍地增加彩色二維碼嵌入水印的容量。
圖9 中心裁剪1/5圖像
圖10 提取水印
本文通過(guò)理論分析與仿真實(shí)驗(yàn)分析,證明了在彩色二維碼中嵌入水印序列是可行的。彩色二維碼提供了更多的水印嵌入位置和更高的不可見(jiàn)性,對(duì)于提高二維碼水印抗攻擊能力有較為明顯的作用,提高了二維碼水印的安全性和實(shí)用性。
[1]劉麗,周亞建.二維條碼數(shù)字水印技術(shù)研究[J].理論研究, 2014(1):56-60.
[2]朱本威,萬(wàn)武南,陳運(yùn).基于LSB的QR碼數(shù)字水印算法研究[J].成都信息工程學(xué)院學(xué)報(bào),2012,12(27):541-547.
[3]王瑞玲.面向二維條形碼的數(shù)字水印技術(shù)研究[D].杭州電子科技大學(xué),2010:1-6.
[4]Guo Zuhua,Ma Shixia,Xinxiang,et al.An Algorithm Based on Double-Fragile Digital Watermarking of Distance Education's Electronic Seal:proceedings of 2010 the Third IEEE International Conference on Computer Science and Information Technology,July 9,2010[C].Chengdu,2010.
[5]黃大足,陳志剛.基于廣義貓映射與神經(jīng)網(wǎng)絡(luò)的圖像空域水印算法[J].計(jì)算機(jī)應(yīng)用研究,2008,25(4):1114-1146.
[6]孫丙,高美鳳.基于QR碼的數(shù)字水印算法研究[J].計(jì)算機(jī)與現(xiàn)代化,2011(11):74-77.
Research on Digital Watermarking Algorithm Based on Color Two-dimensional Code Image
LV Hui-zhong,LAN Feng-hua,LI Hong-chang
(Engineering University of CAPF,Xi爺an Shaanxi 710086,China)
This paper introduces the color two-dimensional code on the basis of introducing the traditional black and white two-dimensional code.The two dimensional code is changed into color to provide more watermark embedding position and higher visibility.The MATLAB simulation experiment proves the feasibility of embedding the watermark information in the two-dimensional code.Based on characteristics of color two-dimensional code,this paper studies the application of digital watermark in color two-dimensional code.By embedding watermark through through R,G,B color component translation and rotation,this paper designs a watermarking algorithm based on the color two-dimensional code,which can resist geometric attacks and improve the security and practicability of two-dimensional code.
digital watermarking;color two-dimensional code;anti-geometrical attack
TP319
A
1008-1739(2015)21-58-4
定稿日期:2015-10-12