一种基于汉明码的QR码安全认证方法及系统与流程

文档序号:18352352发布日期:2019-08-06 22:36阅读:418来源:国知局
一种基于汉明码的QR码安全认证方法及系统与流程

本发明涉及安全认证领域,具体涉及一种基于汉明码的qr码安全认证方法及系统。



背景技术:

随着移动互联网时代的到来,以“互联网+”为驱动的信息化产业发展取得了重大的突破。作为互联网时代最具标志性的产物,qr码凭借其线上-线下信息对接的优势打破了原产业营销模式约束,促进了传统产业结构向“互联网+”产业的变革。如今,qr码的用途越来越广泛。在电子商务领域,扫码支付已经逐步取代了传统的现金支付模式,这种新型的支付方式正在改变着人们的消费习惯;在移动社交领域,越来越多的社交软件像微信、qq等都通过qr码扫码来获得用户信息和分享资源;在运输物流领域,交通运输部门通过qr码来对货物的运输进行管理,邮政部门通过qr码对邮政包裹或物流信息进行实时追踪。

qr码为我们的生活带来便利的同时,随之而来的是一系列安全隐患。近年来有关qr码的诈骗事件层出不穷。主要原因是qr码采用国际通用的编解码技术标准,制作简单,且qr码由杂乱无章的黑白模块组成,无法用人眼区分,从外观上并不能判断其安全性。而公众对于qr码普遍缺乏安全防范意识,习惯于随手扫一扫来获得信息。这就更加方便了不法分子对qr码进行各种非法操作。攻击者通过篡改qr码诱导用户打开钓鱼链接,导致用户的个人信息、银行账号、密码的泄露。

公开号为cn103516404a的发明专利公开了一种数据传输方法,包括:发送端设备将待传输的数据进行编码,生成n帧适于显示为图形的第一编码数据,每一帧第一编码数据中包含其相应的流水号,n为正整数;在所述发送端设备连续显示每一帧第一编码数据;接收端设备连续采集所述发送端设备显示的第一编码数据,并从采集到的每一帧第一编码数据中提取相应的流水号;若提取的所有流水号是连续的,则由所述接收端设备对采集到的第一编码数据进行解码,以得到所述数据。若提取的所有流水号是非连续,则由所述接收端设备对采集到的第一编码数据进行校验纠错。所述校验纠错包括奇偶校验位纠错、汉明码校验纠错、crc校验纠错中的至少一种。虽然其提及了采用汉明码对编码数据进行校验纠错,但是其是基于流水号是否连续判断编码数据是否正确,即是结合多个编码数据判断编码数据是否丢失,而不能防止单个qr码的非法操作。

故,针对现有技术的缺陷,如何实现qr码的安全认证是本领域亟待解决的问题。



技术实现要素:

本发明的目的是针对现有技术的缺陷,提供了一种基于汉明码的qr码认证方法及系统,在保证qr码解码稳定性的情况下,使qr码具备认证功能。该方法在认证信息嵌入时,通过修改qr码的一个模块,达到3个比特信息的嵌入,大幅度增加了认证信息的负载量。同时,认证信息在qr码的生成过程中嵌入,嵌入位置通过密钥随机生成,且在信息嵌入完成后,对qr码进行掩码操作,防止由于验证信息的嵌入而使qr码中黑白模块分配不均匀,也进一步加强了认证信息的隐蔽性。

为了实现以上目的,本发明采用以下技术方案:

一种基于汉明码的qr码认证方法,包括步骤:

步骤s1、将qr码信息进行编码以生成初步qr码;

步骤s2、将所述初步qr码中的数据模块进行分组;

步骤s3、将(7,4)汉明纠错机制将3比特认证信息嵌入到所述初步qr码中得到最终的模块矩阵;

步骤s4、对所述终的模块矩阵进行掩模操作;

步骤s5、对qr码的信息进行认证。

进一步的,所述步骤s1具体为:

步骤s1.1、数据分析:对qr码信息进行分析,确定相应的编码字符类型,选择合适的错误检测和纠正级别;

步骤s1.2、数据编码:将数据字符转换为位流;

步骤s1.3、纠错编码:根据qr码的版本和纠错等级确定qr码所使用的rs码制;

步骤s1.4、码字填充:在规格确定的条件下,将上面产生的序列按次序放入分块中。

进一步的,所述步骤s3具体为:

