文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)11-0125-04
二維條碼技術(shù)是一項(xiàng)集編碼、印刷、識(shí)別、數(shù)據(jù)采集和處理于一體的自動(dòng)識(shí)別技術(shù),廣泛應(yīng)用于金融、貿(mào)易、物流、通信、制造及政府管理等領(lǐng)域。但要將二維條碼應(yīng)用于商業(yè)秘密、政府機(jī)密、以至軍事機(jī)密等數(shù)據(jù)安全性要求較高的場(chǎng)合,就需要對(duì)二維條碼進(jìn)行加密。因此研究二維條碼加密已成為拓展二維條碼應(yīng)用的重要內(nèi)容。
二維條碼的加密,首先要保證加密強(qiáng)度,使其不能被輕易破解;其次要保證加密后二維條碼的識(shí)別速度和可靠性基本不受影響。因?yàn)槎S條碼作為數(shù)據(jù)采集和輸入技術(shù),其目的就是為了提高自動(dòng)化效率。在二維條碼的加密技術(shù)研究領(lǐng)域,目前主要有3種方式:(1)在原始信息編碼前,對(duì)原始信息進(jìn)行加密形成密文,再將密文生成二維條碼。如付利莉運(yùn)用DES加密算法對(duì)PDF417碼進(jìn)行加密[1],張文愛(ài)等利用混沌改進(jìn)后的RC4算法對(duì)QR碼進(jìn)行加密[2]。但DES加密算法的安全性略顯不足,不能用于信息安全性要求較高的場(chǎng)合,而改進(jìn)后的RC4算法解密速度較慢,降低了QR碼的識(shí)別速度。(2)先將原始信息生成二維條碼,再對(duì)二維條碼圖像進(jìn)行加密處理。如張定會(huì)等分別采用DES加密算法和Logistic混沌對(duì)QR碼二值圖像進(jìn)行加密處理[3-4]。但兩種方法得到的圖像都打亂了QR碼原有結(jié)構(gòu),有可能對(duì)條碼的識(shí)別帶來(lái)影響。(3)將前兩種加密方式相結(jié)合以期望進(jìn)一步提高加密強(qiáng)度。如方媛等首先利用基于DES和RSA的混合加密算法對(duì)二維條碼的原始信息進(jìn)行加密,再將生成的加密二維條碼圖像用離散分?jǐn)?shù)傅里葉變換雙隨機(jī)相位編碼技術(shù)進(jìn)行二次加密,得到最終的加密條碼[5]。這種加密方案雖然提高了加密的強(qiáng)度,但過(guò)于復(fù)雜,同樣打亂了條碼的固有結(jié)構(gòu),其實(shí)用性需進(jìn)一步研究。
本文以典型二維條碼Data Matrix碼(簡(jiǎn)稱DM碼)為研究對(duì)象,采用新一代加密標(biāo)準(zhǔn)AES算法作為DM碼的加密算法,開(kāi)發(fā)加密DM碼生成系統(tǒng),以期望得到具有較高的加密強(qiáng)度和識(shí)別速度的加密DM碼。
1 加密算法選取
對(duì)二維條碼加密,既要保證加密強(qiáng)度,也要具有較快的加密和解密速度,因此加密算法的選取是關(guān)鍵。本文通過(guò)對(duì)3種常用的加密算法:3DES算法、AES算法和RSA算法的特點(diǎn)進(jìn)行對(duì)比,以二維條碼加密的要求為依據(jù),從而選取一種適于二維條碼加密的加密算法。
3DES算法是DES向AES過(guò)渡的加密算法,由美國(guó)標(biāo)準(zhǔn)FIPS-3于1999年定義,其明文分組長(zhǎng)度仍為64 bit,但密鑰長(zhǎng)度為168 bit[6],相當(dāng)于DES密鑰的3倍。AES算法是為取代DES而征集產(chǎn)生的,并于2001年由FIPS-197公布,具有128 bit的分組長(zhǎng)度,并提供3種可選的密鑰長(zhǎng)度,即128 bit、192 bit、256 bit[7];RSA算法是一種使用最為廣泛的公鑰加密算法,其安全性取決于整數(shù)因子分解的困難性,故而要保證信息安全,密碼專家建議RSA算法的公鑰長(zhǎng)度至少需取1 024 bit[8]。3種加密算法特點(diǎn)的對(duì)比如表1所示。
通過(guò)對(duì)3種加密算法的對(duì)比,發(fā)現(xiàn)AES算法最符合二維條碼加密的要求,無(wú)論其在加密強(qiáng)度和速度方面,都具有優(yōu)勢(shì)。目前為止,還沒(méi)有文獻(xiàn)表明能夠成功破譯AES,因此AES算法是安全的。AES的設(shè)計(jì)融合了各方面的各種特色,從而能夠抵抗已有的各種攻擊。如使用有限域中的逆運(yùn)算構(gòu)造的S盒,則可使其線性逼近和差分分布表中的各項(xiàng)趨近于均勻分布,為抵御差分和線性攻擊提供了安全性。線性變換MixColumns使得差分和線性攻擊找到包含較少活動(dòng)S盒成為不可能事件。所以對(duì)AES不存在快于窮盡搜索的已知攻擊[8]。
本文采用密鑰長(zhǎng)度為128 bit的AES加密算法,期望將加密強(qiáng)度高、加密解密速度快等優(yōu)勢(shì)在基于加密的DM碼上得以體現(xiàn)。
2 DM碼的加密生成系統(tǒng)實(shí)現(xiàn)
對(duì)于具有AES加密的DM碼的生成系統(tǒng),采用了前文所述的第一種加密方式,即先將待編碼的原始信息進(jìn)行AES加密處理,并生成密文,再對(duì)密文進(jìn)行編碼生成加密的DM碼。以.net為開(kāi)發(fā)平臺(tái), 運(yùn)用C#語(yǔ)言為工具,設(shè)計(jì)開(kāi)發(fā)了加密DM碼生成系統(tǒng)。系統(tǒng)的具體流程如圖1所示。
由于.net平臺(tái)自身具有AES加密的接口,在用代碼實(shí)現(xiàn)DM碼加密生成系統(tǒng)時(shí),可以直接調(diào)用AesCryptoServiceProvider和ICryptoTransform對(duì)象,實(shí)現(xiàn)DM碼的AES加密。具體的C#代碼示例如下:
Private string AesEncrypt(string plainText, string strKey)
{ AesCryptoServiceProvider
provider=new AesCryptoServiceProvider();
provider.Key=
Encoding.Unicode.GetBytes(strKey);
provider.IV=m_keyVec;
ICryptoTransform aesEncrtpt =
provider.CreateEncryptor();
byte[] inputText =
Encoding.Unicode.GetBytes(plainText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms,aes Encrtpt,
CryptoStreamMode.Write);
……}
3 加密DM碼的識(shí)別驗(yàn)證
對(duì)于加密DM碼的識(shí)別驗(yàn)證,本實(shí)驗(yàn)采用Honeywell Xenon 1900系列條碼掃描槍,此系列條碼掃描槍對(duì)常見(jiàn)二維條碼都具有良好的識(shí)別率和可靠性。該掃描槍的數(shù)據(jù)傳輸接口有USB接口和com接口,本實(shí)驗(yàn)采用后者。將掃描槍的數(shù)據(jù)傳輸端口與計(jì)算機(jī)的com接口連接,利用C#代碼獲取計(jì)算機(jī)的com接口為通信端口,從而將條碼掃描槍所得數(shù)據(jù)傳入計(jì)算機(jī)內(nèi)存,以便對(duì)其進(jìn)行AES解密,完成對(duì)加密DM碼的識(shí)別解密。AES算法的解密過(guò)程為其加密的逆過(guò)程,所以只需保證密碼一致,就可正確解密。
實(shí)驗(yàn)過(guò)程為,首先將加密DM碼打印出來(lái),采用與AES解密軟件聯(lián)接的掃描槍對(duì)打印出來(lái)的加密DM碼進(jìn)行識(shí)別驗(yàn)證。實(shí)驗(yàn)環(huán)境:
(1)溫度:室溫15 ℃~25 ℃;
(2)照度:大于300lx。
通過(guò)對(duì)一組(40個(gè))加密DM碼進(jìn)行識(shí)別,發(fā)現(xiàn)只有一個(gè)條碼由于打印質(zhì)量不佳而不能識(shí)別,其余條碼都能夠準(zhǔn)確識(shí)別并成功解密,并且識(shí)別速度與未加密的DM碼沒(méi)有明顯差異,因此本文采用的加密方式對(duì)條碼的識(shí)別速度影響不大。
4 加密強(qiáng)度分析
本文將AES算法應(yīng)用于對(duì)DM碼進(jìn)行加密,經(jīng)過(guò)AES加密的條碼原始數(shù)據(jù)要按照DM碼的編碼規(guī)則生成比特流,所以還需要對(duì)其進(jìn)行加密強(qiáng)度分析。由于DM碼有其自身的編碼規(guī)則,生成比特流的數(shù)據(jù)量有一定的規(guī)律,所以按其比特流規(guī)律選取128 bit、256 bit、 384 bit、512 bit、640 bit、768 bit、896 bit、1 024這8種類型,每種比特流類型隨機(jī)選取10串比特流作為分析對(duì)象,根據(jù)NIST標(biāo)準(zhǔn)進(jìn)行隨機(jī)性測(cè)試,NIST的密碼學(xué)隨機(jī)性測(cè)試標(biāo)準(zhǔn)適于檢測(cè)由硬件或軟件系統(tǒng)生成的密碼學(xué)隨機(jī)和偽隨機(jī)比特序列[9]。
4.3 測(cè)試結(jié)果分析
由圖4和圖5可以看出,頻率測(cè)試和游程測(cè)試所得的P-value值都大于0.01,表明檢測(cè)的比特流不僅在0,1總數(shù)占比上隨機(jī),而且其分布也隨機(jī)。這充分說(shuō)明將AES算法用于DM碼加密的優(yōu)越性和合理性。
本文通過(guò)將AES算法應(yīng)用于DM碼加密,在.net平臺(tái)上開(kāi)發(fā)加密DM碼生成系統(tǒng),然后對(duì)生成的加密DM碼用條碼掃描槍進(jìn)行識(shí)別驗(yàn)證,再對(duì)加密后DM碼比特流進(jìn)行隨機(jī)性測(cè)試。結(jié)果表明,該方法取得了良好的加密效果,達(dá)到了提高DM碼攜帶數(shù)據(jù)安全性的目的,而且對(duì)條碼的識(shí)別速度沒(méi)有明顯影響。
參考文獻(xiàn)
[1] 付利莉. DES算法在二維條碼數(shù)據(jù)加密中的應(yīng)用[J].石油化工高等學(xué)校學(xué)報(bào),2005,18(2):80-82.
[2] 張文愛(ài),呂韜.物料數(shù)據(jù)加密QR碼識(shí)別系統(tǒng)的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2012,38(4):117-119.
[3] 張定會(huì),單俊濤,江平.QR碼DES加密與解密[J].數(shù)據(jù)通信,2011(3):40-42.
[4] 張定會(huì),郭靜波,江平,等.QR碼二值圖像混沌加密與解密[J].移動(dòng)通信,2011(3-4):131-134.
[5] 方媛,傅華明.二維條碼加密算法的研究[J].電子技術(shù),2009(1):42-43.
[6] 龍夏,肖連軍,檀明.基于3DES加密的ATM亂序密碼鍵盤的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2010,35(6):69-71.
[7] 張聞?dòng)?高級(jí)加密標(biāo)準(zhǔn)AES中若干問(wèn)題的研究[D].西安:西安電子科技大學(xué),2003.
[8] STINSON D R.密碼學(xué)原理與實(shí)踐[M]. 馮登國(guó),等譯.北京:電子工業(yè)出版社,2009.
[9] RUKHIN A, SOTO J, NECHVA J, et al. A statistical test suite for random and pseudorandom number generators for Cryptographic Applications [S]. NIST Special Publication,2010.