一种基于CBS签名机制的二维码认证系统及方法转让专利

申请号 : CN201410509798.2

文献号 : CN104320253B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 高天寒王权琦秦诗月

申请人 : 东北大学

摘要 :

本发明提供一种基于CBS签名机制的二维码认证系统及方法,该系统包括信任中心、多个二维码生成端、多个二维码验证端和安全的物理存储介质USBKey;方法包括:信任中心生成公私钥和公共参数并进行新商户身份注册;商户访问可信二维码生成端时,若未持有签名密钥则执行签名密钥生成操作并存储签名密钥,若已经持有签名密钥则对商户是否真正持有签名密钥进行判断;生成二维码;扫描二维码并验证。本发明是应用在移动互联网领域中的二维码中,将先进的CBS签名机制运用于二维码上,从而达到验证二维码合法性的目的,本发明有效保证了二维码内数据的完整性和不可抵赖性,能够抵御恶意篡改攻击和证书截取攻击等攻击手段。

权利要求 :

1.一种基于CBS签名机制的二维码认证系统,CBS的英文全称是Certificate-based Sigature,其特征在于:包括信任中心、多个二维码生成端、多个二维码验证端和安全的物理存储介质USBKey;

所述信任中心用于生成公私钥和公共参数并进行新商户身份注册,信任中心对身份信息中合法的新商户进行添加;

所述二维码生成端采用线程池支持多商户并行访问,商户访问可信二维码生成端时,对未持有签名密钥的商户利用CBS签名算法生成签名密钥并存储至USBKey;对已经持有签名密钥的商户根据该商户输入的数据消息确定要编码字符类型、指定所需的错误检测和纠错级别,并利用从USBKey读取的签名密钥对商户输入的数据消息进行签名产生签名消息,进而生成二维码,该二维码的数据流包括数据消息、签名消息、商户公钥、商户身份ID;

所述二维码验证端用于扫描二维码并对二维码进行验证:若二维码内含有签名消息则将二维码的数据流进行Base64解码,从而得到byte数组,根据该数组的前4个数值确定二维码内数据消息的长度、签名消息的长度、商户公钥的长度、商户身份ID的长度,验证二维码的正确性;

所述物理存储介质USBKey用于存储二维码生成端生成的签名密钥。

2.采用权利要求1所述的基于CBS签名机制的二维码认证系统的二维码认证方法,其特征在于:包括以下步骤:步骤1:信任中心生成公私钥和公共参数并进行新商户身份注册,信任中心对身份信息中合法的新商户进行添加;

信任中心首先选取两个阶为q的群G1,G2和一个双线性对e:G1×G1→G2;之后选择一个生成元P∈G1和一个随机密钥 然后计算信任中心公钥PKC=sCP,另外选择两个密钥hash函数H1:{0,1}*→G1和 生成信任中心公共参数为(G1,G2,e,q,P,PKC,H1,H2);

身份信息包括自身的公钥PKA=sAP和身份ID,SA是商户的私钥;

步骤2:二维码生成端采用线程池支持多商户并行访问,商户访问可信二维码生成端时,若该商户为未持有签名密钥的商户,则执行步骤3,若该商户为已经持有签名密钥的商户,则执行步骤5;

步骤3:利用CBS签名算法执行签名密钥生成操作,商户生成签名密钥后向物理存储介质USBKey中存储签名密钥,并执行步骤4;

步骤3.1:向信任中心发起证书申请,商户发送自己的身份信息给信任中心,信任中心对审核通过的商户颁发证书;

步骤3.2:商户在得到由信任中心颁发的证书后,利用该证书和商户自身的公私钥对(sA,PKA)进行运算得到商户的签名密钥SA=sCPA+sAPA=CertA+sAPA,其中,PA=H1(PKC||PKA||IDA)∈G1,IDA为商户的身份ID;

步骤4:二维码生成端利用物理存储介质USBKey内存储消息对商户是否已经持有签名密钥进行判断;

步骤4.1:判断物理存储介质USBKey内是否为空,若是,则执行步骤3,重新生成签名密钥;否则执行步骤4.2;

步骤4.2:判断物理存储介质USBKey中存储的消息的编码格式是否与签名密钥的格式一致,若是,则执行步骤4.3;否则执行步骤3;

步骤4.3:物理存储介质USBKey中的消息长度若大于设定阈值,则判定商户已经持有签名密钥,则执行步骤5,否则执行步骤3;

