吳彩麗 林家駿 李魯明
(華東理工大學(xué) 上海 200237)
抗打印攻擊的二維碼隱寫研究
吳彩麗 林家駿 李魯明
(華東理工大學(xué) 上海 200237)
近年來二維碼技術(shù)的迅速發(fā)展以及二維碼應(yīng)用的普及,使得二維碼可被打印在多種物體上進(jìn)行信息傳輸。目前抗打印的二維碼隱寫算法鮮見報(bào)道,因此利用二維碼進(jìn)行信息隱藏成為了研究趨勢(shì)。使用二維碼中常見的PDF417碼和QR碼作為信息隱藏的載體,進(jìn)行抗打印的二維碼空域隱寫實(shí)驗(yàn)研究。對(duì)于PDF417碼,通過改變PDF417碼相鄰的條和空寬度進(jìn)行隱藏信息的嵌入和提取。對(duì)于QR碼,在特定位置微調(diào)QR碼的結(jié)構(gòu),通過改變黑色方塊的高度以實(shí)現(xiàn)隱藏信息的嵌入和提取。實(shí)驗(yàn)驗(yàn)證該兩種方法的魯棒性均較好,安全性高,具有良好的抗打印攻擊能力,可適用于隱藏信息的電子和打印傳輸。
PDF417碼 QR碼 信息隱藏 抗打印攻擊
近年來,二維碼作為一種新型的信息傳播方式正在迅速發(fā)展。很多商家在其產(chǎn)品或者宣傳冊(cè)上都添加了二維碼,支持手機(jī)支付及掃碼關(guān)注,二維碼的普及給人們的生活帶來了極大便利。二維碼包括矩陣式二維碼以及堆疊式二維碼。堆疊式二維碼又稱為行排式二維碼,其以一維條碼的編碼原理為基礎(chǔ),將一維條碼按行進(jìn)行堆積而成,編碼原理、識(shí)讀方式、校驗(yàn)方式等都繼承了一維條碼的特點(diǎn),PDF417碼就屬于此類二維碼。矩陣式二維碼又被人們叫做棋盤式二維碼,它的編碼方式是在一個(gè)矩形方塊中對(duì)深、淺像素進(jìn)行有規(guī)律的分布,點(diǎn)的排列形式確定了二維碼的意義,QR碼就屬于矩陣式二維碼。二維碼具有以下幾個(gè)重要特點(diǎn):信息容量大、糾錯(cuò)能力強(qiáng)、編碼范圍廣、成本低[1]。
二維碼的信息隱藏可以分為變換域和空域隱藏技術(shù),變換域隱藏技術(shù)首先將二維碼圖像通過不同算法變換到頻域,主要有離散余弦變換、離散傅里葉變換、離散小波變換等,通過修改頻域系數(shù)實(shí)現(xiàn)信息隱藏[2-5],空域隱藏技術(shù)主要將隱藏信息嵌入到圖像的一些冗余信息中,如LSB技術(shù)、允許誤差嵌入技術(shù)等?;诙S碼的信息隱藏技術(shù)應(yīng)當(dāng)具有魯棒性、不可見性、不可測(cè)性、穩(wěn)定性且不破壞原始信息等特點(diǎn)[6]。對(duì)于二維碼的信息隱藏技術(shù)研究,趙博等[7]定義了明隱藏和暗隱藏兩種信息隱藏方法,通過改變黑白單元交替處的像素進(jìn)行隱藏,暗隱藏方法嵌入信息量較少,隱藏效果好,魯棒性較強(qiáng),明隱藏方法嵌入信息量較大,隱藏效果一般,魯棒性較弱。因此,對(duì)于信息隱藏技術(shù)而言,其魯棒性和嵌入信息量總是一對(duì)矛盾,需要一定的折中處理。陳崢等[8]通過改變PDF417碼邊界的位置,進(jìn)行左移及右移引入誤差分別隱藏二進(jìn)制0或1。晁玉海等[9]提出了一種基于擴(kuò)頻技術(shù)改進(jìn)的PDF417碼隱寫算法,通過改變各邊界處的像素,將進(jìn)行過采樣、擴(kuò)頻等預(yù)處理后的隱藏信息進(jìn)行嵌入,此算法具有容量大,魯棒性好,提取率高等特點(diǎn)。趙春玉等[10]對(duì)QR碼分塊進(jìn)行DCT變換,通過改變 DCT域直流系數(shù)實(shí)現(xiàn)隱藏信息嵌入,每塊DCT直流系數(shù)對(duì)嵌入強(qiáng)度進(jìn)行取余,對(duì)余數(shù)進(jìn)行修改從而嵌入隱藏信息,該方法透明性較好,嵌入前后圖片差異較小。由于經(jīng)打印與掃描操作后會(huì)引起二維碼圖像的變形及其細(xì)部信息的丟失,使得隱藏信息丟失,故現(xiàn)有的載有隱藏信息的二維碼少有打印于物體上進(jìn)行傳輸,故開展抗打印掃描的二維碼隱寫方法的研究是必要的。本文針對(duì)二維碼的編碼特點(diǎn),提出了兩種抗打印的二維碼隱寫算法,可使得二維碼能在打印介質(zhì)中進(jìn)行傳輸,從而得到更廣泛的應(yīng)用。
1.1 PDF417碼的結(jié)構(gòu)描述
PDF417碼的每一個(gè)符號(hào)字符是由17個(gè)模塊組成,以4個(gè)條和4個(gè)空間隔排列組成,所以稱為PDF417碼[11]。圖1為PDF417碼的結(jié)構(gòu),主要包括五個(gè)部分,由(a)起始符(b)左行指示符號(hào)字符(c)數(shù)據(jù)符號(hào)字符(d)右行指示符號(hào)字符(e)停止符組成,條碼中最窄的條或空稱為一個(gè)模塊,其中起始符由17個(gè)模塊組成,條和空模塊比例為8∶1∶1∶1∶1∶1∶1∶3,停止符由18個(gè)模塊組成,條和空模塊比例為7∶1∶1∶3∶1∶1∶1∶2∶1。
圖1 PDF417條碼結(jié)構(gòu)
二維碼需要進(jìn)行打印掃描等處理過程,為了提高條碼識(shí)別率,對(duì)于條碼各項(xiàng)指標(biāo)的誤差有嚴(yán)格的范圍要求,條碼的變形要嚴(yán)格控制在允許誤差范圍之內(nèi),否則將影響條碼原始信息的讀取。PDF417碼允許誤差如圖2所示,包括每一個(gè)條或空的允許誤差(Δb)、每一個(gè)符號(hào)字符允許誤差(Δp)、邊緣到相鄰的相似邊緣的允許誤差(Δe)、每一單元的高度允許誤差(Δh),各誤差允許范圍如下:
Δb=±(0.4X-0.0127)
(1)
Δp=±0.2X
(2)
Δe=±0.2X
(3)
Δh=±0.2X
(4)
其中,X為模塊寬度,單位毫米[12]。
圖2 PDF417碼允許誤差
1.2PDF417碼的隱藏信息嵌入和提取
由1.1節(jié)的分析可知,在PDF417碼中允許有一定范圍的誤差存在,這些誤差不影響條碼原始信息的正確識(shí)讀。本文利用條碼這一特性引入一定的誤差來進(jìn)行隱藏信息嵌入,由于引入誤差較小,人眼難以分辨其中是否嵌入隱藏信息,隱藏效果良好,并且將二維碼進(jìn)行打印掃描后能夠準(zhǔn)確無誤地提取其中的原始信息及隱藏信息。
1.2.1 隱藏信息嵌入
避開PDF417碼中的起始符和停止符,利用PDF417碼允許誤差中的Δb嵌入隱藏信息,改變其余字符符號(hào)中的條和空的寬度b引入誤差,這樣可以實(shí)現(xiàn)盲提取,具體算法如下:
(1) 將隱藏信息轉(zhuǎn)換為二進(jìn)制序列,首先將輸入的字符及漢字通過GBK編碼將字符轉(zhuǎn)為8位二進(jìn)制,漢字轉(zhuǎn)為16位二進(jìn)制,然后將其轉(zhuǎn)換為高位在前低位在后的二進(jìn)制序列,若隱藏信息二進(jìn)制序列長度小于最大可嵌入二進(jìn)制序列長度則補(bǔ)0,防止空余部分亂碼。
(2) 確定PDF417碼的四個(gè)頂點(diǎn)位置,計(jì)算條碼寬度及高度。
(3) 掃描條碼第一行起始符寬度ws1及停止符寬度wp1,根據(jù)起始符17個(gè)模塊及停止符18個(gè)模塊可由下式求得PDF417碼模塊寬度X:
X=(ws1+wp1)/(17+18)
(5)
(4) 確定PDF417碼符號(hào)字符高度h。
(5) 二進(jìn)制信息嵌入。
當(dāng)所需嵌入的隱藏信息為二進(jìn)制1時(shí),保持邊緣到相似邊緣的長度e不變,將嵌入位置條的寬度b減小Δb,同時(shí)相鄰空的寬度b增加了Δb,通過連續(xù)改變n個(gè)條和空的寬度b來增加總誤差數(shù),提高嵌入強(qiáng)度。由此,可得到連續(xù)n個(gè)條所引入的總誤差計(jì)算公式如下:
(6)
這樣,連續(xù)n個(gè)條中引入誤差-n×Δb看作嵌入了一位二進(jìn)制1。
當(dāng)所需嵌入的隱藏信息為二進(jìn)制0時(shí),保持邊緣到相似邊緣的長度e不變,將嵌入位置條的寬度b增加Δb,同時(shí)相鄰空的寬度b減小了Δb,通過連續(xù)改變n個(gè)條的寬度b來增加總誤差數(shù),提高嵌入強(qiáng)度。由此,連續(xù)n個(gè)條所引入的總誤差計(jì)算公式如下:
(7)
這樣,連續(xù)n個(gè)條中引入誤差n×Δb看作嵌入了一位二進(jìn)制0。
(6) 不斷重復(fù)步驟(5)將二進(jìn)制序列依次嵌入PDF417碼中,若一行所有條均已嵌入則轉(zhuǎn)至下一行繼續(xù)嵌入。
1.2.2 隱藏信息提取
掃描確定PDF417碼四個(gè)頂點(diǎn),確定條碼高度M1及寬度N1。掃描條碼每一行起始符寬度lsi及停止符寬度lpi,由起始符17個(gè)模塊及停止符18個(gè)模塊可求得PDF417碼模塊寬度,計(jì)算公式如下:
(8)
讀取連續(xù)n個(gè)條的寬度之和w2,計(jì)算總誤差值△w,計(jì)算公式如下:
Δw=w2-w1=w2-k×x0
(9)
其中k=w2/x0四舍五入取整,x0為條碼模塊寬度,w1為依據(jù)x0計(jì)算出的模塊寬度。如果Δw<0,則認(rèn)為在這連續(xù)n個(gè)條中嵌入了一位二進(jìn)制1,如果Δw>0,則認(rèn)為在這連續(xù)n個(gè)條中嵌入了一位二進(jìn)制0。
1.3PDF417碼的抗打印隱寫容量
當(dāng)PDF417碼高度為u行,每行符號(hào)字符個(gè)數(shù)為v,每一位二進(jìn)制修改條寬度個(gè)數(shù)為n時(shí),PDF417條碼最大二進(jìn)制嵌入量計(jì)算公式如下:
C=u×(v-2)×4/n
(10)
相應(yīng)一個(gè)字符對(duì)應(yīng)8位二進(jìn)制,一個(gè)漢字對(duì)應(yīng)16位二進(jìn)制可得字符及漢字信息的容量。
2.1QR碼的結(jié)構(gòu)描述
QR碼是一個(gè)正方形陣列,由正方形模塊構(gòu)成。它有40個(gè)不同版本,標(biāo)準(zhǔn)中所允許的規(guī)格系列為21×21模塊~177×177模塊。版本7以上的QR碼包括尋象圖形、定位圖形、校正圖形和分隔符等。圖3表示的是版本號(hào)為7的QR碼的圖形結(jié)構(gòu)。QR碼一般有四種糾錯(cuò)能力,L、M、Q和H,分別表示7%、15%、25%和30%的字碼可被修正。
圖3 QR碼結(jié)構(gòu)示意圖
QR碼之所以能通過修改其像素值實(shí)現(xiàn)信息隱藏且不破壞其原始信息,是因?yàn)镼R碼有很強(qiáng)的糾錯(cuò)能力。QR碼采用糾錯(cuò)算法生成一系列的糾錯(cuò)碼字,糾錯(cuò)碼字可以糾正替代和拒讀這兩種錯(cuò)誤。兩個(gè)糾錯(cuò)碼字用來糾正一個(gè)數(shù)據(jù)替代錯(cuò)誤。拒讀錯(cuò)誤的錯(cuò)誤碼字只需一個(gè)糾錯(cuò)碼字來糾正即可。可糾正的拒讀和替代錯(cuò)誤的數(shù)量關(guān)系由下式給出:
e+2×t≤d-p
(11)
其中:p為錯(cuò)誤譯碼保護(hù)碼字,d為糾錯(cuò)碼字?jǐn)?shù),t為替代錯(cuò)誤數(shù),e為拒讀錯(cuò)誤數(shù)[13]。
2.2QR碼的隱藏信息嵌入和提取
由2.1節(jié)可知,若修改的QR碼像素的數(shù)量占其總數(shù)的比不超過其糾錯(cuò)比,則不影響QR碼原始信息的讀取。本文利用QR碼的糾錯(cuò)特性改變黑色方塊的高度來進(jìn)行隱藏信息的嵌入[14],由于引入誤差較小,人眼難以分辨其中是否嵌入隱藏信息,隱藏效果很好,并且QR碼的原始信息和隱藏信息均能正確提取。
2.2.1 隱藏信息嵌入
由于位置探測(cè)圖形是確定QR碼位置和方向以實(shí)現(xiàn)快速識(shí)別QR碼的關(guān)鍵,因此,在進(jìn)行空域的信息隱藏時(shí),應(yīng)避開位置探測(cè)圖形。QR碼是由N2×N2個(gè)深色或者淺色的邊長為n2個(gè)像素的模塊圖形組成,因此在圖形中會(huì)形成很多的深淺交界處。實(shí)驗(yàn)中采用純黑白色來代表QR碼中的深淺色,將隱藏信息嵌入在上下黑白交界且上方為黑下方為白的位置[15],通過是否改變下方白色塊的顏色來實(shí)現(xiàn)二進(jìn)制0、1的嵌入,如圖4所示。采用此種方法實(shí)現(xiàn)信息嵌入,QR碼的模塊寬度不能低于2個(gè)像素值。
圖4 隱藏信息嵌入位置
具體算法如下:
(1) 將隱藏信息轉(zhuǎn)換成二進(jìn)制序列。
(2) 掃描確定QR碼左上、左下,右上的三個(gè)頂點(diǎn),找到滿足黑白塊寬度比為1∶1∶3∶1∶1的位置探測(cè)圖形,并得到左右兩個(gè)位置探測(cè)圖形的寬度WUL和WUR,計(jì)算出QR碼模塊寬度m,m的計(jì)算公式如下:
m=(WUL+WUR)/14
(12)
計(jì)算出m的值后,去除QR碼中的位置探測(cè)圖形。
(3) 從去除位置探測(cè)圖形后的QR碼的m-1行開始,連續(xù)讀取兩行像素的像素值,找到滿足下列條件的點(diǎn)(x1,y1):
(13)
或
(14)
(4)從點(diǎn)(x1,y1)繼續(xù)向右尋找,找到緊接點(diǎn)(x1,y1)后面出現(xiàn)的滿足下列條件的點(diǎn)(x2,y2):
(15)
或
(16)
(5)當(dāng)所需嵌入的隱藏信息為二進(jìn)制0時(shí),則將點(diǎn)(x1,y1)到點(diǎn)(x2,y2)之間的所有黑色像素下面的白色像素做如下修改(對(duì)于未變形的QR碼x1=x2):
(17)
當(dāng)所需嵌入的隱藏信息為二進(jìn)制1時(shí),則不改變這些白色像素點(diǎn)。
(6) 完成一位二進(jìn)制的隱藏信息嵌入后,依次向右再次尋找符合條件的點(diǎn)(x1,y1)和點(diǎn)(x2,y2),做相同的嵌入操作,若m-1行讀取結(jié)束,依次跳過m行進(jìn)行讀取嵌入,直到所有的信息嵌入完成。
(7) 最后添加上位置探測(cè)圖形,得到隱藏結(jié)束后的QR碼。
2.2.2 隱藏信息提取
由于QR碼結(jié)構(gòu)的特殊性,在未進(jìn)行信息隱藏時(shí),其每行或者每列連續(xù)出現(xiàn)的黑色像素點(diǎn)的個(gè)數(shù)均是模塊寬度的整數(shù)倍,但是在進(jìn)行信息隱藏之后,隱藏0的地方及其上方連續(xù)的黑色像素點(diǎn)的個(gè)數(shù)不再為模塊寬度的整數(shù)倍。并且,由于嵌入算法改變了某些行的部分像素值,使得QR碼的結(jié)構(gòu)發(fā)生了微小變化。因此僅僅讀取兩行連續(xù)的像素值,會(huì)使得隱藏信息的提取順序發(fā)生變化,導(dǎo)致提取信息出現(xiàn)錯(cuò)誤。因此,需要同時(shí)讀取三行像素,判斷第一行或者第二行哪一行先出現(xiàn)符合嵌入算法中條件的點(diǎn)(x1,y1)和點(diǎn)(x2,y2),對(duì)先出現(xiàn)的點(diǎn)之間的隱藏信息進(jìn)行提取。
找到同嵌入算法中相同條件的點(diǎn)(x1,y1)和點(diǎn)(x2,y2),從點(diǎn)(x1,y1)開始到點(diǎn)(x2,y2)結(jié)束,統(tǒng)計(jì)其中每個(gè)點(diǎn)及其上方連續(xù)黑色點(diǎn)的總數(shù)s,若為模塊寬度m的整數(shù)倍,則表示這個(gè)區(qū)間在QR碼未進(jìn)行隱藏時(shí)即為黑色的可能性加1,若s對(duì)m取余的結(jié)果為1,則表示這個(gè)點(diǎn)在QR碼未進(jìn)行隱藏時(shí)是白色的可能性加1,此黑色是由白色修改得到的。比較這一區(qū)間像素的黑白可能性的大小,若黑色可能性大,則認(rèn)為此處隱藏的是二進(jìn)制數(shù)1,否則認(rèn)為隱藏的是二進(jìn)制數(shù)0。
2.3 基于QR碼編碼方式的抗打印隱寫容量
本文所采用的基于QR碼編碼方式的隱寫算法的嵌入容量和QR碼的符號(hào)圖形編碼結(jié)構(gòu)有關(guān),因此在隱寫前需要對(duì)QR碼掃描一遍,以確定某一QR碼的隱寫容量。掃描方式與嵌入算法中的掃描方式相同,找到滿足嵌入算法中的條件的位置,從而統(tǒng)計(jì)出能夠嵌入多少字符。在多組實(shí)驗(yàn)中,此算法均具有較高的隱寫容量。例如在本文后面的實(shí)驗(yàn)中所提出的例子中,一個(gè)大小為180×180像素(4.76 cm×4.76 cm)的QR碼隱寫容量可高達(dá)40字節(jié)。
由于打印掃描會(huì)造成二維碼的變形,因此在讀取隱藏信息之前需要進(jìn)行矯正。本文僅對(duì)旋轉(zhuǎn)變形的二維碼進(jìn)行討論,將旋轉(zhuǎn)變形后的二維碼圖片通過透視變換轉(zhuǎn)換成矯正后圖形。經(jīng)過透視變換將一個(gè)二維圖像變?yōu)榱硗庖粋€(gè)平面圖像的過程可表示為[16]:
(18)
(19)
其中(α,β)是變換后的像素坐標(biāo),(φ,ω)是原始圖片的像素坐標(biāo),ρ1、ρ2、ρ3、ρ4、ρ5、ρ6、ρ7、ρ8是透視變換參數(shù)。通過掃描,可以得到旋轉(zhuǎn)變形后的二維碼四個(gè)頂點(diǎn)坐標(biāo),將此四個(gè)頂點(diǎn)記作(φ1,ω1)、(φ2,ω2)、(φ3,ω3)、(φ4,ω4) ,已知變換后的二維碼頂點(diǎn)坐標(biāo)為(α1,β1)、(α2,β2)、(α3,β3)、(α4,β4),可得到下列公式:
(20)
可記作:
αβ=M×ρ
(21)
變換后得到:
ρ=M(-1)×αβ
(22)
因此可由這兩組點(diǎn)得到一組透視變換參數(shù),通過這組參數(shù),對(duì)原始圖片的每一個(gè)坐標(biāo)點(diǎn)進(jìn)行變換,得到最終矯正后的圖形,從而完成對(duì)整個(gè)二維碼的矯正。
4.1PDF417碼抗打印隱寫的實(shí)驗(yàn)結(jié)果分析
在打印掃描過程中主要攻擊表現(xiàn)為水平面旋轉(zhuǎn)引起的變形[17],因此使用透視變換對(duì)形變圖形進(jìn)行校正。首先從圖形四個(gè)頂點(diǎn)分別進(jìn)行橫向及縱向掃描確定掃描后PDF417碼的頂點(diǎn)位置,然后通過透視變換將其映射為矩形,接著使用提取算法進(jìn)行隱藏信息提取。
由于算法中Δb為引入誤差,Δb至少為1個(gè)像素,結(jié)合PDF417碼允許誤差規(guī)定Δb的允許范圍,可以得出PDF417碼模塊寬度x至少為4個(gè)像素。同時(shí)實(shí)驗(yàn)中取模塊寬度為3個(gè)像素進(jìn)行隱寫后,雖然能夠提取其中的隱寫信息,但無法提取PDF417碼原始信息,這也和前面理論計(jì)算結(jié)果相符,因此實(shí)驗(yàn)中取模塊寬度為4個(gè)像素,寬高比1∶3的PDF417碼進(jìn)行信息隱藏。
實(shí)驗(yàn)中采用的打印機(jī)均為HP LaserJet 1536dnf MFP,掃描儀為Epson Perfection V330 Photo。實(shí)驗(yàn)中分別對(duì)n=1、n=2、n=4三種情況進(jìn)行測(cè)試,圖5為原始PDF417碼,其各項(xiàng)參數(shù)如下:條碼原始信息為“abcdefghijk”,大小為480×36個(gè)像素(12.672 cm×0.95 cm),模塊寬為4個(gè)像素,高為12個(gè)像素,寬高比1∶3。取Δb為1個(gè)像素,最大可嵌入二進(jìn)制長度為60/n位,取n=2進(jìn)行隱藏可嵌入二進(jìn)制長度為30位,即可隱藏字符數(shù)為3個(gè),圖6為隱寫后的PDF417條碼,隱寫內(nèi)容為123。
圖5 原始PDF417碼
圖6 隱寫PDF417碼
本文在打印掃描實(shí)驗(yàn)中取
n
=1、
n
=2、
n
=4三種情況下各進(jìn)行多次實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果為
n
=1時(shí)無法正確提取隱藏信息,可以正確提取條碼原始信息,
n
=2及
n
=4時(shí)能夠100%正確提取隱藏信息及條碼原始信息,由此可知
n
=2時(shí)即可克服打印掃描所產(chǎn)生的誤差。因此
n
=2時(shí)既能保證隱藏信息正確提取,又能使隱寫容量最大。
此隱寫方法的優(yōu)點(diǎn)是能夠抵抗打印掃描攻擊,魯棒性較好,但是本算法受到PDF417條碼標(biāo)準(zhǔn)限制,導(dǎo)致所需條碼面積較大至少為12 cm×1 cm,而且隱藏容量較小,僅能隱藏30位二進(jìn)制相當(dāng)于3個(gè)字符。
4.2 基于QR碼編碼方式的抗打印隱寫的實(shí)驗(yàn)結(jié)果分析
由于本文的基于QR碼編碼方式的隱寫算法需要改變某些行的像素來實(shí)現(xiàn)信息的嵌入,因此QR碼的模塊寬度至少為2個(gè)像素。在QR碼的模塊寬度不低于2個(gè)像素值的情況下,原始信息和隱藏信息均能正確提取。
在做打印掃描攻擊實(shí)驗(yàn)時(shí)(實(shí)驗(yàn)采用的打印機(jī)和掃描儀與PDF417實(shí)驗(yàn)中相同),為了提高修復(fù)的準(zhǔn)確率,QR碼的模塊寬度最好不低于3個(gè)像素。由于打印掃描的參數(shù)設(shè)置不同會(huì)使得QR碼的尺寸呈一定比例放大,因此在矯正時(shí),需要知道掃描的分辨率大小以及讀取出QR碼的版本號(hào),以便將圖形還原成與打印前相同的尺寸。首先從圖形三個(gè)位置探測(cè)圖形所在的頂點(diǎn)分別進(jìn)行橫向及縱向掃描確定QR碼的三個(gè)頂點(diǎn)位置,再由掃描得到的左上、左下、右上頂點(diǎn)計(jì)算出右下頂點(diǎn),通過透視變換將其映射為矩形,得到傾斜矯正后的圖形。然后根據(jù)掃描分辨率D,QR碼版本號(hào)V,計(jì)算出QR碼的原始大小,計(jì)算公式如下:
m0=((M2/D+N22/D)/2)/(V×4+17)
(23)
W=m0×(V×4+17)
(24)
H=m0×(V×4+17)
(25)
其中,M2、N2分別為掃描截取得到的QR碼圖形的寬高,截取時(shí)應(yīng)當(dāng)靠近QR碼邊緣,m0為計(jì)算得出的QR碼理論模塊寬度,W、H分別為QR碼的理論計(jì)算得到的寬高。將透視變換得到的圖形縮放到理論計(jì)算的大小,則得到與打印前相同大小的QR碼。
由于打印掃描會(huì)使得QR碼邊緣模糊,導(dǎo)致變換后的QR碼某些邊緣部分會(huì)有黑色像素破損或者突出,因此,需要對(duì)變換后的QR碼做修復(fù)處理。采用m0×m0大小的矩形,對(duì)QR碼進(jìn)行無重復(fù)、無遺漏的依次截取,統(tǒng)計(jì)截取到的模塊中黑白像素點(diǎn)的個(gè)數(shù)。若黑色像素點(diǎn)不超過m0/2,則將此矩形中的黑色點(diǎn)改為白色點(diǎn),若此模塊中黑色點(diǎn)的個(gè)數(shù)不少于m0×(m0-1),則將此模塊中的所有白色點(diǎn)改為黑色點(diǎn)。完成了整個(gè)QR碼圖形的第一次修復(fù)之后,再采用1×m0大小的矩陣,對(duì)QR碼進(jìn)行無重復(fù)、無遺漏的依次截取,統(tǒng)計(jì)截取到的模塊中黑白像素點(diǎn)的個(gè)數(shù)。若黑色像素點(diǎn)僅為一個(gè),則將此矩形中的黑色點(diǎn)改為白色點(diǎn),若白色像素點(diǎn)僅為1,則將白色像素點(diǎn)改為黑色,直到整幅圖片修復(fù)完成。最后提取修復(fù)完成的圖片的隱藏信息。
在實(shí)驗(yàn)中,本文分別對(duì)多種版本號(hào),多種模塊寬度的QR碼進(jìn)行打印掃描實(shí)驗(yàn)。圖7為QR碼的一組打印掃描實(shí)驗(yàn),圖(a)為原圖,其各項(xiàng)參數(shù)如下:條碼原始信息為 “huadongligongdaxue”,大小為180×180像素(4.76 cm×4.76 cm),版本號(hào)為7,糾錯(cuò)級(jí)別為H,模塊寬度為4個(gè)像素,隱寫最大容量為40字節(jié),圖(b)為隱寫后的圖形,隱藏信息為“你好你好你好”,圖(c)為打印掃描矯正后未經(jīng)修復(fù)的圖形,圖(d)為修復(fù)后的圖形。
圖7 QR碼隱寫實(shí)驗(yàn)圖
本文在QR碼的打印掃描實(shí)驗(yàn)中,分別取模塊寬度為2、3、4、5個(gè)像素的多個(gè)QR碼進(jìn)行了多組實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,當(dāng)模塊寬度為2時(shí),QR碼的隱寫容量達(dá)到最大,但修復(fù)時(shí)容易造成較多區(qū)域修復(fù)錯(cuò)誤,從而導(dǎo)致隱藏信息提取錯(cuò)誤。當(dāng)模塊寬度不低于3個(gè)像素時(shí),提取的正確率多數(shù)情況下可達(dá)到100%,但是隱寫容量卻有所降低??梢姡琎R碼的隱寫容量和其魯棒性之間存在一定矛盾。因此,在確保隱藏信息有較高的提取正確率的同時(shí) ,為使QR碼隱寫容量達(dá)到最大,QR碼的模塊寬度應(yīng)取為3個(gè)像素。
此組實(shí)驗(yàn)中,隱藏信息可被100%正確提取。在多組實(shí)驗(yàn)中,提取準(zhǔn)確率為100%的比例達(dá)到75%。因此,本文的基于QR碼編碼方式的隱寫算法具備一定的抗打印掃描攻擊能力。
本文在確保二維碼原始信息不遭受破壞的情況下,充分利用了PDF417條碼以及QR碼結(jié)構(gòu)的特殊性,在黑白交界處通過黑白像素點(diǎn)的改變實(shí)現(xiàn)信息的嵌入。嵌入隱藏信息后的圖片和未嵌入之前的圖片在視覺上難以看出差別,且兩種方式都具有良好的抗打印掃描攻擊能力,使得隱藏信息不僅可通過二維碼進(jìn)行電子傳輸,也可以打印在物體上傳輸。這使得利用二維碼進(jìn)行隱藏信息的傳遞的應(yīng)用范圍進(jìn)一步擴(kuò)大。
[1] Liu C H, Chou C H. Two-dimensional bar code mobile commerce-Implementation and performance analysis[C]//Networked Computing and Advanced Information Management, 2010 Sixth International Conference on. IEEE, 2010:632-635.
[2] Wang G, Ping X, Zhang T, et al. Steganography Based on LSB and Its Steganalysis[J]. Computer Engineering, 2008, 34(1):173-174,189.
[3] Zhu Z, Zhang D. Watermarking Algorithm Based on DWT and Chaotic Encryption[J]. Laser and Infrared, 2006, 36(5):417-420.
[4] Liu F, Han K, Wang C Z. A novel blind watermark algorithm based on SVD and DCT[C]//2009 IEEE International Conference on Intelligent Computing and Intelligent Systems, 2009:283-286.
[5] Vongpradhip S, Rungraungsilp S. QR code using invisible watermarking infrequency domain[C]//2011 9th International Conference on ICT and Knowledge Engineering. IEEE, 2012:47-52.
[6] 楊溯.信息隱藏技術(shù)初探[J]. 信息安全與技術(shù), 2015, 6(7):15-16.
[7] 趙博,黃進(jìn).基于PDF417條碼的信息隱藏方法[J].計(jì)算機(jī)工程與設(shè)計(jì), 2007, 28(19):4806-4809.
[8] 陳崢,姚宇紅,王曉京.一種基于二維圖形碼的數(shù)字水印技術(shù)[J].計(jì)算機(jī)應(yīng)用, 2006, 26(8):1998-2000.
[9] 晁玉海,劉連山,薛立勤,等.基于PDF417條碼的信息隱藏算法[J].計(jì)算機(jī)工程, 2010, 36(9):131-133.
[10] 趙春玉,時(shí)宏偉,胡可鑫,等.基于DCT變換的彩色圖像水印盲提取算法[J].計(jì)算機(jī)工程與設(shè)計(jì), 2015, 36(3):597-602.
[11] 牛夏牧,黃文軍,吳迪,等.基于二維條碼的信息隱藏技術(shù)[J].中山大學(xué)學(xué)報(bào)(自然科學(xué)版), 2004, 43(S2):21-25.
[12] 中華人民共和國國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局.GB/T17172-1997 四一七條碼[S]. 北京:中國標(biāo)準(zhǔn)出版社, 1998.
[13] 中華人民共和國國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局.GB/T18284-2000 快速響應(yīng)矩陣碼[S]. 北京:中國標(biāo)準(zhǔn)出版社, 2000.
[14] 魏偉光.二維條碼空間域數(shù)字水印嵌入方法研究[J].北方工業(yè)大學(xué)學(xué)報(bào), 2010, 22(3):5-9.
[15] 朱本威,萬武南,陳運(yùn).基于LSB的QR碼數(shù)字水印算法研究[J].成都信息工程學(xué)院學(xué)報(bào), 2012, 27(6):541-547.
[16] 代勤,王延杰,韓廣良.基于改進(jìn)Hough變換和透視變換的透視圖像矯正[J].液晶與顯示, 2012, 27(4):552-556.
[17] 田敏,劉琚,孫建德,等.?dāng)?shù)字印刷品中基于圖像配準(zhǔn)的數(shù)字水印技術(shù)[C]//第十一屆全國信息隱藏暨多媒體信息安全學(xué)術(shù)大會(huì)CIHW2013論文集, 2013:161-166.
RESEARCH ON TWO-DIMENSIONAL CODE STEGANOGRAPHY FOR ANTI-PRINT ATTACK
Wu Caili Lin Jiajun Li Luming
(EastChinaUniversityofScienceandTechnology,Shanghai200237,China)
In recent years, the rapid development of two-dimensional code technology and the popularity of two-dimensional code applications, making two-dimensional code can be printed on a variety of objects for information transmission. At present, the two-dimensional code steganography of anti-printing is rarely reported, so the use of two-dimensional code for information hiding has become a research trend. In this paper, PDF417 code and QR code, which are common in two-dimensional code, are used as information hiding vectors to carry out anti-printing two-dimensional code steganalysis. For PDF417 code, by changing the PDF417 code adjacent to the width of the black bars and white bars, embedded and extracted hidden information. For the QR code, this paper fine-tunes the structure of QR code in the specific location, by changing the height of the black box to achieve the hidden information embedded and extracted. Experiments show that the two methods are robust, safe, and have good anti-print attack ability, which can be applied to hide the information of electronic and print transmission.
PDF417 code QR code Information hiding Anti-print attack
2016-02-25。國家信息安全測(cè)評(píng)中心項(xiàng)目(CNITSEC-KY-2012-006/2)。吳彩麗,碩士生,主研領(lǐng)域:信息安全。林家駿,教授。李魯明,學(xué)士。
TP3
A
10.3969/j.issn.1000-386x.2017.03.015