[发明专利]基于链表结构的可分电子现金构造方法有效
申请号: | 201910123498.3 | 申请日: | 2019-02-18 |
公开(公告)号: | CN109886663B | 公开(公告)日: | 2020-11-27 |
发明(设计)人: | 刘建华;刘佳嘉;程华;李军辉;张华忠;樊荣;华厚强;钟玲玲 | 申请(专利权)人: | 中国民用航空飞行学院 |
主分类号: | G06Q20/06 | 分类号: | G06Q20/06;G06Q20/38 |
代理公司: | 成都厚为专利代理事务所(普通合伙) 51255 | 代理人: | 夏柯双 |
地址: | 618300 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于链表结构的可分电子现金构造方法,在本发明中,对于交易金额在链表长度L以下的交易,用于执行支付协议的运算量为常数,与支付金额无关,即用户只需要2次杂凑运算、3次循环群上的指数运算、1次签名运算、3次循环群上的指数等式的零知识证明和2次数字签名等式的零知识证明即可,提高了支付效率;此外,商户存储一个电子现金的计算量为常数,与电子现金的金额无关,即商户存储电子现金时,银行仅需进行4次对运算就可返回结果给商户,并告知商户存储是否成功,提高了进行电子现金存储的效率。 | ||
搜索关键词: | 基于 结构 电子 现金 构造 方法 | ||
【主权项】:
1.基于链表结构的可分电子现金构造方法,其特征在于,包括:S1.设置电子现金系统的公共参数,具体包括:定义S0是由L个连续的正整数组成的集合,正整数s1是集合S0中的最小数,正整数sL是集合S0中的最大数;集合SHi={si+1,si+2,···,sL},其中,si+1=si+1,
集合SQi={s1,s2,···,si‑1},其中,
链表的每个节点都由集合S0中的一个正整数si(1≤i≤L)标识;定义G1,G2,GT是阶为素数p的循环群,e为一个双线性映射且满足e(G1,G2)→GT;{G1,G2,GT,e}为一个双线性群,g,h,u1,u2,w为G1的生成元,
为G2的生成元,
为GT的生成元;一个可信第三方生成以下参数:对每一个正整数s∈S0,随机选择rs,![]()
为整数集{1,2,…,(p‑1)},且
对每一个si∈S0\{s1}和sj∈SQi,
其中,
表示从节点si到sj;对每一个si∈S0\{sL}和sj∈SHi,
选定两个防碰撞的杂凑函数:H:
和
系统公共参数为
S2.生成密钥,具体包括生成银行密钥、用户密钥和商户密钥;生成银行密钥:银行选择两个不同的签名算法Σ0和Σ1,Σ0=(Keygen,Sign,Verify),消息空间为
Σ1=(Keygen,Sign,Verify),消息空间为
银行设置密钥(sk1,pk1)←Σ1.Keygen(1k),并为链表的第i个节点设置
1≤i≤L,对于每一个si∈S0,计算
将银行私钥bsk设置为sk1,银行公钥bpk设置为
生成用户密钥:用户随机选择
作为其私钥,计算其公钥upk=gusk;生成商户密钥:商户随机选择
作为其私钥,计算其公钥mpk=gmsk;S3.电子现金交易,具体包括取款、支付和存钱中的至少一种;取款:用户随机选择x,
并计算
然后将upk,
以及关于x,y,usk的零知识证明发送给银行,称该零知识证明为第一零知识证明,如果
是未被使用过的,且第一零知识证明有效,则银行使用签名算法Σ1对
中的usk,x,y进行签名得到签名σ,这里x,y为用户的秘密值,并将签名σ发送给用户,当前指针指向节点s1;支付:用户要使用的节点包括sc,sc+1,…,sc+l‑1,记i=c+l‑1,sc为当前指针标记的节点,在电子现金初次支付时,sc为s1,l为要支付的电子现金的价值,用户计算r=H(info),
其中,info=(l,date,mpk,trans),date为支付时间,trans包含交易的商品的规格参数,用户提供一个知道usk,x,y,
σ的零知识证明,称该零知识证明为第二零知识证明,所述第二零知识证明满足以下关系式:![]()
将签名σ分成(z1,z2,z3,z4,),选择随机数
计算
用户选择随机数
计算
和z=k+C·x,记
Π=(σ′,C,z),其中,
用户将电子现金(l,Z,Π)发送给商户,商户收到电子现金(l,Z,Π)后,验证签名σ′和第二零知识证明的有效性,若二者都有效,则此次支付成功,当前指针指向节点si+1;存钱:银行维护一个数据库DB用来存放商户的存款,数据库DB初始时为空;商户将(l,Z,Π)发给银行进行存储,银行首先检查Z是否已经被存储过,并验证(l,Z,Π)的有效性,该有效性指σ′和第二零知识证明的有效性,如果Z已经被存储过且(l,Z,Π)是无效的,则银行退出协议;如果Z未被存储过且(l,Z,Π)是有效的,银行首先计算![]()
和
检查
是否已经存储到数据库DB上,若都没有存储到数据库DB上,则银行接受此次存款,返回结果给商户,商户完成存款;对于每一个sj∈{sc,sc+1,…,si‑1},银行计算
对于每一个sj∈{sc+1,sc+2,…,si},银行计算
银行将
c≤j≤i,添加到数据库DB上,所述
c≤j≤i为电子现金序列号,同时保存(l,Z,Π);若
有一个在已经存在数据库DB中,那么存在一个电子现金(l′,Z′,Π′)在数据库DB中,电子现金(l′,Z′,Π′)使用了节点sc或si,银行返回[(l,Z,Π),(l′,Z′,Π′)]给商户。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国民用航空飞行学院,未经中国民用航空飞行学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910123498.3/,转载请声明来源钻瓜专利网。