步骤5:二维码生成端根据商户输入的数据消息确定要编码字符类型、指定所需的错误检测和纠错级别;如果商户输入的数据消息没有指定的纠错级别,则自动选择与之匹配的纠错级别;

步骤6:利用从物理存储介质USBKey读取的商户的签名密钥对商户输入的数据消息进行签名,产生签名消息signature,签名消息signature内包含U和V,其中U=rPA,r为商户随机选取的数,V=(r+h)SA=(r+h)(sc+sA)PA,h=H2(m,U),m为数据消息;

步骤7:生成二维码,该二维码的数据流包括数据消息m、签名消息signature、商户公钥PKA、商户身份ID;

步骤8:二维码验证端扫描二维码,将二维码转换成包含数据消息m、签名消息signature、商户公钥PKA、商户身份ID的数据流;

步骤9:对二维码进行验证:判断二维码内是否含有签名消息,若含有签名消息,则执行步骤10,否则,二维码验证失败,结束二维码认证;

步骤10:将二维码的数据流进行Base64解码,从而得到byte数组;

步骤11:根据byte数组的前4个数值确定二维码内数据消息m的长度、签名消息signature的长度、商户公钥PK4的长度、商户身份ID的长度,根据各长度值提取数据消息m、签名消息signature、商户公钥PKA、商户身份ID;

步骤12:检验e(PKC,U+hPA)e(PKA,U+hPA)=e(P,V)是否成立,其中的U和V组成签名消息,h包含数据消息m,PA包含身份信息,若成立,则验证成功,否则验证失败。

说明书 :

一种基于CBS签名机制的二维码认证系统及方法

技术领域

[0001] 本发明属于网络安全技术领域,特别涉及一种基于CBS签名机制的二维码认证系统及方法。

背景技术

[0002] 二维码是将手机需要访问、使用的信息编码到二维码中,利用手机的摄像头识读。手机二维码可以印刷在报纸、杂志、名片等多种载体上,用户通过扫描二维码或者输入二维码下面的号码、关键字即可实现快速浏览网页、下载图文、音乐、视频、获取优惠券、了解商品优惠信息,而省去了在手机上输入URL的过程,实现一键上网。随着二维码技术的不断普及和发展,二维码的安全性问题也越发受到人们的关注,二维码本身不会含有病毒、木马和恶意软件,而是其中含有的信息指向了未知安全性的软件或链接。二维码认证技术是解决二维码安全问题的有效技术手段,将公钥体制或签名体制与二维码编码技术相结合,使二维码所载信息在虚拟网络空间或其他物理空间传输时不易被篡改,提高二维码的安全性。
[0003] 近年来,学者们针对二维码认证问题展开了一系列的研究,旨在实现安全、高效的二维码认证机制。文献“非对称加密二维码防伪系统的设计”提出了一种将RSA非对称加密结合二维码的编码和手机解码原理的认证方法,该方法通过将公钥内置于APP中,只要安装有该APP的手机即可对二维码进行验证,解决了二维码的伪造问题,但是该方法选用的RSA加密机制运算速度较慢,为确保其安全性,算法选用的大数n至少是512位以上,大数的运算导致了认证效率降低。文献“基于PKI的二维条码电子消费券及其系统设计”将PKI技术用于二维码的生成和认证过程,该手段主要是将原始的消息利用基于PKI的公钥技术进行签名和加密后产生二维条码,验证是对生成过程的逆操作,保障了数据的安全性和消息的来源可靠。但是该手段需要大量的基础设施来维持运作,并且存在证书管理复杂等问题。
[0004] 可见,上述的认证方案之中,解决二维码认证问题多采用的是传统密码学的一些经典方案,这些方案虽然可以解决实体认证问题,但是在实际的应用过程中却存在着效率低下、运营维护成本高的特点,不利于现实环境中的大范围推广。

发明内容

