杨晓峰 张颖 邓智敏
摘 要:二维码的广泛应用对信息安全问题提出了严峻考验,结合PKI技术,能够为二维码提供安全验证。文章介紹了PKI的概念和功能以及公钥密码技术,阐述了基于PKI的可信二维码方案,分析了使用RSA算法进行数字签名和认证的过程,最后介绍了基于PKI的可信二维码系统的组成模块。
关键词:二维码;PKI技术;数字签名;RSA算法
引言
随着移动智能终端的普及,二维码得到了广泛的使用。扫描二维码可以快速访问网址,根据二维码中的地址随时下载文件,同时可以快速方便地获取公共服务、查询电子地图、自动输入短信、识别和存储名片等。另外,通过二维码还可以实现网上购物、网上付款。二维码给大众带来了极大的便利,但其本身也存在很大的安全隐患,很多犯罪分子利用二维码传播木马病毒和欺诈性网址链接,用户扫描二维码后,点击访问这些链接,很可能就会被窃取隐私和被恶意扣费,造成不必要的损失。腾讯移动安全实验室对2015年上半年手机安全问题进行了调查和研究,发布的报告显示,通过二维码渠道传播病毒的比例已经达到惊人的13%,这些问题给二维码的安全性提出了严峻考验。
1 二维码的概述
根据图形结构的区别,二维码的码制可分为两种类型:行排式和矩阵式。PDF417是应用最广泛的行排式二维码,而矩阵式二维码中常用的有:QR Code、Data Matrix等。相比一维条码,二维码的信息容量更大,可以存储网址链接、文本数据和程序代码等信息,而且具有较强的容错能力,二维码污损一定面积后依然可以正常识读,最关键的是,二维码可引入加密措施,这为防伪创造了条件。
2 PKI技术
2.1 PKI的概念与功能
PKI是一套信息安全管理平台,用于为数据提供加密、认证等信息安全服务,它依托于公钥密码技术构建而成,运用一套严格的标准和高保密性的技术来储存和管理公钥密码。在PKI体系中,认证机构CA是PKI的核心部分,主要负责为公钥拥有者分发和管理数字证书,这就要求担任CA的机构必须具有高度的公正性、权威性和可靠性。
2.2 公钥密码技术
公钥密码体制涉及到一对非对称密钥,即公钥和私钥,公钥可以对外公开给任何人知道,在PKI体系中,公钥由CA管理供所有个人和机构合法查询,而私钥则是由用户自己保存,一般储存在USB key等智能硬件中,只有用户本人知道和使用。在数字签名的过程中,使用私钥进行加密签名,使用公钥进行解密。
2.3 公钥管理策略
PKI体系中,采用数字证书管理公钥,数字证书由CA管理和分发,主要内容包括用户的公钥和身份信息,为了确定数字证书的真实性,还需要加上CA的数字签名。通过数字证书,确定了公钥与其拥有者的身份之间的匹配关系,为数字签名的认证提供的安全保证基础。
3 基于PKI的可信二维码
3.1 基于PKI的可信二维码方案研究
二维码的可信任验证主要包括两个要求:(1)确定来源的真实性;(2)确保信息的完整性。针对第一个要求,选择数字签名技术来实现,使用合适的数字签名算法对信息生成签名,将数字签名附加在信息后,一起嵌入到二维码中,二维码识别终端识别出二维码后,对数字签名进行验证,即可判断来源是否真实。针对第二个要求,选择Hash算法来实现,Hash算法也称为散列算法,它的功能是把任意长的数据变换为固定长度的摘要,用这个固定长度的摘要就可以代表这组数据,如果这个数据发生改动,那么使用Hash算法来计算将产生不同的值,由此可以检验数据的完整性。选择一个合适的Hash函数对明文信息生成Hash值,使用私钥加密明文信息形成密文,将密文信息和明文Hash值嵌入到二维码中,识别终端识别出二维码后,对密文进行解密并计算它的Hash值,与原始Hash值进行对比,从而可以确定该二维码储存的信息是否被篡改过。
结合Hash算法和数字签名技术,基于PKI的可信二维码方案确定为:(1)签名生成:二维码发布者用Hash函数从信息文本中生成信息摘要,然后选择合适的数字签名算法,用自己的私钥对这个信息摘要进行加密,这个加密后的摘要将作为信息的数字签名,附加在信息内容中一起嵌入到二维码中。(2)签名验证:使用二维码识别终端扫描二维码获取信息和数字签名,首先用与生成摘要一样的HASH算法从信息中计算出信息摘要,接着再用二维码发布者的公钥来解密附加在信息上的数字签名来得到一个摘要,对比这两个摘要,如果相同,那么就可以确认该数字签名的来源是真实的,信息内容也没有被篡改,即该二维码是可信的。该方案的流程图如图1所示。
3.2 基于PKI的可信二维码相关算法研究
目前最常用的Hash算法主要是MD5和SHA-1,两者进行比较,在生成摘要的过程中,SHA-1的数量级要大于MD5,所以在安全性上SHA-1要高于MD5,而在速度上MD5要快于SHA-1。考虑到计算机硬件的快速发展,计算能力越来越强,应更多地考虑安全性能。因此,选择使用SHA-1算法来对信息生成摘要。
数字签名算法一般采用非对称加密算法来实现,其中应用最广泛的是RSA算法,它的安全性是基于一个著名的数学难题,即对大素数进行因子分解的困难性,这个数学难题到目前为止仍然没有有效的方法能够破解。因此,RSA算法的安全性能够得以保证。使用RSA算法生成公钥和私钥的过程是:(1)随机选取两个大素数p和q,计算两者的乘积n=p?鄢q;(2)计算n的欧拉totient函数:?渍(n)=(p-1)?鄢(q-1),随机选取一个整数e,使得gcd(?渍(n),e)=1,也就是?渍(n)和e互质;(3)计算d≡e-1mod(?渍(n)),这样私钥就是(d,n),公钥就是(e,n)。为了保证足够的保密性,使用RSA算法应选用足够大的素数,以提高因子分解的难度,这也意味着密码的破译难度加大。
选定了SHA-1和RSA算法,也确定了私钥和公钥,就可以通過以下过程对信息m进行签名和验证:二维码发布方使用SHA-1算法生成信息摘要h(m),先用私钥(d,n)加密信息摘要:s=(h(m))dmod(n),得到签名结果s,再将信息和签名(m,s)嵌入到二维码中,二维码识别终端识别出(m,s)后,使用二维码发布方的公钥(e,n)解密签名:h(m)=semod(n),再使用Hash算法SHA-1计算信息m的Hash值k(m),如果k(m)=h(m),则表示二维码是可信的。
为了提高防范攻击的能力,相关权威研究对使用RSA算法生成的密钥长度提出了要求,必须在1024bits以上才能确保被加密的数据在中短期内不被破解,而这也意味着RSA算法存在速度缓慢的缺陷。
3.3 模块分析
从软硬件构成的角度分析,一个最简单的基于PKI的可信二维码系统,组成模块上应包括认证机构CA、数字签名生成和认证、二维码生成和识读、私钥保存等几个部分。
4 结束语
二维码已经在大众生活中得到了极其广泛的应用,为人们带来便捷的同时也带来了严峻的信息安全问题,基于PKI的可信二维码在技术上依赖于密钥的安全管理和数字签名技术,能够为信息提供安全认证,帮助用户辨别信息的真假,具有一定的推广利用价值。
参考文献
[1]贾超.数字签名技术的研究及应用[D].河北工业大学,2006.
[2]庚桂平.二维条码技术及主要标准介绍[J].航空标准化与质量,2008,4:43-48.
[3]http://scan.qq.com/security_lab/news_detail_321.html.
[4]吴晶晶.PKI关键理论与应用技术研究[D].中国科学技术大学,2008.
[5]曹建国,王丹,王威.基于RSA公钥密码安全性的研究[J].计算机技术与发展,2007,17(1):172-173.
[6]赵文清,王德文,宋雨.基于PKI的数字签名和数字信封的实现[J].华北电力大学学报,2003(6):18-19.
[7]Revist R L, Shamir A, Adleman L. A method for obtaining digital signatures and public-key cryptosystems[J].Communications of the ACM,1978,21(2):120-126.
[8]DIFFIE W, HELLMAN M E. New directions in cryptography[J].IEEE Transacrions in Information Theory,1976,22(6):644-654.
*通讯作者:邓智敏,华南理工大学自动化科学与工程学院。