二維碼加密算法

二維條碼用于證件管理在國(guó)外已經(jīng)十分常見,但由于二維碼的編解碼技術(shù)已經(jīng)非常成熟,很容易被不法分子偽造。為此,我們提出了利用偽指紋特征密鑰加密二維條碼的技術(shù)方案,實(shí)現(xiàn)了“人證同一性”問題,對(duì)基于二雛碼的證件管理具有重要的現(xiàn)實(shí)意義。

一、偽指紋特征密鑰

1、隨機(jī)數(shù)發(fā)生器概述

在密碼學(xué)中為了防止密鑰被破譯,密鑰必須沒有任何規(guī)律,基于此種要求提出了利用隨機(jī)數(shù)作為密鑰的方法。目前對(duì)隨機(jī)數(shù)發(fā)生器的研究很多,提出了很多方案,但迄今為止我們不能證明一個(gè)數(shù)字序列為完全隨機(jī),只是它的規(guī)律很難發(fā)現(xiàn)而已。目前用于密鑰的隨機(jī)數(shù)發(fā)生器主要有美國(guó)聯(lián)邦信息處理標(biāo)準(zhǔn)的ANSI X9. 17和FIPS186等多種。隨機(jī)數(shù)發(fā)生器雖然對(duì)密鑰被破譯的問題提供了支持,但隨機(jī)數(shù)是由準(zhǔn)產(chǎn)生的沒有給出認(rèn)證的問題,而這一點(diǎn)在證件管理中具有非常重要的意義。偽指紋特征隨機(jī)發(fā)生器可以解決這種認(rèn)證問題。

2、偽指紋特征隨機(jī)發(fā)生器

偽指紋特征隨機(jī)發(fā)生器的組成技術(shù)包括:指紋特征數(shù)據(jù)采集技術(shù)、偽指紋特征隨機(jī)發(fā)生器技術(shù)、偽隨機(jī)指紋特征密鑰技術(shù),如圖1所示。

(1)指紋特征數(shù)據(jù)采集器的作用是通過采集指紋數(shù)據(jù),并經(jīng)過指紋模式識(shí)別系統(tǒng)算法將它轉(zhuǎn)化為指紋特征數(shù)據(jù)。

(2)偽指紋特征隨機(jī)發(fā)生器的作用是通過偽指紋特征隨機(jī)發(fā)生器,產(chǎn)生偽隨機(jī)指紋特征。

(3)偽隨機(jī)指紋特征密鑰可使偽隨機(jī)指紋特征數(shù)據(jù)生成相關(guān)的加密和解密密鑰,并且通過該密鑰可以認(rèn)證偽隨機(jī)指紋特征數(shù)據(jù)的身份,即該密鑰是誰的指紋。

3、偽指紋特征密鑰生成方法

偽指紋特征密鑰的生成步驟如下;首先采集指紋進(jìn)行處理得到初始指紋特征信息,接著對(duì)該指紋特征信息設(shè)定參數(shù)進(jìn)行一系列的平移和旋轉(zhuǎn),形成偽隨機(jī)指紋特征,最后編碼成為偽隨機(jī)指紋特征數(shù)據(jù)值。具體實(shí)現(xiàn)過程如下:

(1)如圖2所示,圖中的P點(diǎn)是某一個(gè)指紋特征點(diǎn),T為平移向量.P’是平移后的點(diǎn)。即:P'=P+T

(2)如圖3所示,P點(diǎn)是平移后的一點(diǎn),P’是經(jīng)過旋轉(zhuǎn)后的一點(diǎn),θ是旋轉(zhuǎn)的角度.R是旋轉(zhuǎn)矩陣。即P’=R*P

(3)如圖4所示,P1和PO經(jīng)過平移旋轉(zhuǎn)后的指紋特征點(diǎn),P1'、PO’是P1和PO經(jīng)過縮放后的點(diǎn),其中S為縮放矩陣。為簡(jiǎn)化計(jì)算,SX和SY一般取值相同。

(4)將得到的每個(gè)點(diǎn)的坐標(biāo)拼接起來,產(chǎn)生一個(gè)偽指紋特征隨機(jī)數(shù)。

通過上述處理,我們并沒有改變指紋拓補(bǔ)結(jié)構(gòu),將變化前的指紋特征與變化后的指紋特征作指紋比對(duì)運(yùn)算,結(jié)果是判定兩指紋相同。由此偽指紋特征隨機(jī)數(shù)不僅表示了一個(gè)人的身份特征,而且具有隨機(jī)不確定性。若將其用作密鑰,則既可表示該密碼的人的身份,又難以破澤。經(jīng)過上述過程產(chǎn)生的隨機(jī)數(shù)值序列一般都太大(有256個(gè)字節(jié)),可以再利用哈希函數(shù)散列工具,將生成的偽指紋特征值敞列成較小的隨機(jī)數(shù)。

