文献标识码: 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.