步骤s3.1、通过密钥key随机选择数据模块组;

步骤s3.2、划分认证信息;

步骤s3.3、嵌入认证信息嵌入;

步骤s3.4、重复嵌入认证信息,直到最大纠错容量或者是待选区中没有数据组时停止信息嵌入。

进一步的,所述步骤s5具体为:

步骤s5.1、去除掩码:扫描qr码去掉掩码信息,得到模块矩阵;

步骤s5.2、分组提取认证信息;

步骤s5.3、合成认证信息:重复嵌入认证信息,直到最大纠错容量或者是待选区中没有数据组时信息提取完毕,将提取的信息拼接合成最终的认证信息;通过检测提取的认证信息是否正确判断qr码是否存在篡改和替换。

进一步的,所述步骤s3.3具体为:

计算校验子向量其中,sx为3比特信息,dx为随机选择数据模块组中,h为奇偶校验矩阵;

将所述校验子向量与奇偶校验矩阵h进行比对,当与h的第i列信息相同,则通过修改dx中的第i位信息将sx嵌入到dx中。

进一步的,所述步骤s5.2具体为:

将去除掩码得到的模块矩阵中的模块以7个为一组划分为多个组存放在待选区中,使用密钥key在待选区中选择一个模块组,记为dy;在dy中提取3比特的验证信息sy=(s1,s2,s3),计算方法如下:

sy=(h×dyt)t

相应的,还提供一种基于汉明码的qr码认证系统,包括:

编码模块,用于将qr码信息进行编码以生成初步qr码;

分组模块,用于将所述初步qr码中的数据模块进行分组;

嵌入模块,用于将认证信息嵌入到所述初步qr码中得到最终的模块矩阵;

掩模模块,用于对所述终的模块矩阵进行掩模操作;

认证模块,用于对qr码的信息进行认证。

进一步的,所述所述编码模块包括:

数据分析模块,用于对qr码信息进行分析,确定相应的编码字符类型,选择合适的错误检测和纠正级别;

数据编码模块,用于将数据字符转换为位流;

纠错编码模块,用于根据qr码的版本和纠错等级确定qr码所使用的rs码制;

码字填充模块,用于在规格确定的条件下,将上面产生的序列按次序放入分块中。

进一步的,所述嵌入模块包括:

选择模块,用于随机选择数据模块组;

划分模块,用于划分认证信息;

认证信息嵌入模块,用于嵌入认证信息嵌入;

循环处理模块,用于重复嵌入认证信息,直到最大纠错容量或者是待选区中没有数据组时停止信息嵌入。

进一步的,所述认证模块包括:

去除掩码模块,用于扫描qr码去掉掩码信息,得到模块矩阵;

认证信息提取模块,用于分组提取认证信息;

认证信息合成模块,用于重复嵌入认证信息,直到最大纠错容量或者是待选区中没有数据组时信息提取完毕,将提取的信息拼接合成最终的认证信息,通过检测提取的认证信息是否正确判断qr码是否存在篡改和替换。

本发明的有益效果为:

(1)将初步qr码的数据模块进行分组,通过修改一个模块进行3比特认证信息的嵌入。在qr码纠错能力固定的情况下,大大提高了认证信息的嵌入量。

(2)使用密钥随机选择认证信息的嵌入位置,并在认证信息嵌入完成之后添加掩码,使黑白模块在qr码中均匀分布。进一步增加了认证信息的隐蔽性。

附图说明

图1是qr码安全认证方法流程图;

图2是认证信息嵌入过程流程图;

图3是实验结果示意图;

图4是认证信息提取过程流程图;

图5是qr码安全认证系统结构图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。

实施例一

如图1所示,本实施例提出了一种基于汉明码的qr码认证方法,包括:

步骤s1、将qr码信息进行编码以生成初步qr码;

本发明中,认证信息在初步qr码中嵌入。因此,在潜入认证信息前,需要生成初步qr码,具体包括:

步骤s1.1、数据分析:对qr码信息进行分析,确定相应的编码字符类型,选择合适的错误检测和纠正级别;

具体地,qr码设有1到40的不同版本(种类),每个版本都具备固有的码元结构(码元数)。码元是指构成qr码的方形黑白点。“码元结构”是指二维码中的码元数。从版本1(21码元×21码元)开始,在纵向和横向各自以4码元为单位递增,一直到版本40(177码元×177码元)。

