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

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

1  偽指紋特征密鑰

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

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

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

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

1

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

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

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

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

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

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

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

1

圖 2  點的平移

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

1

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

1

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

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

2  二維碼加密方案研究

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

1

圖 6  二維碼正常使用流程

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

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

1

圖 7  二維碼加密方案一

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

1

圖 8  二維碼加密方案二

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

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

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

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

1

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

4  結語

二維碼技術用于證件管理,易于被復制和偽造,給應用帶來了許多負面影響。 本文對二維碼加密技術做了大膽的嘗試,利用偽指紋特征密鑰將二維碼進行加密,有效地解決了證件的防偽和認證問題 。