QR码信息安全研究
2018-04-23梁大伟
梁大伟
(江苏警官学院 计算机信息与网络安全系,江苏 南京 210031)
0 引言
近年来,移动智能终端在中国呈现爆发式的增长,搭载二维码技术的相关应用层出不穷,涉及到人们生活的方方面面。但在人们享受二维码带来便利的同时,其本身所存在的信息安全问题也不容忽视,因二维码使用不当造成经济损失或者个人信息泄露的事件时有发生。
结合市面现有二维码的使用方式,对二维码生成、传播、使用等环节进行分析研究,以提高用户端二维码信息的安全性,给出各方面安全隐患的应对策略。
1 QR 码概述
在20世纪70年代,日本Denso Wave公司为了追踪汽车零部件而设计了二维码(two-dimensional bar code),它是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息[1]。根据编码方式的不同,可分为堆叠式和矩阵式等。其中由于 QR二维码具有(Quick-Response code)高密度、大容量、容错强、译码可靠等特点,在移动支付、信息交互、物流管理等方面被广泛应用。
1.1 QR 码的符号结构
QR码是由若干个黑白方形模块排列组成的正方形矩阵,分为编码区域和功能图形区域,黑色代表1,白色代表0,符号规格根据编码数据量自适应调整,支持数字、字母、日文字(Shift JIS)、汉字(UTF-8、BIG5)等数据编码方式[2]。
QR码的通用结构标准是由功能图形(function patterns)和编码区(encoding region)组成,其中功能图形有空白区(quite zone)保证QR码清晰可识别、定位标识(finder pattern)协助扫描软件定位并变换坐标系、分隔符(separator)用于区分编码区域和定位标识、定时标识(timing pattern)指示标识密度和确定坐标系、校正标识(alignment pattern)进一步校正坐标系;编码区有编码区域(encoding region)标识编码数据、格式信息(format information)来存放容错级别等数据、版本信息(version information)、数据及容错字码(data and error correction codewords)。
图1 QR 码的符号结构[3]Fig.1 QR Code Symbolic structure[3]
1.2 QR 码的编解码原理
ISO/IEC 18004中规定了QR码使用四种标准编码方式将数据信息转换为二维码图形的通用编码流程,通过硬件设备将图形定位扫描后对图形进行逆转还原成数据信息则为解码。
图2 数据“JSPI”编码过程Fig.2 Coding process of data “JSPI”
首先对要编码的数据进行分析(data analysis),确定使用的 QR码的版本信息、编码方式等,对数据进行编码(data encoding),插入模式标识码和终止标识符,加入填充字节来满足标准的数据字码数要求,计算容错码(error correction coding),附在编码数据后,组织数据(structure final message),将准备好的数据切分后填充(module placement in matrix)到矩阵中,对数据进行掩码(data masking),使得二维码图形中的深色和浅色(黑色和白色)区域能够比率最优的分布,最后填入格式和版本信息(format and version information),完成整个编码过程[4]。
QR码包含多种独特的符合特征,这些特征保证了通过硬件识别时快速的独立定位性[5]。搜索 3个功能图形和空白区后,QR码得到定位,进行图像的预处理,由于条码图案损坏或者扫描传输错误,运用 RS纠错码进行纠错译码,最后将数据区得到的数据通过编码的反向过程,得到被处理过的数据,通过格式和版本信息的解析,最终还原原始数据[6]。
1.3 QR 码安全分析
QR码在信息传递方面的巨大优势使其在移动智能端迅猛发展,但是其开源的性质使得编解码完全开放,导致了QR码的安全隐患。据统计,虽然47%的用户对二维码漏洞有清醒的认识,但2016年因为二维码问题出现的手机病毒危害仍达到了 13.2%[7]。
图3 QR 码染“毒”过程Fig.3 Poisoning process of QR code
(1)编码方法简单使得二维码制作简单。在对数据进行编码的过程中,将待编码数据进行数据分析,转化为二进制数据流,加上终止符以表结束,最后将二进制数据流序列按照每八位一个码字进行编码,位数不足填零充满。不法分子将 QR码信息破解后隐藏手机病毒、收费软件、钓鱼网站等非法链接,伪装成公用二维码传播。
(2)用户使用手机移动端读取二维码信息缺少防范能力。普通解码软件无安全监测能力,对解码之后的数据中嵌入的非法信息无法识别,用户扫码后易中手机病毒或木马,由于现在移动端硬件配置和几年前的个人电脑相差无几,电脑端的安全问题在移动端基本都可以重现。有的二维码相关APP甚至自带病毒,在后台进行木马植入或信息劫持,严重危害信息安全。
2 QR 码信息安全设计
日益增长的信息安全问题将会对二维码进一步发展带来影响,针对二维码各种应用方式、当前被攻击的漏洞,对通用QR码的算法设计也应有所区别。
2.1 QR 码加密策略
鉴于通用 QR码在编解码算法方面的弱点,可以在编码过程中加入额外的加密环节,以实现信息安全。移动手机端性能大幅提高,为 QR码信息一次加密,甚至多次加密提供可能,同时,根据应用的实际需求和信息安全的要求,可以选择硬件芯片加密,也可以选择软件加密;可以选择传统数据加密算法,也可以选择对QR码图像进行加密。
加密算法可以根据二维码具体应用的方法来选择,针对信息泄露的的角度,在短时间信息交互时提高信息的保密性,例如票据信息的二维码,可以采用序列密码算法RC4等,提高伪随机生成序列的随机性和便利性,即使攻击者利用 QR码的译码原理和RC4算法的解密原理进行破解,但由于无法确定加密者最终选定的参数值, 因此也无法破解出明文信息[8]。
当二维码信息传递处于网络服务器端和移动客户端时,可以采用公钥密码体制。以市面广为流行的公共产品为例:初始信息为M,网络服务器端产生私钥SK,移动客户端拥有公钥PK,加密产生的信息 C = ESK(M ),将C进行QR码编码给予公共产品或服务,用户使用公钥对扫描得到的CX进行解码,若解码的结果正确则进行服务,确保了通讯过程中的信息安全[9]。
对于整个 QR码信息安全角度来说,信息编解码的实现方式、运算速度、安全性等方面决定了加密算法的选择。由于 QR码应用的场合大多是移动智能端、物联网平台等,系统硬件速度快,软件实现简单,数据传输方式大部分是电信服务商提供的4G网络,传输的是KB级别的数据,当进行客户端登录或者信息验证时,对数据的安全性要求较高,综合上述原因,比较适合 QR码的算法在对称加密算法中有AES,在非对称算法中有ECC等,在特殊场合,增加数据的时效性也是一个较好的办法[10-13]。
图4 引入加密编码过程Fig.4 Adding encryption encoding process
2.2 QR 码解码策略
用户时常会要单方面处理 QR码,并没有产品服务器端提供信息安全的保证。在这种情况下,为保证原始信息在传输过程中不被篡改,可以采用在数据编码(data encoding)时后端加入hash值模块的方法,通过解码后的消息认证码是否匹配来确保信息安全[14]。
表1 常见适用QR码加密算法比较Tab.1 Comparison of common application of QR code encryption algorithm
图5 Hash 值解码过程Fig.5 Hash decoding process
若用户通过浏览器自带软件识别二维码,可以通过浏览器厂商在用户端建立黑白名单或者加载的特征库,对 QR码解码得到的数据信息或者链接进行静态和动态特征检测,在用户扫描恶意二维码后执行恶意程序之前,给出相应的提示信息,防止用户信息泄露或者经济损失的可能。
安全解码在技术面可以将使用的 QR码作为明文,应用图像加密算法等算法,通过建立其与伪明文图像的映射矩阵并将伪明文图像嵌入载体图像进行传输,实现了密钥和算法的密切结合,起到了单方面截获算法或密钥完全破解不出加密信息的作用,表明算法对不法分子具有较大的迷惑性的同时极大地增强了系统的安全性[15]。
2.3 第三方和用户
二维码市场快速发展的同时是标准的混乱和监管的缺失,对应解码策略中在用户端建立特征库,引入互联网端的第三方监管能够更好的拦截 QR码携带的非法数据信息,增强其来源的可靠性。
第三方云平台通过大数据分析产生的 QR码解析数据进行静态特征和动态特征分析,建立黑白名单数据库,为用户建立防火墙。在用户和应用提出申请后,提供解析结果和官方信息,屏蔽非法数据。
在技术层面通过算法更新和第三方认证等加强信息安全的同时,个人用户方面也应当注意,提高二维码使用的防范意识,加强自身信息的保护意识,不盲目扫描不明来源的二维码,在进行电子支付的时候尤其要提高警惕,以免遭受经济损失。
图6 第三方二维码交互Fig.6 Third party two-dimensional code interaction
3 结语
近年来,随着网络购物和电子商务的发展,二维码在电子支付、身份认证、信息交互等领域被广泛使用,给用户带来便利的同时也存在着严重的安全隐患。当前社会上二维码安全问题出现大多数都是由于误扫,随着用户的警惕将大幅减少,但将QR码破解后混入非法数据的方式将成为主流。因此,分析二维码加密问题具有重要意义。本文介绍了QR码的通用结构和编解码的原理,分析了其存在的安全问题,并从编码的算法、解码的安全性及第三方认证角度提出了解决安全隐患的方法。
[1] BAIDU.COM.QR code[EB/OL] [2017-09-03]. http://baike.baidu.com/view/132241.htm.
[2] GB/T18284-2000, 快速响应矩阵码[S]. 北京:中国标准出版社, 2000.
[3] ISO/IEC. ISO/IEC 18004-2015, Information Technology-Automatic Identification and Data Capture Techniques-QR Code 2005 Bar Code Symbology Specification[S]. Switzerland: ISO, 2015.
[4] Pavlidis T, Swartz J, Wang Y P. Information encoding with two-dimensional bar codes[J]. IEEE Computer, 1992, 27(6):18-27.
[5] ZhangMin, ZhenJianli. Recognition Algorithm of QR Code Based on Symbol Characteristic[J]. Computer Engineering,2011, 37(4). (in Chinese)张民, 郑建立. 基于符号特征的QR码识别算法[J]. 计算机工程, 2011, 37(4).
[6] Liu Hongwei, Yan Yan. Recognition and decoding of QR code[J].Computer Engineering and Design, 2005, 26(6). (in Chinese)刘宏伟, 严妍. 快速响应码的识别和解码[J]. 计算机工程与设计, 2005, 26(6).
[7] 腾讯移动安全实验室. 2016年手机安全报告[R]. 2017.
[8] Zhou Wenqian,Ma Yan, etal. Improved RC4 Algorithm Applied in QR Code Information Encryption[J]. Computer Engineering, 2015, 41(8). (in Chinese)周文倩, 马燕等. 应用于QR码信息加密的RC4改进算法[J].计算机工程, 2015, 41(8).
[9] An Jiwan, Xu Kaihong. Design of Encryption Coding of Two-dimensional Code Based on RSA and Key[J]. Forest Engineering, 2014, 30(2): 125-129. (in Chinese)安吉旺, 徐凯宏. 基于RSA和密钥的二维码加密编码的研究[J]. 森林工程, 2014, 30(2): 125-129.
[10] QU Wei-feng, XU Yue, NIU Lei-lei. A Study of an Efficient Method for the Processing of Uneven Illumination QR Code Images[J]. Computer Engineering & Software, 2015, 36(6):47-52. (in Chinese)屈卫锋, 徐越, 牛磊磊, 等. 光照不均QR二维码图像的高效处理方法研究[J]. 软件, 2015, 36(6): 47-52
[11] HAN Liang-liang, YE Ping, SUN Han-xu. A Jacobian Matrix Inversion Method for Redundant Robotic Manipulator Base on QR Decomposition[J]. Computer Engineering & Software,2013, 34(11): 64-66(in Chinese)韩亮亮, 叶平, 孙汉旭. 基于QR分解的冗余度机械臂雅可比矩阵求逆方法[J]. 软件, 2013, 34(11): 64-66
[12] Hu Qi. Application and Research of QR Code in Equipment Management Information System[J]. Computer Engineering& Software, 2014, 35(8): 125-128(in Chinese)胡奇. QR码在装备管理信息系统中的应用研究[J]. 软件,2014, 35(8): 125-128
[13] ZHANG Bo, LIU Jia, WEI Sui. Joint Source and Channel Coding based on Distributed Compressed Sensing[J]. The Journal of New Industrialization, 2011, 1(5): 10-15. (in Chinese)张波, 刘佳, 韦穗. 一种基于分布式压缩传感的信源信道联合编码方法[J]. 新型工业化, 2011, 1(5): 10-15.
[14] Lin Jiahua, Yang Yong, Ren Wei. Attacks in QR Code and Defending Countermeasures[J]. Netinfo Security, 2013(05).(in Chinese)林嘉华, 杨永, 任伟. QR二维码的攻击方法与防御措施[J].信息网络安全, 2013(05)Sun Yeqiang, Wang Xiaohong. Information Encryption Technology with Strong Robustness Based on QR Code and Matrix Mapping[J]. Packaging Engineering, 2017, 38(5). (in Chinese)
[15] 孙业强, 王晓红. 基于QR码和矩阵映射的强鲁棒性信息加密技术[J]. 包装工程, 2017, 38(5).