qr码具有“纠错功能”。即使编码变脏或破损,也可自动恢复数据。这一“纠错能力”具备4个级别,用户可根据使用环境选择相应的级别。调高级别,纠错能力也相应提高,但由于数据量会随之增加,编码尺寸也也会变大。qr码的各个版本结合数据量、字符类型和纠错级别,均设有相对应的最多输入字符数。也就是说,如果增加数据量,则需要使用更多的码元来组成qr码,qr码就会变得更大。在规格一定的条件下,纠错等级越高其真实数据的容量越小。

例如,需要输入的数据为100位的数字时,选定步骤为:假设要输入的数据种类为“数字”;从“l”“m”“q”“h”中选择纠错级别;先从数字列找出数字为100以上且接近100的,其次找出纠错级别“m”,两者交叉的部分就是最佳版本。

步骤s1.2、数据编码:将数据字符转换为位流;

具体地,每8位一个码字,整体构成一个数据的码字序列。当需要进行模式转换时,在新的模式段开始前增加模式指示符完成模式转换。在数据序列后面加入终止符。将产生的位流分为每8比特一个码字,当不足8比特时,用填充码字补充。

步骤s1.3、纠错编码:根据qr码的版本和纠错等级确定qr码所使用的rs码制;

具体地,数据码字按规则分块,根据纠错等级和分块的码字,产生纠错码字,并把纠错码字加入到数据码字序列后面,成为一个新的序列。

在二维码规格和纠错等级确定的情况下,其实它所能容纳的码字总数和纠错码字数也就确定了,比如:版本10,纠错等级时h时,总共能容纳346个码字,其中224个纠错码字。

步骤s1.4、码字填充:在规格确定的条件下,将上面产生的序列按次序放入分块中。

具体地,按规定把数据分块,然后对每一块进行计算,得出相应的纠错码字区块,把纠错码字区块按顺序构成一个序列,添加到原先的数据码字序列后面。

步骤s2、将所述初步qr码中的数据模块进行分组;

本发明中,对数据模块进行分组是为了实现认证信息的嵌入。本申请不对汉明码进行限定。为了更好地说明本申请的实施方案,本实施例采用(7,4)汉明码进行说明。

将模块以7个为一组划分为多个组放入备选区中,并对这些组进行编号,记di为第i组数据信息,di=(d1d2d3d4d5d6d7)。每一组中,白色模块对应信息0,黑色模块对应信息1。

步骤s3、将认证信息嵌入到所述初步qr码中得到最终的模块矩阵;

如图2所述,具体步骤如下:

步骤s3.1、随机选择数据模块组;

具体地,本发明通过密钥key在备选区中的数据模块组中随机选择一个数据模块组,选择的模块组记为dx。

步骤s3.2、划分认证信息;

采用(7,4)汉明码时,将认证信息m以3比特一组进行划分m={s1,s2...sn},待嵌入的3比特信息记为sx=(s1,s2,s3)。

步骤s3.3、嵌入认证信息嵌入

具体地,根据(7,4)汉明纠错机制将3比特信息嵌入到dx中。

例如sx=(0,1,0),dx=(0,1,1,1,0,1,0)。h为奇偶校验矩阵,如下所示:

sx=(010),dx=(0111010),

计算得到校验子向量z=(001);计算如下:

与奇偶校验矩阵h进行比对,发现与h的第1列信息相同,说明通过修改dx中的第1位信息即修改d1可以将sx嵌入到dx中,修改后dx=(1111010)。

认证信息嵌入时,对qr码模块的修改量不能超过qr码的最大纠错容量,否则,qr码将不能继续解码。记tc为qr码的最大纠错容量。更改模块矩阵t中相应的模块值,更改完成后将dx从待选区域中移除。并更新tc=tc-1。

步骤s3.4、重复嵌入认证信息,直到tc=0或者是待选区中没有数据组时停止信息嵌入。得到最终的模块矩阵t'。

步骤s4、对所述终的模块矩阵进行掩模操作;

具体地,在t'构造完成后,通过掩码对整个矩阵进行掩模操作,使qr码图像中白色模块和黑色模块以最优的比例分布。