[0005] 针对现有技术存在的不足,本发明提供一种基于CBS签名机制的二维码认证系统及方法,CBS的英文全称是Certificate-based Sigature。
[0006] 本发明的技术方案是:
[0007] 一种基于CBS签名机制的二维码认证系统,包括信任中心、多个二维码生成端、多个二维码验证端和安全的物理存储介质USBKey;
[0008] 所述信任中心用于生成公私钥和公共参数并进行新商户身份注册,信任中心对身份信息中合法的新商户进行添加;
[0009] 所述二维码生成端采用线程池支持多商户并行访问,商户访问可信二维码生成端时,对未持有签名密钥的商户利用CBS签名算法生成签名密钥并存储至USBKey;对已经持有签名密钥的商户根据该商户输入的数据消息确定要编码字符类型、指定所需的错误检测和纠错级别,并利用从USBKey读取的签名密钥对商户输入的数据消息进行签名产生签名消息,进而生成二维码,该二维码的数据流包括数据消息、签名消息、商户公钥、商户身份ID;
[0010] 所述二维码验证端用于扫描二维码并对二维码进行验证:若二维码内含有签名消息则将二维码的数据流进行Base64解码,从而得到byte数组,根据该数组的前4个数值确定二维码内数据消息的长度、签名消息的长度、商户公钥的长度、商户身份ID的长度,验证定二维码的正确性;
[0011] 所述物理存储介质USBKey用于存储二维码生成端生成的签名密钥。
[0012] 采用所述的基于CBS签名机制的二维码认证系统的二维码认证方法,包括以下步骤:
[0013] 步骤1:信任中心生成公私钥和公共参数并进行新商户身份注册,信任中心对身份信息中合法的新商户进行添加;
[0014] 信任中心首先选取两个阶为q的群G1,G2和一个双线性对e:G1×G1→G2。之后选择一个生成元P∈G1和一个随机密钥 然后计算信任中心公钥PKC=sCP,另外选择两个密钥hash函数H1:{0,1}*→G1和 生成信任中心公共参数为(G1,G2,e,q,P,PKC,H1,H2);
[0015] 身份信息包括自身的公钥PKA=sAP和身份ID,SA是商户的私钥;
[0016] 步骤2:二维码生成端采用线程池支持多商户并行访问,商户访问可信二维码生成端时,若该商户为未持有签名密钥的商户,则执行步骤3,若该商户为已经持有签名密钥的商户,则执行步骤5;
[0017] 步骤3:利用CBS签名算法执行签名密钥生成操作,商户生成签名密钥后向物理存储介质USBKey中存储签名密钥,并执行步骤4;
[0018] 步骤3.1:向信任中心发起证书申请,商户发送自己的身份信息给信任中心,信任中心对审核通过的商户颁发证书;
[0019] 步骤3.2:商户在得到由信任中心颁发的证书后,利用该证书和商户自身的公私钥对(sA,PKA)进行运算得到商户的签名密钥SA=sCPA+sAPA=CertA+sAPA,其中,PA=H1(PKC||PKA||IDA)∈G1,IDA为商户的身份ID;
[0020] 步骤4:二维码生成端利用物理存储介质USBKey内存储消息对商户是否已经持有签名密钥进行判断;
[0021] 步骤4.1:判断物理存储介质USBKey内是否为空,若是,则执行步骤3,重新生成签名密钥;否则执行步骤4.2;
[0022] 步骤4.2:判断物理存储介质USBKey中存储的消息的编码格式是否与签名密钥的格式一致,若是,则执行步骤4.3;否则执行步骤3;
[0023] 步骤4.3:物理存储介质USBKey中的消息长度若大于设定阈值,则判定商户已经持有签名密钥,则执行步骤5,否则执行步骤3;
[0024] 步骤5:二维码生成端根据商户输入的数据消息确定要编码字符类型、指定所需的错误检测和纠错级别;如果商户输入的数据消息没有指定的纠错级别,则自动选择与之匹配的纠错级别;
[0025] 步骤6:利用从物理存储介质USBKey读取的商户的签名密钥对商户输入的数据消息进行签名,产生签名消息signature,签名消息signature内包含U和V,其中U=rPA,r为商户随机选取的数,V=(r+h)SA=(r+h)(sC+sA)PA,h=H2(m,U),m为数据消息;
[0026] 步骤7:生成二维码,该二维码的数据流包括数据消息m、签名消息signature、商户公钥PKA、商户身份ID;
[0027] 步骤8:二维码验证端扫描二维码,将二维码转换成包含数据消息m、签名消息signature、商户公钥PKA、商户身份ID的数据流;
[0028] 步骤9:对二维码进行验证:判断二维码内是否含有签名消息,若含有签名消息,则执行步骤10,否则,二维码验证失败,结束二维码认证;
[0029] 步骤10:将二维码的数据流进行Base64解码,从而得到byte数组;
[0030] 步骤11:根据byte数组的前4个数值确定二维码内数据消息m的长度、签名消息signature的长度、商户公钥PKA的长度、商户身份ID的长度,根据各长度值提取数据消息m、签名消息signature、商户公钥PKA、商户身份ID;
[0031] 步骤12:检验e(PKC,U+hPA)e(PKA,U+hPA)=e(P,V)是否成立,其中的U和V组成签名消息,h包含数据消息m,PA包含身份信息,若成立,则验证成功,否则验证失败。
[0032] 有益效果:
[0033] 本发明是应用在移动互联网领域中的二维码中,将先进的CBS签名机制运用于二维码上,从而达到验证二维码合法性的目的,本发明有效保证了二维码内数据的完整性和不可抵赖性,能够抵御恶意篡改攻击和证书截取攻击等攻击手段。

