基于二維碼的加密算法分析

二維碼以其成本低廉 、編碼范圍廣 、信息容量大 、容錯(cuò)糾錯(cuò)能力強(qiáng)等優(yōu)點(diǎn) ,在社會(huì)生活的許多領(lǐng)域得到了廣泛的應(yīng)用 。 二維碼用于證件管理可以實(shí)現(xiàn)證件信息的自動(dòng)識(shí)讀 ,便于網(wǎng)絡(luò)化管理 ,并有一定的防偽功能 ,在國(guó)外已經(jīng)有了成熟的應(yīng)用 。 但在應(yīng)用中發(fā)現(xiàn)二維碼防偽功能十分有限 ,并且不能滿足證件管理中的“人證同一性”問(wèn)題 ,基于此 ,本文將指紋技術(shù)與二維碼加密技術(shù)結(jié)合提出了一種應(yīng)用方案 ,以期增強(qiáng)二維碼在證件管理中的防偽功能。

1  偽指紋特征密鑰

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

在密碼學(xué)中為了防止密鑰被破譯 ,密鑰必須沒(méi)有任何規(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ì)密鑰被破譯的問(wèn)題提供了支持 ,但隨機(jī)數(shù)是由誰(shuí)產(chǎn)生的沒(méi)有給出認(rèn)證的問(wèn)題 ,而這一點(diǎn)在證件管理中具有非常重要的意義。偽指紋特征隨機(jī)發(fā)生器可以解決這種認(rèn)證問(wèn)題 。

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

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

1

圖 1  偽指紋特征隨機(jī)發(fā)生器解決方案

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

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

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

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

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

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

1

圖 2  點(diǎn)的平移

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

1

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

1

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

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

2  二維碼加密方案研究

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

1

圖 6  二維碼正常使用流程

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

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

1

圖 7  二維碼加密方案一

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

1

圖 8  二維碼加密方案二

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

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

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

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

1

圖 9  偽指紋特征密鑰加密解密流程

4  結(jié)語(yǔ)

二維碼技術(shù)用于證件管理,易于被復(fù)制和偽造,給應(yīng)用帶來(lái)了許多負(fù)面影響。 本文對(duì)二維碼加密技術(shù)做了大膽的嘗試,利用偽指紋特征密鑰將二維碼進(jìn)行加密,有效地解決了證件的防偽和認(rèn)證問(wèn)題 。