CN104077625A - 一种基于电子签名的二维码内容校验方法 - Google Patents

一种基于电子签名的二维码内容校验方法 Download PDF

Info

Publication number
CN104077625A
CN104077625A CN201410277181.2A CN201410277181A CN104077625A CN 104077625 A CN104077625 A CN 104077625A CN 201410277181 A CN201410277181 A CN 201410277181A CN 104077625 A CN104077625 A CN 104077625A
Authority
CN
China
Prior art keywords
signature
algorithm
quick response
response code
private key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410277181.2A
Other languages
English (en)
Other versions
CN104077625B (zh
Inventor
张锐
李阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201410277181.2A priority Critical patent/CN104077625B/zh
Publication of CN104077625A publication Critical patent/CN104077625A/zh
Application granted granted Critical
Publication of CN104077625B publication Critical patent/CN104077625B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明涉及一种基于电子签名的二维码内容校验方法,其步骤包括:采用签名算法在二维码中加入用于校验的包含电子签名的隐藏附加字段,将二维码的原文内容作为明文部分,将所述隐藏附加字段作为密文部分;读取二维码的明文部分和密文部分,利用密文部分的隐藏附加字段保存的电子签名对明文部分的数据进行校验,保证二维码内信息的有效性和真实性。所述签名算法使用基于椭圆曲线密码学的使用第二类或第三类匹配算法变形的短签名算法进行签名和检验。本发明在现有二维码标准的基础上对二维码进行了扩展,加入了用于校验的隐藏附加字段,能够对二维码中的数据进行校验,保证二维码内信息的有效性和真实性。

Description

一种基于电子签名的二维码内容校验方法
技术领域
本发明属于信息技术领域,涉及一种基于电子签名的二维码内容校验方案,可用于二维码安全支付、交易等领域,通过使用本发明,能够验证二维码的签发机构的身份及二维码内容的完整性,提供防钓鱼、防篡改等安全性保障。 
背景技术
二维码在现代商业活动中,可实现的应用十分广泛,如:产品防伪/溯源、广告推送、网站链接、数据下载、商品交易、定位/导航、电子凭证、车辆管理、信息传递、名片交流、wifi共享等,而如今智能手机扫一扫功能的应用使得二维码更加普遍。 
但目前现有的二维码仅仅是信息的载体,并不对其中内容的有效性和真实性负责,因此带有恶意软件和病毒以及各种钓鱼网站的链接正成为二维码普及道路上的绊脚石,严重制约二维码在支付、交易等领域的发展;发展与防范二维码的滥用,保证二维码的有效性和真实性,成为了一个亟待解决的问题。 
发明内容
为了克服现有二维码安全性上的缺憾,本发明设计并实现了一种基于电子签名的二维码内容校验方法,并提供Android和iOS接口,能够对二维码中的数据进行校验,保证二维码内信息的有效性和真实性。 
本发明生成的二维码兼容现有二维码标准,可以被现有二维码读取软件正常读取到二维码明文的部分,明文可以是网站链接、商品信息等,而通过定制的二维码读取器,可以在读取到二维码明文部分外,额外读取到二维码密文部分,密文部分含有二维码的电子签名,并使用下文所述的电子签名算法对二维码明文的有效性和真实性进行校验。 
考虑到二维码容量极其有限,在本发明的实现中,签名算法在MNT曲线(Miyaji,A.,Nakabayashi,M.,Takano,S.:New explicit conditions of elliptic curve traces for FR-reduction[R].IEICE Trans.Fundamentals,2001,E84-A(5):1234-1243.)上使用ZSS短签名(Zhang,F.,Safavi-Naini,R.,Susilo,W.:An efficient signature scheme from bilinear pairings and its applications[J].PKC,2004(2947):277-290.)的扩展算法进行签名和检验,利用椭圆曲线离散 对数问题的难解性保证签名算法的安全性。 
由MNT曲线的定义可推得,n bits长度的MNT曲线上的电子签名,具有等价于6*n bits长度的RSA签名相同的安全强度,即,171bits长度的MNT曲线上的电子签名具有约1024bits长度的RSA签名相同的安全强度,在不降低安全强度的基础上,节约了二维码储存空间。 
签名算法包含四个部分:ParamGen系统参数生成器(生成用于构造MNT曲线的参数等)、KeyGen公私钥对生成器、Sign签名算法、Ver校验算法。 
传统的ZSS签名算法是一种基于配对运算的椭圆曲线密码学的签名算法;根据Steven D.Galbraith等人对基于配对运算的椭圆曲线密码学的研究(S.Galbraith,K.Paterson,N.Smart,Pairings for cryptographers[J].Discrete Appl.Math,2008(15),3113-3121.),他们将配对运算 分为三类: 
第一类:配对算法的情况; 
第二类:但存在一种可有效计算的同态映射
第三类:并且之间不存在可有效计算的同态映射。 
根据这个分类,ZSS签名算法原本使用第一类配对算法,但为了使生成签名更短,以适应二维码的储存环境,因此,本发明中使用第二类和第三类配对算法,对ZSS签名算法进行了一定的修改和扩展。而根据具体使用第二类或第三类配对算法,KeyGen算法会产生不同的公钥。 
图1是本发明的基于电子签名的二维码内容校验方法的总体框架图,首先使用ParamGen系统参数生成器生成MNT曲线的参数,进而构造出签名所需的系统参数,并使用KeyGen公私钥对生成器生成签名算法的公私钥对;然后Sign签名算法根据所述系统参数和在所述公私钥对的私钥加入电子签名,进行校验时Ver校验算法根据所述系统参数和在所述公私钥对的公钥进行校验。下面具体说明本发明采用的签名算法的四个部分。 
1.ParamGen系统参数生成器 
MNT曲线的参数可使用参数生成函数进行生成,例如: 
type d 
q 2094476214847295281570670320144695883131009753607350517892357 
n 2094476214847295281570670320143248652598286201895740019876423 
h 1122591 
r 1865751832009427548920907365321162072917283500309320153 
a 865170590273535454306452832437448485372273205130436709893539 
b 1274939131798122063394525328339864284625185387956074645893145 
k 6 
nk 84421409121513221644716967251498543569964760150943970280296295496165154657097987617093928595467244393873913569302597521196137376192587250931727762632568620562823714441576400096248911214941742242106512149305076320555351603145285797909942596124862593877499051211952936404822228308154770272833273836975042632765377879565229109013234552083886934379264203243445590336 
hk 24251848326363771171270027814768648115136299306034875585195931346818912374815385257266068811350396365799298585287746735681314613260560203359251331805443378322987677594618057568388400134442772232086258797844238238645130212769322779762522643806720212266304 
coeff0 73123106465503174500841798472944804865463919506989584455112 
coeff1 1777416261966943740464316918909734791188633967518956195822081 
coeff2 733533180020927021709758608740900517666390966774043783918178 
nqr 1131989004349896802449251430853763251805164617904701101949348 
参数说明: 
type d:采用D类型曲线进行配对。这是一种嵌入系数为6、阶数为素数或素数乘以一个很小的常数的普通曲线(非超奇异曲线),即MNT曲线(此处也可以选择使用KSS、BN、BLS等其他椭圆曲线,但考虑到需要使生成的签名尽量短,因此,需采用在非对称椭圆曲线上进行配对运算,即,不使用第一类配对算法); 
q,n:曲线E(Fq)定义在Fq上,阶数为n(=q-t+1)∈Fq; 
r:一个可以整除n的大素数; 
h:n=h·r: 
a,b:E:y2=x3+ax+b; 
nk:曲线定义在上,阶数为
hk:nk=hk·r2; 
coeff0,coeff1,coeff2:定义在Fq上,首项为一的不可约的三次多项式的系数; 
nqr:定义在Fq上的二次非剩余。 
通过以上参数,可以构造出ZSS签名所需的系统参数其中H为上任意哈希函数。 
2.Keygen公私钥对生成器 
ZSS签名算法的公私钥对可使用公私钥对生成函数进行生成,例如: 
私钥 
X 1241972322901686325328910561988883374411487544193816372 
P [991431600044281292687389455566056682628385502940809794529835,304848387439559995842028371945998037206947127180602904024785] 
公钥 
P [991431600044281292687389455566056682628385502940809794529835,304848387439559995842028371945998037206947127180602904024785] 
Q [[1864140308961436319887681042266890962660676366769222720187955,1678327388033448265766915430855298560756748195708362386501861,1678100251631842278319979639340052980105679950496988912912708],[662968168343615730569336309896705263388165557829706894801958,680522612708915729396442681113347195990068435219813761307685,512964667927777427670757373868695141091311919445234765997281]] 
Qpub [[1342905245301551526302815082707865062298792599859243728370816,1673801344331221770057779909345009503253310268908580158656403,194152011901745717496280180981163377394829278858693442525420],[2057681427490295162931729339996265382731179725436383034840249,1258279037775502909688784147605259979869034010343016417077730,1441858545306021577855717968663755857988144698338195920518337]] 
eQP [[1682266062922197776504915145534003548545497937973373378182701,1687103331438120818017675539287278255118618527321115366822258,118686219933230112230340233920733468543602690023337121366808],[958353136493690068866122056124672124871255711789208013223281,4351799373881887679355906471264871 34115256118640734355601006,1420298296426393926385641129951576814003067035744318226849657]] 
eQPinv [[1682266062922197776504915145534003548545497937973373378182701,1687103331438120818017675539287278255118618527321115366822258,118686219933230112230340233920733468543602690023337121366808],[1136123078353605212704548264020023758259754041818142504669076,1659296277459106513635079673018208749015753634966616162291351,674177918420901355185029190193119069127942717863032291042700]] 
参数说明: 
x:随机选取
P:如果使用第二类配对算法,则P并不是必须的,可以通过P=φ(Q)求得,根据MNT曲线的定义,有如果使用第三类配对算法,则P是必须的,其值为随机选取采用这两种配对算法生成签名的方法,在下文中我们称为方法一和方法二; 
Q:随机选取
Qpub:Qpub=xQ; 
eQP,eQPinv:e(Q,P),e(Q,P)-1并不是必须的,但它可以被提前求出,作为公钥的一部分,在这种情况下,校验算法只需要计算等式的左半部分,使得校验算法更加快速有效。 
使用方法一,则签名算法的私钥为x,Q,公钥为Q,Qpub,[e(Q,P),[e(Q,P)-1]],其中e(Q,P),e(Q,P)-1用于加速校验,并不是必须的。 
使用方法二,则签名算法的私钥为x,P,公钥为P,Q,Qpub,[e(Q,P),[e(Q,P)-1]],其中e(Q,P),e(Q,P)-1用于加速校验,并不是必须的。 
3.Sign签名算法 
图2是签名算法的流程图。首先输入私钥x,以及需要签名的消息m,计算 为了减小签名的长度,此处只使用S的x轴的值Sx作为签名; 
将消息m和签名Sx之间加入二维码消息块的分隔符,以隐藏签名数据; 
为保证二维码内信息的保密性,可以选择使用RC4或其他流密码算法,对数据进行加密; 
最后把这段包含签名的数据写入二维码中。 
4.Ver校验算法 
图3是校验算法的流程图。首先从二维码中读取完整数据块,并使用二维码消息块的分隔符进行切割,以此取得消息m和签名Sx。 
输入公钥P,Q,Qpube(Q,P),因为签名只储存了Sx,计算MNT曲线和x=Sx的任一交点S,并计算e(H(m)Q+Qpub,S)。 
判断 
e(H(m)Q+Qpub,S)=e(Q,P) 
或 
e(H(m)Q+QPub,S)-1=e(Q,P) 
如果上面两个等式有一个成立则认为校验成功,否则,认为校验失败。 
以上校验算法的依据是: 
e ( H ( m ) Q + Q pub , S ) = e ( ( H ( m ) + x ) Q , ( H ( m ) + x ) - 1 P ) = e ( Q , P ) ( H ( m ) + x ) · ( H ( m ) + x ) - 1 = e ( Q , P )
而MNT曲线和x=Sx的两个交点S,S*满足S*||=-S因此 
e(H(m)Q+Qpub,S′)-1=e(H(m)Q+Qpub,-S)-1
=e(H(m)Q+Qpub,S)-1,-1
=e(H(m)Q+Qpub,S) 
=e(Q,P) 
由于求逆算法比配对算法更高效,因此采用这种先配对,后求逆的算法,而不是直接使用S*进行配对计算,避免额外进行一次配对计算的时间消耗。 
5.其他短签名算法 
本发明中,ZSS短签名算法可以被其他基于椭圆曲线密码学的短签名算法(BLS等)的 第二类,第三类变形替换,但实际使用中,采用ZSS短签名算法的第三类变形运算效率更好。 
此处以BLS短签名算法的第二类变形为例,简要介绍如何采用其他短签名算法替换上文所述的签名算法,下文称为方法三: 
1)ParamGen系统参数生成器 
简要起见,依然采用MNT曲线,参数同上。 
2)Keygen公私钥对生成器 
是一个数值到点哈希函数(Map-to-point hash function)。私钥公钥Ppub=xP。 
3)Sign签名算法 
对给定私钥x和明文n∈0,1*,计算签名S=xH(m),为节约空间,此处依然可以使用Sx作为签名。 
4)Ver校验算法 
对给定公钥Ppub=xP,明文m和签名S,判断e(P,S)=e(Ppub,H(m)),则认为校验成功;若为了节约空间使用Sx作为签名,则需要额外判断e(P,S)=e(Ppub,H(m))-1,两个等式其中之一成立,则认为校验成功。 
因为BLS短签名算法需要计算数值到点哈希函数(Map-to-point hash function),因此效率上比ZSS短签名算法逊色一些,因此,推荐使用ZSS短签名第三类变形的方式实现整个签名算法。 
与现有技术相比,本发明的有益效果如下: 
本发明在现有二维码标准的基础上,对二维码进行了扩展;在保证其内容可以被传统二维码读取软件读取的基础上,在二维码中加入用于校验的隐藏附加字段;通过使用定制的二维码读取器,可以读取到隐藏附加字段中保存的电子签名,对二维码中的数据进行校验,保证二维码内信息的有效性和真实性。 
附图说明
图1为本发明基于电子签名的二维码内容校验方法的总体框架示意图; 
图2为Sign签名算法示意图; 
图3为Ver校验算法示意图。 
图4为实施例1中得到的可校验二维码图片。 
图5为实施例2中得到的可校验二维码图片。 
图6为实施例3中得到的二维码图片,其中(a)为不含签名的二维码,(b)为含有错误签名的二维码,(c)为含有正确签名的二维码。 
具体实施方式
以下结合实施例和附图对本发明进行详细说明,但不构成对本发明的限制。 
实施例1:使用方法一进行签名校验 
随机生成MNT曲线系统参数 
type d 
q 2094476214847295281570670320144695883131009753607350517892357 
n 2094476214847295281570670320143248652598286201895740019876423 
h 1122591 
r 1865751832009427548920907365321162072917283500309320153 
a 865170590273535454306452832437448485372273205130436709893539 
b 1274939131798122063394525328339864284625185387956074645893145 
k 6 
nk 84421409121513221644716967251498543569964760150943970280296295496165154657097987617093928595467244393873913569302597521196137376192587250931727762632568620562823714441576400096248911214941742242106512149305076320555351603145285797909942596124862593877499051211952936404822228308154770272833273836975042632765377879565229109013234552083886934379264203243445590336 
hk 24251848326363771171270027814768648115136299306034875585195931346818912374815385257266068811350396365799298585287746735681314613260560203359251331805443378322987677594618057568388400134442772232086258797844238238645130212769322779762522643806720212266304 
coeff0 73123106465503174500841798472944804865463919506989584455112 
coeff1 1777416261966943740464316918909734791188633967518956195822081 
coeff2 733533180020927021709758608740900517666390966774043783918178 
nqr 1131989004349896802449251430853763251805164617904701101949348 
在这个椭圆曲线上,按方法一所述,随机选取
X=1241972322901686325328910561988883374411487544193816372 
Q=[[1864140308961436319887681042266890962660676366769222720187955,1678327388033448265766915430855298560756748195708362386501861,1678100251631842278319979639340052980105679950496988912912708],[662968168343615730569336309896705263388165557829706894801958,680522612708915729396442681113347195990068435219813761307685,512964667927777427670757373868695141091311919445234765997281]] 
根据Qpub=xQ,P=φ(Q),其中求得 
P=[406423426741416327077845000843032148764324824534771872418719,864149974003658125120701408750056200282702175321589354481456] 
Qpub=[[1342905245301551526302815082707865062298792599859243728370816,1673801344331221770057779909345009503253310268908580158656403,194152011901745717496280180981163377394829278858693442525420],[2057681427490295162931729339996265382731179725436383034840249,1258279037775502909688784147605259979869034010343016417077730,1441858545306021577855717968663755857988144698338195920518337]] 
签名时,根据对消息m=″MESSAGE″进行签名,求得 
S=[8356899844477549926769924295344456870326568984446545308959,321266138804207213825301160453648186145303535124999268368588] 
因此,签名Sx为 
SX=8356899844477549926769924295344456870326568984446545308959 
将数据m||delim||Sx(delim为二维码消息块的分隔符)写入二维码,得到可校验二维码,如图4所示。 
校验时,读入Sx,算得y=Sx与椭圆曲线其中一个交点,记为S,计算 e(H(m)Q+Qpub,S) 
S=[8356899844477549926769924295344456870326568984446545308959,321266138804207213825301160453648186145303535124999268368588] 
H(m)Q+Qpub=[[1024633701954321223670392387462272075622162924033685741977624,208872238650784922593080834583078880243624859954111421947280,1176909970283301892551697219774052120406411783992376652532136],[797728727517098831540735976595822490525150604076327261036647,169206239921804006751209174920424637799282864901979662066405,1097715744742259677402061314248963208399388320064315019435349]] 
e(H(m)Q+Qpub,S)=[[100557885000021269384394913305093889949130896594536357557499,114256910477774543214748540239212311041604680260201731751092,1541126241725215390911471808115331862604181395376394577234875],[1651353412874119811537958215560502450310572712476568789809039,1428304008316604012783484898586457837770195929624985003908128,1662843668893414864231353607477190086391542914275768145977436]] 
e(Q,P)=[[100557885000021269384394913305093889949130896594536357557499,114256910477774543214748540239212311041604680260201731751092,1541126241725215390911471808115331862604181395376394577234875],[1651353412874119811537958215560502450310572712476568789809039,1428304008316604012783484898586457837770195929624985003908128,1662843668893414864231353607477190086391542914275768145977436]] 
发现e(H(m)Q+Qpub,S)=e(Q,P)=eQP,因此,认为校验成功。 
这里交点S与签名产生的S相同。 
实施例2:使用方法二进行签名校验 
方便起见,依然使用上例中的MNT曲线系统参数 
在这个椭圆曲线上,按方法二所述,随机选取
X=935976565574215123543177337217400765619109765723304807 
P=[726295140007391144771268853366719396141676319285035555652941,1506079786448184987381182053215369414601877647888531976798773] 
Q=[[896371340931311499493593664584223657742867760018117780155561,267380570384658185354282842928504586138045607172470248095033,771358957741225629365511277174673315313303257512061947905089],[2033856979517179164298747353262291745416015908772483550875796,1478956397586535476146137005032062926046515071893135505318484,1720619592637036368752615222798139932950168312864948118399061]] 
根据Qpub=xQ,P=φ(Q),其中求得 
Qpub=[[1498582646265222373464440451934158902969736088591053541424589,2083911614920333503350762209805519593219381070840979580157604,1455919049114014472106024316188161147889991571291336368066692],[1303200739851714147434167215214814567704418058557506126342356,812790147627732741969400954441424629643998128349473643791413,1333601691915848042644288264301565963593551433000024541688843]] 
为了加速校验,我们同时也计算出e(Q,P),e(Q,P)-1
eQP=[[736851906422430829732528405523365804967158603765226551916666,1370650128899618257923077438105843467384548400511544712445205,1299407026742215835858099939961863355828645995433504856641963],[1493419964374519075771041770301816276674160146602370011874322,1962663404555727847028041305006066282721340749358973281271735,249765840518465158709255361858376927624756942647977623425899]] 
eQPinv=[[736851906422430829732528405523365804967158603765226551916666,1370650128899618257923077438105843467384548400511544712445205,1299407026742215835858099939961863355828645995433504856641963],[601056250472776205799628549842879606456849607004980506018035,13181281029156743454262901513 8629600409669004248377236620622,1844710374328830122861414958286318955506252810959372894466458]] 
签名时,根据对消息m=″MESSAGE″进行签名,求得 
S=[1527952555634199573453616071197044218834806225604925330525241,968095392925785531251676391620341913737509447832877455132417] 
因此,签名Sx为 
SX=1527952555634199573453616071197044218834806225604925330525241 
将数据m||delim||Sx(delim为二维码消息块的分隔符)写入二维码,得到可校验二维码,如图5所示。 
校验时,读入Sx,算得y=Sx与椭圆曲线其中一个交点,记为S,计算e(H(m)Q+Qpub,S) 
S=[1527952555634199573453616071197044218834806225604925330525241,1126380821921509750318993928524353969393500305774473062759940] 
H(m)Q+Qpub=[[1024633701954321223670392387462272075622162924033685741977624,208872238650784922593080834583078880243624859954111421947280,1176909970283301892551697219774052120406411783992376652532136],[797728727517098831540735976595822490525150604076327261036647,169206239921804006751209174920424637799282864901979662066405,1097715744742259677402061314248963208399388320064315019435349]] 
e(H(m)Q+Qpub,S)=[[100557885000021269384394913305093889949130896594536357557499,114256910477774543214748540239212311041604680260201731751092,1541126241725215390911471808115331862604181395376394577234875],[1651353412874119811537958215560502450310572712476568789809039,1428304008316604012783484898586457837770195929624985003908128,1662843668893414864231353607477190086391542914275768145977436]] 
发现e(H(m)Q+Qpub,S)≠e(Q,P)=eQP,但e(H(m)Q+Qpub,S)=e(Q,P)-1=eQPinv,因此,认为校验成功。 
这里交点S与签名产生的S不相同。 
实施例3:使用方法二生成签名错误的二维码(用于检验) 
根据方法二,我们可以使用一对公私钥对生成签名,使用另一对公私钥对用于校验,校验结果应为失败的,以此来证明不合法的签名无法通过校验。 
例如,使用实施例2中的系统参数和公私钥对,我们可以生成如图6中(a)、(b)、(c)所示的三个二维码,其中(a)为不含签名的二维码,(b)为含有错误签名的二维码,(c)为含有正确签名的二维码。 
使用专用的二维码读取软件,分别能得二维码不含签名,签名校验失败,签名校验成功,三个结论。 
以上通过具体实施例详细描述了本发明所提供的方法,本领域的技术人员应当理解,在不脱离本发明实质的范围内,可以对上述的方法进行各种修改或变形。例如可以在MNT曲线以外的其他椭圆曲线(KSS、BN、BLS等)上进行配对计算,或可以使用其他基于椭圆曲线密码学的短签名算法(BLS等)的第二类,第三类变形,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。 