附图说明

[0034] 图1为本发明具体实施方式的基于CBS签名机制的二维码认证系统架构图;
[0035] 图2为本发明具体实施方式的实体之间通信过程的示意图;
[0036] 图3为本发明具体实施方式的证书申请过程时序图;
[0037] 图4为本发明具体实施方式的签名密钥生成过程时序图;
[0038] 图5为本发明具体实施方式的可信二维码生成过程时序图;
[0039] 图6为本发明具体实施方式的基于CBS签名机制的二维码认证方法流程图;
[0040] 图7为本发明具体实施方式的对商户是否已经持有签名密钥进行判断流程图。

具体实施方式

[0041] 下面结合附图对本发明的具体实施方式做详细说明。
[0042] 本实施方式是将基于CBS签名机制的二维码认证系统及方法应用到认证领域。具体实施过程中采用基于身份的签名机制对有效消息进行签名后将其编码产生二维码,并且签名密钥单独存储于USBKey中,只有在需要生成签名时才读取其中密钥,从而保障了系统的安全和二维码的可信任度。
[0043] 本实施方式的基于CBS签名机制的二维码认证系统,如图1所示,图中包括信任中心CA、两个二维码生成端、两个二维码验证端和一个安全的物理存储介质USBKey,由图可以看出商户可以使用二维码生成端产生可信二维码,用户可使用二维码验证端扫描验证二维码。
[0044] 在图1中的数字标识出系统中几个重要的功能:
[0045] ①表示商户注册或向CA申请证书。
[0046] ②表示CA验证通过为商户颁发证书。
[0047] ③表示商户生成签名密钥后将其存入物理存储介质。
[0048] ④表示用户扫描商户发布的二维码。
[0049] 例如有一个新商户由于自身业务需要,想要使用系统来生成一个包含自身信息的可信二维码图片时,首先其需要通过web网页向信任中心发起注册,信任中心在收到来自商户的注册请求后,会判断商户身份的合法性,并对身份合法用户进行添加。商户登录可信二维码生成端,商户登陆后系统会自动提示商户是否已持有签名密钥,商户根据自身状态进行选择,假设商户未持有签名密钥,此时利用CBS签名算法生成签名密钥,该算法在生成密钥过程中需要商户输入自身的身份信息(ID)和私钥(随机选取的大数),生成的密钥会存储在USBKey中,商户只要保存好密钥即可,在要生成可信二维码图片时,只需要输入数据消息m并将USBkey插入生成端电脑即可生成二维码图片。
[0050] 在用户使用安装有验证端软件的智能手机时,有验证端扫描二维码图片即可自动判断二维码的真实性,验证通过会显示数据消息m,否则提示验证失败。
[0051] 为方便后续描述,给出如表1和表2所示的标识及说明。
[0052] 表1标识及说明
[0053]
[0054] 表2实体间通信的符号描述
[0055]
[0056] 信任中心用于生成公私钥和公共参数并进行新商户身份注册,信任中心对身份信息中合法的新商户进行添加;
[0057] 二维码生成端采用线程池支持多商户并行访问,商户访问可信二维码生成端时,对未持有签名密钥的商户利用CBS签名算法生成签名密钥并存储至USBKey;对已经持有签名密钥的商户根据该商户输入的数据消息确定要编码字符类型、指定所需的错误检测和纠错级别,并利用从USBKey读取的签名密钥对商户输入的数据消息进行签名产生签名消息,进而生成二维码,该二维码的数据流包括数据消息、签名消息、商户公钥、商户身份ID;
[0058] 二维码验证端用于扫描二维码并对二维码进行验证:若二维码内含有签名消息则将二维码的数据流进行Base64解码,从而得到byte数组,根据该数组的前4个数值确定二维码内数据消息的长度、签名消息的长度、商户公钥的长度、商户身份ID的长度,验证定二维码的正确性;
[0059] 物理存储介质USBKey用于存储二维码生成端生成的签名密钥。
[0060] 本实施方式中,实体之间通信过程如图2所示。
[0061] 采用基于CBS签名机制的二维码认证系统的二维码认证方法,如图6所示,包括以下步骤:
[0062] 步骤1:信任中心生成公私钥和公共参数并进行新商户身份注册,信任中心对身份信息中合法的新商户进行添加;
[0063] 信任中心运行Setup算法:
[0064] 首先,选取两个阶为q的循环群G1,G2和一个双线性对e:G1×G1→G2;
[0065] 之后,选择一个生成元P∈G1和一个随机密钥
[0066] 然后,计算信任中心公钥PKC=sCP;
[0067] 另外,自行选择两个密钥hash函数H1:{0,1}*→G1和
[0068] 最后,生成的信任中心公共参数为(G1,G2,e,q,P,PKC,H1,H2);
[0069] 身份信息包括自身的公钥PKA=sAP和身份ID,sA是商户的私钥,私钥是商户自行选取的;
[0070] 步骤2:二维码生成端采用线程池支持多商户并行访问,商户访问可信二维码生成端时,若该商户为未持有签名密钥的商户,则执行步骤3,若该商户为已经持有签名密钥的商户,则执行步骤5;
[0071] 步骤3:利用CBS签名算法执行签名密钥生成操作,商户生成签名密钥后向物理存储介质USBKey中存储签名密钥,并执行步骤4;签名密钥生成流程如图3和图4所示;
[0072] 步骤3.1:向信任中心发起证书申请,商户发送自己的身份信息给信任中心,信任中心对审核通过的商户颁发证书CertA,CertA=sCPA;
[0073] 步骤3.2:商户在得到由信任中心颁发的证书后,利用该证书和商户自身的公私钥对(sA,PKA)进行运算得到商户的签名密钥SA=scPA+sAPA=CertA+sAPA,其中,PA=H1(PKc||PKA||IDA)∈G1,IDA为商户的身份ID;
[0074] 步骤4:二维码生成端利用物理存储介质USBKey内存储消息对商户是否已经持有签名密钥进行判断,如图7所示;
[0075] 步骤4.1:判断物理存储介质USBKey内是否为空,若是,则执行步骤3,重新生成签名密钥;否则执行步骤4.2;
[0076] 步骤4.2:判断物理存储介质USBKey中存储的消息的编码格式是否与签名密钥的格式一致,若是,则执行步骤4.3;否则执行步骤3;
[0077] 步骤4.3:物理存储介质USBKey中的消息长度若大于设定阈值,则判定商户已经持有签名密钥,则执行步骤5,否则执行步骤3;
[0078] 步骤5:二维码生成端根据商户输入的数据消息确定要编码字符类型、指定所需的错误检测和纠错级别;如果商户输入的数据消息没有指定的纠错级别,则自动选择与之匹配的纠错级别;
[0079] 步骤6:利用从物理存储介质USBKey读取的商户的签名密钥对商户输入的数据消息进行签名,产生签名消息signature,签名消息signature内包含U和V,其中U=rPA,r为商户随机选取的数,V=(r+h)SA=(r+h)(sC+sA)PA,h=H2(m,U),m为数据消息;
[0080] 步骤7:生成二维码,该二维码的数据流包括数据消息m、签名消息signature、商户公钥PKA、商户身份ID;二维码生成流程如图5所示;
[0081] 步骤8:二维码验证端扫描二维码,将二维码转换成包含数据消息m、签名消息signature、商户公钥PKA、商户身份ID的数据流;
[0082] 步骤9:对二维码进行验证:判断二维码内是否含有签名消息,若含有签名消息,则执行步骤10,否则,二维码验证失败,结束二维码认证;
[0083] 步骤10:将二维码的数据流进行Base64解码,从而得到byte数组;
[0084] 步骤11:根据byte数组的前4个数值确定二维码内数据消息m的长度、签名消息signature的长度、商户公钥PKA的长度、商户身份ID的长度,根据各长度值提取数据消息m、签名消息signature、商户公钥PKA、商户身份ID;
[0085] 步骤12:检验e(PKC,U+hPA)e(PKA,U+hPA)=e(P,V)是否成立,其中的U和V组成签名消息,h包含数据消息m,PA包含身份信息,若成立,则验证成功,否则验证失败。
[0086]