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