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