生成偽指紋特征密鑰的程序如圖5所示。該程序取自《Visual C++指紋模式識(shí)別系統(tǒng)算法及實(shí)現(xiàn)》中源程序??梢杂糜诋a(chǎn)生偽指紋特征密鑰對(duì)二維碼進(jìn)行加密解密。

二、二維碼加密方案研究

生成二維碼及使用的正常流程如圖6所示。

通過上面的流程,可以在不同的環(huán)節(jié)對(duì)二維條碼加密和解密形成不同的解決方案,各種方案如下。

方案一:本方案是對(duì)信源先加密,再進(jìn)行編碼,對(duì)二維條碼解碼后得到的是信息密文,只有通過解密程序才能識(shí)讀,如圖7所示。

方案二:本方案是對(duì)信源先編碼,編碼后對(duì)碼字進(jìn)行加密。為了避免碼字加密對(duì)糾錯(cuò)的影響,我們只能在糾錯(cuò)碼生成前對(duì)數(shù)據(jù)碼字進(jìn)行加密,如圖8所示。

除此之外還可在生成二維碼圖形時(shí),對(duì)碼圖進(jìn)行隨機(jī)加密,屬高級(jí)加密,條碼要通過高速解碼芯片才能解密。對(duì)二維碼進(jìn)行加密時(shí)還可同時(shí)采用上面的方案形成更多混合方案。由于二維碼識(shí)讀器已經(jīng)商業(yè)化,任何符合國(guó)家標(biāo)準(zhǔn)的二維碼都可利用二維識(shí)讀器直接解碼得到信息,因此對(duì)一般用戶來說,應(yīng)該采用第一種加密方案。第二種方案對(duì)二維碼設(shè)備開發(fā)商在擴(kuò)充其設(shè)備功能時(shí)使用。本文選擇第一種方案,利用偽指紋特征密鑰將信息加密,改善二維碼的防偽功能。

三、偽指紋特征密鑰加密證件信息的意義和流程

在證件管理中我們將證件信息存儲(chǔ)在二維碼中,將二維碼打印在證件上實(shí)現(xiàn)證件信息的自動(dòng)化讀取,但沒有證件的防偽功能。在對(duì)稱密鑰體制中,收發(fā)雙方必須共享密鑰,這就涉及到密鑰的保存與傳遞問題,攻擊者通常在密鑰的保存?zhèn)鬟f環(huán)節(jié)中竊取密鑰對(duì)密碼體制進(jìn)行攻擊,偽指紋特征密鑰可以有效防止這種攻擊。我們用持證人的偽指紋特征密鑰對(duì)證件信息加密后存儲(chǔ)在二維碼中,就可以使證件偽造者改動(dòng)證件信息的同時(shí)不能相應(yīng)改動(dòng)二維碼內(nèi)存儲(chǔ)的內(nèi)容而被識(shí)破。在證件信息的凄取過程中,只有持證人本人通過其指紋特征密鑰才能解密證件信息,防止證件被冒名使用。

偽指紋特征密鑰加密解密流程如圖9所示(其中X表示信息明文,Y表示信息密文)。

小知識(shí)之二維碼

二維碼(Quick Response Code),又稱二維條碼,它是用特定的幾何圖形按一定規(guī)律在平面(二維方向)上分布的黑白相間的圖形,是所有信息數(shù)據(jù)的一把鑰匙。在現(xiàn)代商業(yè)活動(dòng)中,可實(shí)現(xiàn)的應(yīng)用十分廣泛,如:產(chǎn)品防偽/溯源、廣告推送、網(wǎng)站鏈接、數(shù)據(jù)下載、商品交易、定位/導(dǎo)航、電子商務(wù)應(yīng)用、車輛管理、信息傳遞等。如今智能手機(jī)掃一掃(簡(jiǎn)稱313)功能的應(yīng)用使得二維碼更加普遍,隨著國(guó)內(nèi)物聯(lián)網(wǎng)產(chǎn)業(yè)的蓬勃發(fā)展,更多的二維碼技術(shù)應(yīng)用解決方案被開發(fā),二維碼成為移動(dòng)互聯(lián)網(wǎng)入口真正成為現(xiàn)實(shí)。