经过上述操作后,可以生成带有认证信息的qr码,如图3所示。qr码版本为5-l。qr码信息p为“qrcode”,验证信息m为“qrcodesteganographymechanism...”。如图3(a)所示,t还未添加掩码,不能直接扫码。然后,将认证信息嵌入到t中得到最终的模块矩阵t',如图3(b)所示,同样t'也不能直接扫码。最后,添加掩码,生成最终带认证信息的qr码,如图3(c)所示。可以直接扫码得到qr码信息p。认证信息m的提取需要获得密钥key,并通过特定的解码软件解码获得。

步骤s5、对qr码的信息进行认证。

在对qr码进行安全认证时,通过扫码获取相应的qr码信息,并基于认证码对qr码的信息进行认证。具体步骤如图4所示。

步骤s5.1、去除掩码:扫描qr码去掉掩码信息,得到模块矩阵;

步骤s5.2、分组提取认证信息;

具体地,将去除掩码得到的模块矩阵t'中的模块以7个为一组划分为多个组存放在待选区中。使用密钥key在待选区中选择一个模块组,记为dy。在dy中提取3比特的验证信息sy=(s1,s2,s3),如dy=(1111010),计算得到sy=(010),sy的计算方法如下:

嵌入完成后将dy从待选区域中移除。

步骤s5.3、合成认证信息:重复嵌入认证信息,直到tc=0或者是待选区中没有数据组时信息提取完毕,将提取的信息拼接合成最终的认证信息m'={s1,s2...sn}。通过检测提取的认证信息是否正确判断qr码是否存在篡改和替换。

本发明中,认证信息的最大嵌入容量cs为达到qr码最大纠错容量tc时,可以嵌入的信息量。在计算认证信息的最大嵌入容量时,将t中的数据模块以每7个为一组放入待选区中,qr码纠错级别不同,数据负载sc(即:t中的数据模块数量)也不同。在信息嵌入的过程中,当有模块信息发生改变,cs=cs-1。当cs=0或者是待选区中没有数据对时停止信息嵌入,此时已嵌入的信息容量就是本章算法在该qr码版本下的信息最大嵌入容量cs。本发明中,认证信息的最大嵌入容量由qr码的纠错容量和数据负载共同决定。

实施例二

如图5所示,本实施例提出了一种基于汉明码的qr码认证系统,包括:

编码模块,用于将qr码信息进行编码以生成初步qr码;

分组模块,用于将所述初步qr码中的数据模块进行分组;

嵌入模块,用于将认证信息嵌入到所述初步qr码中得到最终的模块矩阵;

掩模模块,用于对所述终的模块矩阵进行掩模操作;

认证模块,用于对qr码的信息进行认证。

本发明中,认证信息在初步qr码中嵌入。因此,在潜入认证信息前,需要生成初步qr码,编码模块具体包括:

数据分析模块,用于对qr码信息进行分析,确定相应的编码字符类型,选择合适的错误检测和纠正级别;

数据编码模块,用于将数据字符转换为位流;

纠错编码模块,用于根据qr码的版本和纠错等级确定qr码所使用的rs码制;

码字填充模块,用于在规格确定的条件下,将上面产生的序列按次序放入分块中。

嵌入模块具体实现包括:

选择模块,用于随机选择数据模块组;

划分模块,用于划分认证信息;

认证信息嵌入模块,用于嵌入认证信息嵌入;

循环处理模块,用于重复嵌入认证信息,直到最大纠错容量或者是待选区中没有数据组时停止信息嵌入。

所述认证模块具体包括:

去除掩码模块,用于扫描qr码去掉掩码信息,得到模块矩阵;

认证信息提取模块,用于分组提取认证信息;

认证信息合成模块,用于重复嵌入认证信息,直到最大纠错容量或者是待选区中没有数据组时信息提取完毕,将提取的信息拼接合成最终的认证信息,通过检测提取的认证信息是否正确判断qr码是否存在篡改和替换。

值得注意的是,本实施例各模块的实现与实施例一相同,在此不再赘述。

本发明在保证qr码解码稳定性的情况下,使qr码具备认证功能。该方法在认证信息嵌入时,通过修改qr码的一个模块,达到3个比特信息的嵌入,大幅度增加了认证信息的负载量。同时,认证信息在qr码的生成过程中嵌入,嵌入位置通过密钥随机生成,且在信息嵌入完成后,对qr码进行掩码操作,防止由于验证信息的嵌入而使qr码中黑白模块分配不均匀,也进一步加强了认证信息的隐蔽性。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1