Claims (8)

1.一种基于电子签名的二维码内容校验方法,其步骤包括:
1)采用签名算法在二维码中加入用于校验的包含电子签名的隐藏附加字段,将二维码的原文内容作为明文部分,将所述隐藏附加字段作为密文部分;
2)读取二维码的明文部分和密文部分,利用密文部分的隐藏附加字段保存的电子签名对明文部分的数据进行校验,保证二维码内信息的有效性和真实性。
2.如权利要求1所述的方法,其特征在于:所述签名算法使用基于椭圆曲线密码学的使用第二类或第三类匹配算法变形的短签名算法进行签名和检验:首先使用参数生成算法生成椭圆曲线的参数,进而构造出签名所需的系统参数,并使用公私钥对生成算法生成签名算法的公私钥对;然后签名算法根据所述系统参数和私钥生成电子签名,后续校验时根据所述系统参数和公钥对所述电子签名进行校验。
3.如权利要求2所述的方法,其特征在于,所述椭圆曲线为下列中的一种:MNT曲线、KSS、BN曲线、BLS曲线;所述短签名算法是ZSS短签名算法或者BLS短签名算法。
4.如权利要求2或3所述的方法,其特征在于,采用基于椭圆曲线密码学的使用第二类匹配算法变形的短签名算法进行签名和校验,具体步骤包括:
1)选定一套短签名算法的第二类变形算法,包括公私钥对生成算法、签名算法、校验算法;
2)通过系统参数生成算法构造椭圆曲线系统参数;
3)使用系统参数,通过公私钥对生成算法构造公私钥对,包括一对配套的公钥和私钥;
4)使用私钥,通过签名算法对输入文本即明文进行签名;
5)使用明文和及其签名生成含有签名的二维码;
6)后续校验时,从含有签名的二维码读出明文及其签名;
7)使用从二维码中读出的明文和签名,配合所述公钥,通过校验算法,对签名进行校验,判断其是否合法。
5.如权利要求2或3所述的方法,其特征在于,采用基于椭圆曲线密码学的使用第三类匹配算法变形的短签名算法进行签名和校验,具体步骤包括:
1)选定一套短签名算法的第三类变形算法,包括公私钥对生成算法、签名算法、校验算法;
2)通过系统参数生成算法构造椭圆曲线系统参数;
3)使用系统参数,通过公私钥对生成算法构造公私钥对,包括一对配套的公钥和私钥;
4)使用私钥,通过签名算法对输入文本即明文进行签名;
5)使用明文和及其签名,生成含有签名的二维码;
6)后续校验时,从含有签名的二维码读出明文及其签名;
7)使用从二维码中读出的明文和签名,配合所述公钥,通过校验算法,对签名进行校验,判断其是否合法。
6.如权利要求3所述的方法,其特征在于:使用ZSS短签名算法进行校验时采用先配对后求逆的算法,以减少时间消耗。
7.如权利要求1所述的方法,其特征在于:在签名时在明文和消息和签名之间加入二维码消息块的分隔符,以隐藏签名数据。
8.如权利要求1所述的方法,其特征在于:在签名时使用流密码算法对数据进行加密,以保证二维码内信息的保密性。
CN201410277181.2A 2014-06-19 2014-06-19 一种基于电子签名的二维码内容校验方法 Active CN104077625B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410277181.2A CN104077625B (zh) 2014-06-19 2014-06-19 一种基于电子签名的二维码内容校验方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410277181.2A CN104077625B (zh) 2014-06-19 2014-06-19 一种基于电子签名的二维码内容校验方法

