班绍桓,韩英杰,樊永文,周清雷
(郑州大学 信息工程学院,郑州450001)
在常见的二维条形码(2-dimensional bar code)中,日本Denso公司研制的QR码已经广泛应用于产品追溯[1]、宣传营销、社交、支付、访问控制[2]、授权系统[3]等各个领域,已渗透到国民经济和人们日常生活中.而早期火车票上的明文QR码就曾被不法分子用来窃取旅客身份证等隐私信息,因此如何保证QR码所携带信息的安全就显得非常重要.
对QR码信息加密的研究是一个非常有意义的课题,国内外已有不少专家学者取得了一些研究成果.Conde-Lagoa等[4]提出加密QR码应用于电子票务的新模型,避免出现用户隐私信息泄露问题.刘彦伟等[5]通过口令加密算法对QR码中信息进行加密,增加了口令功能以保护信息安全.张雅奇等[6]用QR码的部分敏感信息所对应哈希值替换原来的信息,利用Hash函数的单向性来保障通信过程中信息不被泄露.Barrera等[7]将QR码作为“容器”,利用光学加密技术对QR码信息进行保护,指出一条以光学加密为手段的QR码信息保护新道路.周庆等[8]首次将Ising物理模型与QR码加解密相结合,保证了QR码的安全保密通讯.
面对技术的不断升级,传统的QR码信息加密方法受到了前所未有的挑战.针对该严峻事实,本文提出一种基于拟态安全防御的QR码信息加密架构.该架构利用多个加解密执行体以及动态调度策略来增加架构整体的随机性与动态性,并且在保证QR码信息安全的同时保留QR码的编码特性和纠错能力.
随着移动互联网的爆发式发展,中国QR码的使用率在全球遥遥领先.目前,世界上90%的QR码个人用户在中国.QR码与普通条形码相比有支持中文字符、存储密度大、数据存储量高、纠错能力强和多角度高速识别的特点[9].
QR码的结构如图1所示,其由功能图形和数据编码区域组成.功能图形包括7部分:空白区、位置探测图形、位置探测图形分隔符、定位图形、校正图形、格式信息和版本信息.数据编码区域包括2部分,数据码字和纠错码字.
图1 QR码结构图Fig.1 QR code structure diagram
QR码的制作流程[9]分为7个步骤:1)数据分析:分析输入的数据并选择合适的编码模式;2)数据编码:按照所选编码模式将数据转为二进制流串;3)纠错编码:根据数据块和纠错等级计算每个数据块的纠错块;4)码字填充:数据块和纠错块填充到数据编码区,必要时加剩余位;5)布置功能图形:将位置探测图形、位置探测图形分隔符、定位图形和校正图形放入QR码的功能图形区域;6)掩模:为编码区域安排深色和浅色模块;7)布置格式和版本信息:根据所选的版本和等级信息,生成二进制流填充到格式与版本信息区域.整个制作流程如图2所示.
图2 QR码制作流程图Fig.2 QR code production flow chart
QR码的解码为编码的逆过程.由于QR码解码算法公开且QR码编码过程中并未对信息进行加密,使得未授权人员亦可使用公开的QR码解码软件随意读取其中信息,因而具有信息泄露隐患.
拟态防御(Mimic Defense,MD)是由邬江兴院士提出的一种具有动态、多样性和随机性等特点的新型主动防御技术[10].该技术的基本原理是动态异构冗余(Dynamic Heterogeneous Redundancy,DHR)结构[11].动态异构冗余结构原理如图3所示,首先,从异构元素池中选择合适的构件元素来组
图3 动态异构冗余结构Fig.3 Dynamic heterogeneous redundancy structure
成不同的异构执行体集;然后,动态调度模块从这些异构执行体中选择出奇数个执行体来处理由输入代理分发的相同输入信息;最后,表决模块对所有处理结果进行表决以获得最终的输出,同时将这些执行体运行时所产生的信息反馈给调度模块,而调度模块根据反馈信息选择新的执行体来替换当前执行体集.其中,如果执行体个数为一且去除表决模块,拟态防御将退化为移动目标防御(Move Target Defense,MTD)[12].
目标防御的静态性和确定性因拟态防御技术的异构执行体集、动态调度等机制而发生改变,从而破坏了攻击对平台、环境的可依赖性.同时拟态防御技术还利用多模裁决机制来面对未知的漏洞威胁.因此,拟态防御技术能够大大降低对目标系统攻击成功的概率.
到目前为止,基于动态异构冗余架构的拟态防御技术已经投入到广泛的应用之中.仝青等[13]设计出一种拟态web服务器;王禛鹏等[14]提出一种基于拟态防御的DNS框架设计;马海龙等[15]将拟态防御思想应用在了路由器上;扈红超等[16]设计出一种拟态网络操作系统.
针对现有QR码信息加密方法的不足,本文以拟态防御技术的核心架构——动态异构冗余结构为模型,并结合相关安全技术构造出一种具有动态、异构和随机等特点的新型QR码信息加密架构.新架构能够有效地提升QR码的安全性.
M-QR码架构由资源池和中心控制器组成.如图4所示,资源池由若干运行不同加解密算法的加密资源池、解密资源池以及将加解密算法一一对应的映射表资源池构成,而资源池中异构冗余的构件又是实现拟态防御动态性和多样性的重要前提.中心控制器由选调器、输入代理和表决器组成.具体地,输入代理下达分发指令,将输入的信息分发给不同的在线执行体;选调器根据系统状态信息动态选取若干执行体作为活跃执行体集;表决器负责对所有活跃执行体的响应结果进行一致性裁决,以确定最后的输出结果,同时将反馈信息返回给选调器并更新系统状态信息.
图4 M-QR码架构逻辑图Fig.4 Logic diagram of M-QR code architecture
M-QR码的生成流程与普通QR码生成流程有所差异,现将其流程描述如下:
1)首先,选调器根据系统当前状态从资源池中选取并初始化n个执行体集,每个执行体集包括一个加密执行体、一个解密执行体和一个映射表执行体.
2)用户向中心控制器输入原始信息.
3)输入代理将用户输入的原始信息复制n份并分发给各个加密执行体.
4)加密执行体对原始信息进行加密处理并根据映射表
将加解密标识符加到处理后的密文当中.
5)把从步骤4)获得的各个加密执行体的密文和状态信息分别传输到相应的解密执行体上.
6)各个解密执行体将密文进行解密处理,并将密文、解密后的信息以及执行体状态信息传输到表决器上.
7)表决器根据裁决算法对解密处理结果进行一致性判决:
(a)若所有解密后的信息全部一致,将根据多模表决算法选择出一个最优的密文作为最后输出并生成相应的M-QR码,同时将反馈信息传输给选调器.
(b)若并非所有解密后的信息全都一致,则认定大多数一致的解密信息作为正确的结果;此时,依旧根据表决算法在正确结果中选择出一个最优的密文作为最后输出并生成相应的M-QR码,同时将反馈信息传输给选调器.
8)选调器根据从表决器传输来的反馈信息和系统状态信息进行新的调度以更新在线执行体集,之后便等待用户的下一次输入.
异构冗余的实现异构性指的是完成相同功能的两个执行体结构有所不同,这种执行体间的差异性能够保证同一攻击不能对两个执行体成功.冗余性即异构执行体的多样化.对于M-QR码架构来说,其异构冗余性可以由两种方式来获得:一种是利用在实际应用中软件、操作系统、算法和硬件的多样性直接获得一定的异构性[13],如表1中的处理器层可以有Intel和AMD,操作系统层又能分为Windows和Linux两大类,又有多种软件和加密算法;另一种是人为异构,例如对于加解密算法之间的映射等不具备多样性的数据,采用标签化、随机化的方式设计出映射表,使其内容具有人为的异构性.
表1 异构元素表
Table 1 Heterogeneous element
异构层异构元素脚本层映射表1、映射表2…加密算法层DES、3DES、AES…软件层Pycharm、VisualStudio、VS Code…操作系统层Windows(Windows7、Windows10…),Linux(Ubuntu、CentOS…)处理器层Intel、AMD…
动态调度的实现动态性是一种主动防御手段,指的是在一定周期内轮换在线工作的执行体.增加在线异构执行体的数量(提高冗余性)能够为动态性提供支撑的同时提升安全性,但过量的执行体势必会增加系统的工程成本.在M-QR码架构中,一方面,在经过一定的时间后,选调器动态地选择一部分正常的异构执行体来替换在线执行体集(奇数个);另一方面,对于根据表决器传输的状态信息判断为异常的在线执行体,选调器会在一轮调度结束后将其从在线执行体集中剔除,并进行线下清洗或者加入到黑名单中,同时选择新的执行体替换该异常执行体.实现动态调度部分的伪代码如下:
Input:SE=(E1,E2,E3,…,En)//资源池中的执行体集
T//调度周期时长
stat_info//执行体状态信息
Output:AE=(A1,A2,A3,…,Am)//新在线执行体
BENGIN:
//无异常执行体且在一个调度周期内不更新
if stat_info is normal and t return //有异常执行体则替换这些异常执行体 if stat_info is abnormal: for abnormal_E in stat_info: //随机选择新的执行体 replace_E=random_choice(SE) //替换掉异常执行体 exchage(abnormal_E,replace_E) //将异常执行体加入黑名单 blacklist(abnormal_E) //进入新调度周期且没有正在运行,替换所有在线执行体 if t>T and stat_info is not running: for 0 to m://选择新的m个执行体 new_AE.append(random_choice(SE)) AE=new_AE//替换所有在线执行体 return AE//返回新的执行体集 END 多模表决的实现表决器是活跃执行体输出内容必须经过的一个模块,该模块对同一轮执行体的输出进行裁决,选出最终的结果,表决的内容越丰富,攻击的难度就越大.在M-QR码架构中,任何一个加密算法执行体都有相对应的解密算法执行体,解密算法执行体向表决器传输对各个密文解密后的内容,对这些内容使用大数表决以排除出错异常执行体的输出.此外,为了尽量提高性能,除了使用大数表决外,还对所有正确输出进行额外的表决,以期从所有正确输出的内容中得到最佳结果.实现多模表决部分的伪代码如下: Input:results=(R1,R2,R3,…,Rm)//所有执行体的返回结果 Output:final_R//最佳返回结果 feedback_info//反馈信息 BEGIN //返回结果的解密信息是否全部一致 same=consistent(results) //全部一致则选出最佳结果并返回 if same is True: final_R=best_choice(results)//选择最佳结果 return final_R else: //大数表决 correct_value=marjority_voting(results) //依据大数表决结果将返回结果分成正确和异常两类 correct_RS,abnormal_RS= split(results,correct_value) //从正确结果中选出最佳结果 final_R=best_choice(correct_RS) //异常结果中返回异常信息 for abnormal_R in abnormal_RS: feedback_info.append(abnormal_R.info) return final_R,feedback_info//返回最终结果和反馈信息 END 最后,M-QR码架构还需要一些假设前提:1)对于一个输入,整个架构必须有一个输出与之对应;2)在异构执行体安全的情况下,对于同一输入,加密异构执行体的输出内容解密后应当相同;3)允许不同的加密算法有不同的运行时间;4)若执行体被不法分子成功攻击,则被攻击的执行体所输出内容的解密信息与正常执行体不一致. 为了验证M-QR码的有效性,本文对其进行了多方面的仿真实验测试.三模冗余为目前常见有效的易实现的架构[13],本节中提到的M-QR码都是由三模冗余的M-QR码架构生成,其中包括三对加解密执行体(DES加解密执行体、3DES加解密执行体、AES加解密执行体)和三个加解密算法映射表. 实验环境为: 1)操作系统:Windows 10; 2)CPU:Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz 2.40 GHz; 3)运行内存:8.00GB; 4)实验工具:PyCharm 2018.1.4; 5)编程语言:Python 3.6.2; 6)使用的第三方库:qrcode(普通QR码生成库),pyzbar(普通QR码识别库); 为测试本文所提出的M-QR码架构的有效性,采用短文本信息在QR码的数字、字母+数字、字母+字符、字母+数字+字符、汉字5种模式下均做了相关实验,利用本文提出的M-QR码架构与普通QR码识别方法进行对比,并记录相应的识别时间.测试数据如下,图5是汉字模式下“郑州大学”信息的QR码图像,其中图5(a)是普通QR码,未经行加密操作,可以使用普通QR码识别软件获取信息;图5(b)为经过本文所提出架构加密后的M-QR码,该QR码只能通过专用的M-QR码识别软件才能正确识读其中信息.表2为详细测试数据. 从表2的数据可以得知:1)专用的M-QR码识别软件可以正确识别所有QR码和M-QR码,而普通的QR码识别软件只能正确识别非M-QR码,对M-QR码的识别正确率为0.由此可以得出M-QR码具有很高的安全性,可以成功抵御二维码软件的未授权识读.2)加密口令由用户设定,简单、灵活.3)对比图5的两个二维码图像本身,两个图像非常相似,说明M-QR码并不会改变原有QR码的图像排列规则,因此M-QR码具有与普通QR码相同的纠错能力. 表2 M-QR码与QR码识别测试 模 式明文内容是否加密口令(密码)识别结果M-QR码加解密软件解码内容时间(s)普通识别解码内容数字123456是abcdef1234560.039928BbWLLUwSP+FC0I7+bFKwnatQ==否无1234560.003953123456字母+数字ZZU2019是abc123ZZU20190.040889Cbu+iFzN43LQpoL1W38cx6oQ==否无ZZU20190.004986ZZU2019字母+字符#zzu.∗?是zzuabc#zzu.∗?0.054821CcskUBs/PMDRPY6UcaQY+fOg==否无#zzu.∗?0.005984#zzu.∗?字母+数字+字符Z17@gs.?$是123abcZ17@gs.?$0.039896BciYEVRqvMgjbzmjCprmTk9A==否无Z17@gs.?$0.004984Z17@gs.?$汉字郑州大学是test郑州大学0.057508Aasbf1dw/xy/ndqjgWFe6EyQ==否无郑州大学0.030918郑州大学 图5 QR码与M-QR码对比Fig.5 Comparison between QR code and M-QR code 配置三种实验,第一种为普通QR码生成方法(记作QR),该方法做对照实验,不对其进行任何加密操作和入侵模拟.第二种为单加密算法QR码生成方法(记作E-QR),其中使用单个加密算法对输入信息进行加密,可看作对文献[5]中提到的QR码信息加密方法的模拟;此外,修改使用的加密算法代码,模拟该系统被成功入侵,修改内容为在生成相应QR码前篡改了所要加密的信息.第三种为M-QR码生成工具(记作M-QR),即修改三个执行体中的一个执行体代码来模拟入侵,同样在被选中的执行体加密时篡改所要加密的信息.通过这三组实验的输出结果来分析M-QR码的入侵容忍能力. 表3 实验对象配置 实验口令加密算法脚本入侵模拟QR无无无无E-QRzzu123DES无DES代码被修改M-QRzzu123DES,3DES,AES异构化处理后的映射表DES代码被修改 实验对象的配置如表3所示,三个实验对象输入相同的明文(字符串“Intrusion Tolerance”);修改E-QR和M-QR中的DES加密算法代码,使对任意输入,该加密算法会篡改要加密的信息,即在原始明文的头和尾分别加上字符串(包含空格)“bsh ”和“ zzu”. 表4 识别测试结果 实验原始明文识别结果QRIntrusion ToleranceIntrusion ToleranceE-QRIntrusion Tolerancebsh Intrusion Tolerance zzuM-QRIntrusion ToleranceIntrusion Tolerance 三组实验生成的二维码图像如图6所示,图6(a)使用普通的QR码识别软件进行识读,图6(b)使用与第二组实验相对应的识别软件进行识读,图6(c)使用M-QR码专用识别软件识读,所得结果如表4所示.从表4可以看出,对于同一被成功入侵的DES加密算法,E-QR实验对象所生成QR码的最终识别结果受到影响,而由M-QR实验对象所生成的M-QR码的最终识别结果未受影响.因此,M-QR码架构具有一定的入侵容忍能力. 图6 入侵容忍实验结果Fig.6 Resultsof Intrusion tolerance test QR码所携带信息为原始明文信息,对应的生成架构不存在加密模块,因此本文不对其进行抗攻击性分析.参考文献[11],本文也使用基于离散模型模拟M-QR码生成架构的抗攻击性.攻击者的攻击能力会随着时间的推移而变强,我们用符号αi表示第i个周期内攻击者的攻击能力.参考文献[11],我们将系统被攻击者攻击成功的概率随时间变化关系作为攻击者的攻击能力,即: (1) 其中Ti是第i个周期的结束时间. 图7 E-QR码架构和M-QR码架构抗攻击性对比图Fig.7 Anti-aggression comparison between architectureE-QR code and M-QR code 同时,假设攻击者对执行体1、执行体2、执行体3攻击成功的概率分别为p1、p2和p3。所以,在第i个周期内,E-QR码生成架构被攻击成功的概率(使用与执行体1相同的加密算法)可以表示为: Pi=αip1,i={1,2,…,n} (2) M-QR码架构被攻击成功的概率可以表示为: (3) 令p1=0.6,p2=0.7,p3=0.8,λ=0.5。如图7所示,随着时间的推移,M-QR码的安全性一直高于传统单一加密QR码。 本文对生成QR码、E-QR码和M-QR码的消耗时间进行理论对比分析,涉及到的符号如表5所示. 表5 符号定义 符号定义符号含义TprocessQR码生成过程所耗时间Tencrypt加密处理过程所耗时间Tmax_encrypt多个加密处理过程中最长耗时Tsa选调器处理耗时(调度执行体)Tvoter表决器处理耗时 普通QR码生成所耗时间为: TQR=Tprocess (4) 单加密QR码生成所耗时间为: TE-QR=Tprocess+Tencrypt (5) M-QR码生成所耗时间为: TM-QR=Tprocess+Tmax_encrypt+Tsa+Tvoter (6) 所以,QR码生成相比,M-QR码的生成过程额外增加耗时为: Taddition_1=Tmax_encrypt+Tsa+Tvoter (7) 与E-QR码生成相比,M-QR码的生成过程额外增加耗时为: Taddition_2≈Tsa+Tvoter (8) 为测试实际生成过程中增加的额外耗时,对在第4.3节中提到的三种实验对象进行以下实验:分别输入长度为4、8、16字节的明文信息,记录每个实验对象生成QR码所花费的时间,每组实验对象运行10次求平均耗时.从图8中可看出: 图8 三种QR码生成耗时对比图Fig.8 Time-consuming comparison between threekinds of QR code 1)对三种实验对象而言,每种输入规模下M-QR码的生成耗时都是最长,E-QR码的生成耗时次之,QR码的生成耗时最短,这也符合我们的理论分析;2)随着输入字符串长度的增加,三种实验对象所生成QR码的耗时也跟着增加;3)随着输入字符串长度的增加,M-QR码生成耗时与普通QR码生成耗时的差值Taddition_2也跟着增加,这是多模冗余结构附带的必然代价. 对于本次实验,M-QR码在三种输入长度下的平均额外增加耗时为分别为Taddition_1=0.07166、Taddition_2=0.01152(单位:秒).此外,由表2可知M-QR码的识别比普通QR码平均延时了0.182217秒左右.即M-QR的生成延时和识别延时都很低,因此我们认为M-QR码可以达到实际应用的标准. 图9 不同输入规模下平均生成耗时Fig.9 Average time consumption under different input scales 从上述实验得知M-QR码的生成耗时随着输入字符串长度的增加而增加,为进一步判断M-QR码生成时间与其所要加密信息规模的关系,设置实验如下:配置6组实验对象,每组实验对象中的原始明文字符长度分别为2、4、8、16、32、64,每组实验运行10次并记录其花费时间.每组的平均耗时如图9所示,其中横坐标为明文长度(单位为字节),纵坐标为运行时间(单位为秒).从图中可以看出M-QR码生成耗时的增长趋势随着输入规模(明文长度)的增长逐渐放缓,但总体的生成耗时依然呈增加趋势.参考文献[10],可以采用只对关键信息进行判决或者以消息队列为载体,按照FIFO规则进行判决等策略来提升时间性能. 本文针对QR码存在的缺陷,提出了一种基于拟态防御思想的新型QR码信息加密架构,该架构具有动态性、随机性和不确定性,从而提高了M-QR码架构的入侵容忍能力和抗攻击性.通过实验证明,普通QR码识别软件对本架构生成M-QR码的正确识别率为0%,必须使用专用识别软件并输入正确口令才能获取M-QR码的真正信息,显著提升了QR码的安全性,具有很强的实用性. M-QR码生成的时间开销在面对大规模输入时会变大是新架构的不足之处,因此,可以将优化调度算法和裁决策略作为接下来的研究重点,以期提升新架构的时间性能.4 仿真实验
4.1 M-QR码加解密性能
Table 2 Recognition test of M-QR code and QR code4.2 入侵容忍能力
Table 3 Configuration of the devices under test
Table 4 Testingresultsofrecognition4.3 抗攻击性
4.4 时间性能
Table 5 Symbol definition5 结 论