Publications (2)

Publication Number Publication Date
CN104077625A true CN104077625A (zh) 2014-10-01
CN104077625B CN104077625B (zh) 2017-05-17

Family

ID=51598870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410277181.2A Active CN104077625B (zh) 2014-06-19 2014-06-19 一种基于电子签名的二维码内容校验方法

Country Status (1)

Country Link
CN (1) CN104077625B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105490814A (zh) * 2015-12-08 2016-04-13 中国人民大学 一种基于三维码的票务实名认证方法及系统
CN107104788A (zh) * 2017-04-18 2017-08-29 深圳奥联信息安全技术有限公司 终端及其不可抵赖的加密签名方法和装置
CN107133526A (zh) * 2017-04-06 2017-09-05 深圳奥联信息安全技术有限公司 应用数据保护方法及装置
CN108416414A (zh) * 2018-03-26 2018-08-17 中国人民银行印制科学技术研究所 自校验防伪二维码及制作方法和装置、自校验方法和装置
CN111898164A (zh) * 2020-07-02 2020-11-06 武汉纺织大学 一种支持标签区块链存储和查询的数据完整性审计方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007110155A1 (de) * 2006-03-27 2007-10-04 Giesecke & Devrient Gmbh Datenträger und verfahren zu seiner herstellung
CN101281581A (zh) * 2007-09-27 2008-10-08 北京数字证书认证中心有限公司 一种检验纸制文档内容是否被篡改的方法
CN102750510A (zh) * 2012-06-19 2012-10-24 袁开国 基于pki和hash的可信二维码方案
CN102932148A (zh) * 2012-10-25 2013-02-13 成都市易恒信科技有限公司 基于cpk认证的安全二维码防伪系统与方法
CN103259660A (zh) * 2013-04-15 2013-08-21 山东大学 基于相位恢复和椭圆曲线数字签名算法的图像认证方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007110155A1 (de) * 2006-03-27 2007-10-04 Giesecke & Devrient Gmbh Datenträger und verfahren zu seiner herstellung
CN101281581A (zh) * 2007-09-27 2008-10-08 北京数字证书认证中心有限公司 一种检验纸制文档内容是否被篡改的方法
CN102750510A (zh) * 2012-06-19 2012-10-24 袁开国 基于pki和hash的可信二维码方案
CN102932148A (zh) * 2012-10-25 2013-02-13 成都市易恒信科技有限公司 基于cpk认证的安全二维码防伪系统与方法
CN103259660A (zh) * 2013-04-15 2013-08-21 山东大学 基于相位恢复和椭圆曲线数字签名算法的图像认证方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105490814A (zh) * 2015-12-08 2016-04-13 中国人民大学 一种基于三维码的票务实名认证方法及系统
CN105490814B (zh) * 2015-12-08 2018-10-26 中国人民大学 一种基于三维码的票务实名认证方法及系统
CN107133526A (zh) * 2017-04-06 2017-09-05 深圳奥联信息安全技术有限公司 应用数据保护方法及装置
CN107104788A (zh) * 2017-04-18 2017-08-29 深圳奥联信息安全技术有限公司 终端及其不可抵赖的加密签名方法和装置
CN108416414A (zh) * 2018-03-26 2018-08-17 中国人民银行印制科学技术研究所 自校验防伪二维码及制作方法和装置、自校验方法和装置
CN111898164A (zh) * 2020-07-02 2020-11-06 武汉纺织大学 一种支持标签区块链存储和查询的数据完整性审计方法
CN111898164B (zh) * 2020-07-02 2024-03-29 武汉纺织大学 一种支持标签区块链存储和查询的数据完整性审计方法

Also Published As

Publication number Publication date
CN104077625B (zh) 2017-05-17

Similar Documents

Publication Publication Date Title
CN109672537B (zh) 基于公钥池的抗量子证书获取系统及获取方法
CN103490901B (zh) 基于组合密钥体系的密钥生成和发放方法
US10333718B2 (en) Method for the generation of a digital signature of a message, corresponding generation unit, electronic apparatus and computer program product
CN109064324A (zh) 基于联盟链的交易方法、电子装置及可读存储介质
EP2798773B1 (en) Generating digital signatures
CN103718500A (zh) 证书确认
US9800418B2 (en) Signature protocol
CN104077625A (zh) 一种基于电子签名的二维码内容校验方法
US20150100794A1 (en) Method for signing a set of binary elements, and updating such signature, corresponding electronic devices and computer program products
CN102236773A (zh) 射频识别加密验证系统和方法
US11310049B2 (en) Homomorphic encryption for password authentication
US8595505B2 (en) Apparatus and method for direct anonymous attestation from bilinear maps
US20130073855A1 (en) Collision Based Multivariate Signature Scheme
CN105515778B (zh) 云存储数据完整性服务签名方法
US11870911B2 (en) Providing a cryptographic information
CN104393996A (zh) 一种基于无证书的签密方法和系统
CN105376064A (zh) 一种匿名消息认证系统及其消息签名方法
EP2846493A1 (en) Method for ciphering and deciphering, corresponding electronic device and computer program product
KR20090008162A (ko) 이선형 맵들로부터의 직접적인 익명의 증명을 위한 장치 및방법
EP3002904A1 (en) Method for ciphering/deciphering and processing vectors of dimension n, where n is an integer greater or equal to 1
CN104320253A (zh) 一种基于cbs签名机制的二维码认证系统及方法
CN110557247A (zh) 基于身份的抗量子计算区块链方法和系统
CN103813333A (zh) 一种基于协商密钥的数据处理方法
Rosati et al. Elliptic curve certificates and signatures for nfc signature records
Tahat et al. Hybrid publicly verifiable authenticated encryption scheme based on chaotic maps and factoring problems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant