1.本发明涉及信息安全技术领域,特别是涉及一种基于国产区块链的匿名密钥协商方法。
背景技术:
2.区块链已经成为我国的一项重点前沿技术,在各领域得到广泛的应用。为了满足区块链国产化需求,国内工业界和学术界采用sm2、sm3、sm9等商用密码算法设计国产区块链平台。聚龙链、趣链等国产区块链平台的交易签名支持使用sm2数字签名算法。sm2数字签名算法是《sm2椭圆曲线公钥密码算法》规范中的数字签名算法,因其高安全、高效率而广泛用于消息传输,可有效保证消息传输过程中消息的真实性、可靠性和不可否认性。
3.现有国产区块链平台支持用户在区块链上匿名交易,但无法保障交易后双方数据的安全通信。虽然采用现有安全信道传输信息可保障安全性,但易导致用户的链上匿名信息与现实身份的关系泄露,破坏区块链用户的匿名性,严重侵犯用户的隐私。因此,亟需设计匿名密钥协商协议,既保证国产区块链平台用户交易后的数据安全传输,又保护区块链用户的匿名性。目前虽然有学者提出基于比特币的匿名密钥协商协议,主要采用国际算法ecdsa设计,难以适用国产区块链平台。
技术实现要素:
4.有鉴于此,本发明的目的在于提供一种基于国产区块链的匿名密钥协商方法,能够实现国产区块链交易后的端对端匿名通信,在保证区块链中用户匿名性的同时完成密钥协商,保障交易后的安全通信。
5.为实现上述目的,本发明采用如下技术方案:
6.一种基于国产区块链的匿名密钥协商方法,提供一系统包括用户a、用户b和区块链,包括以下步骤:
7.步骤s1:区块链调用初始化setup算法确定系统参数pp,将系统参数pp分享给其他实体;
8.步骤s2:用户a和b分别调用kgen产生公私钥对(pka,ska)和(pkb,skb);
9.步骤s3:用户a和b分别在区块链上发布交易内容ta、tb,即a和b分别利用私钥调用txsign计算交易内容的签名(ra,sa)、(rb,sb);
10.步骤s4:交易ta、tb及其签名上链后,用户a和b利用签名信息执行密钥协商协议,计算出会话密钥,完成密钥协商。
11.进一步的,所述初始化setup算法,具体为:
12.输入安全参数λ,随机选取大素数q,确定非奇异椭圆曲线
13.e:y2=x3+ax+b(mod q),其中,
14.在e包含无穷远点的所有点中选取素数n阶循环群以及生成元
15.选取安全哈希函数零知识证明函数zkp、零知识证明验证函数verzkp、解压函数uncompress和密钥派生函数kdf;
16.算法输出系统参数:
[0017][0018]
进一步的,所述kgen,具体为:输入系统参数pp,随机选取进一步的,所述kgen,具体为:输入系统参数pp,随机选取计算p=dg,算法输出用户的私钥sk=d、公钥pk=p。
[0019]
进一步的,所述txsign,具体为:
[0020]
输入系统参数pp、用户私钥sk=d和交易内容t.随机选取输入系统参数pp、用户私钥sk=d和交易内容t.随机选取计算k=kg=(xk,yk)、和r=(e+xk)(mod n);
[0021]
若r=0或r+k=n,则重新选取k再计算,否则计算s=(1+d)-1
(k-rd)(mod n);若s≠0,则输出交易内容t和签名σ=(r,s)。
[0022]
进一步的,所述密钥协商,具体为:协议输入系统参数pp,用户a和b在区块链上分别发布的交易以及签名ta、(ra,sa)和tb、(rb,sb)。a和b采非交互式密钥协商或交互式密钥协商完成密钥协商。
[0023]
进一步的,所述非交互式密钥协商具体为:
[0024]
1)a计算ka=sa(1+da)+rada(mod n)、n)、计算会话密钥
[0025]
2)b计算kb=sb(1+db)+rbdb(mod n)、n)、计算会话密钥
[0026]
进一步的,所述交互式密钥协商,具体为:
[0027]
1)a计算ka=sa(1+da)+rada(mod n)、n)、qa=kag=(xa,ya)、和若则否则随机选取wa∈[1,n-1],计算wa=wag。最后将(wa,πa=zkp(wa,g,wa))发送给b;
[0028]
2)b调用verzkp(wa,g,πa)验证πa的有效性后,计算kb=sb(1+db)+rbdb(mod n)、qb=kbg=(xb,yb)、)、若则否则随机选取wb∈[1,n-1],计算wb=wbg;将(wb,πb=zkp(wb,g,wb))发送给a;计算最后计算会话密钥
[0029]
3)a调用verzkp(wb,g,πb)验证πb的有效性后,计算最后计算会话密钥最后计算会话密钥
[0030]
本发明与现有技术相比具有以下有益效果:
[0031]
本发明利用区块链上的交易签名完成身份认证,保证了本发明的匿名密钥协商协议具有高安全性、低通信代价等特点。
附图说明
[0032]
图1是本发明流程示意图。
具体实施方式
[0033]
下面结合附图及实施例对本发明做进一步说明。
[0034]
在本实施例中,提供一种基于国产区块链的匿名密钥协商方法,提供一系统包括用户a、用户b和区块链,包括以下步骤:
[0035]
步骤s1:区块链调用初始化setup算法确定系统参数pp,将系统参数pp分享给其他实体;
[0036]
步骤s2:用户a和b分别调用kgen产生公私钥对(pka,ska)和(pkb,skb);
[0037]
步骤s3:用户a和b分别在区块链上发布交易内容ta、tb,即a和b分别利用私钥调用txsign计算交易内容的签名(ra,sa)、(rb,sb);
[0038]
步骤s4:交易ta、tb及其签名上链后,用户a和b利用签名信息执行密钥协商协议,计算出会话密钥,完成密钥协商。
[0039]
在本实施例中,符号及定义,具体如下:
[0040]
q:大素数;
[0041]
k:多项式的阶;
[0042]fq
:包含q个元素的有限域;
[0043]
a,b:fq中的元素,它们定义fq上的一条椭圆曲线e;
[0044]
e(fq):fq上椭圆曲线e的所有有理点(包括无穷远点o)组成的集合;
[0045]
#e(fq):e(fq)上点的数目,称为椭圆曲线e(fq)的阶;
[0046]
o:椭圆曲线上的一个特殊点,称为无穷远点或零点;
[0047]
包含椭圆曲线e所有点以及无穷远点的循环群;
[0048]
g:群的生成元;
[0049]
n:生成元g的阶(n是#e(fq)的素因子);
[0050]
安全的密码杂凑函数;
[0051]
π=zkp(w,g,w):零知识证明函数,返回证明π,在不泄露w的同时证明w=wg;
[0052]
verzkp(w,g,π):零知识证明验证函数,若π有效返回1,否则返回0;
[0053]
uncompress:解压函数,将中的x解压成群中的点(x,y)。
[0054]
kdf(
·
):密钥派生函数;
[0055]
集合{1,2,...,n}中与元素n互素的元素构成的集合;
[0056]
t:区块链上发布的交易的内容;
[0057]
ta:a在区块链上发布的交易的内容;
[0058]
tb:b在区块链上发布的交易的内容;
[0059]
(ra,sa):a对交易ta的签名;
[0060]
(rb,sb):b对交易tb的签名;
[0061]
d:用户私钥;
[0062]
k:用户在签名时选取的随机数;
[0063]
会话密钥;
[0064]
在本实施例中,优选的,初始化setup算法,具体为:
[0065]
输入安全参数λ,随机选取大素数q,确定非奇异椭圆曲线
[0066]
e:y2=x3+ax+b(mod q),其中,
[0067]
在e包含无穷远点的所有点中选取素数n阶循环群以及生成元
[0068]
选取安全哈希函数零知识证明函数zkp、零知识证明验证函数verzkp、解压函数uncompress和密钥派生函数kdf;
[0069]
算法输出系统参数:
[0070][0071]
在本实施例中,优选的,kgen,具体为:输入系统参数pp,随机选取计算p=dg,算法输出用户的私钥sk=d、公钥pk=p。
[0072]
在本实施例中,优选的,txsign,具体为:
[0073]
输入系统参数pp、用户私钥sk=d和交易内容t.随机选取输入系统参数pp、用户私钥sk=d和交易内容t.随机选取计算k=kg=(xk,yk)、和r=(e+xk)(mod n);
[0074]
若r=0或r+k=n,则重新选取k再计算,否则计算s=(1+d)-1
(k-rd)(mod n);若s≠0,则输出交易内容t和签名σ=(r,s)。
[0075]
在本实施例中,优选的,密钥协商,具体为:协议输入系统参数pp,用户a和b在区块链上分别发布的交易以及签名ta、(ra,sa)和tb、(rb,sb)。a和b采非交互式密钥协商或交互式密钥协商完成密钥协商。
[0076]
进一步的,所述非交互式密钥协商具体为:
[0077]
1)a计算ka=sa(1+da)+rada(mod n)、n)、计算会话密钥
[0078]
2)b计算kb=sb(1+db)+rbdb(mod n)、n)、计算会话密钥
[0079]
在本实施例中,优选的,交互式密钥协商,具体为:
[0080]
1)a计算ka=sa(1+da)+rada(mod n)、n)、qa=kag=(xa,ya)、和若则否则随机选取wa∈[1,n-1],计算wa=wag。最后将(wa,πa=zkp(wa,g,
wa))发送给b;
[0081]
2)b调用verzkp(wa,g,πa)验证πa的有效性后,计算kb=sb(1+db)+rbdb(mod n)、qb=kbg=(xb,yb)、)、若则否则随机选取wb∈[1,n-1],计算wb=wbg;将(wb,πb=zkp(wb,g,wb))发送给a;计算最后计算会话密钥
[0082]
3)a调用verzkp(wb,g,πb)验证πb的有效性后,计算最后计算会话密钥最后计算会话密钥
[0083]
在本实施例中,交易验证txverify,具体为:算法输入系统参数pp、用户公钥pk=p、交易内容t和待验证交易签名σ=(r,s),若则输出0,否则计算t=r+s(mod n)。若t=0,则输出0,否则计算k
′
=sg+tp=(x
′k,y
′k)和r
′
=(e
′
+x
′k)(mod n)。若r
′
=r,则输出1表示交易有效,否则输出0表示无效。
[0084]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0085]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0086]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0087]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0088]
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。
技术特征:
1.一种基于国产区块链的匿名密钥协商方法,提供一系统包括用户a、用户b和区块链,其特征在于,包括以下步骤:步骤s1:区块链调用初始化setup算法确定系统参数pp,将系统参数pp分享给其他实体;步骤s2:用户a和b分别调用kgen产生公私钥对(pk
a
,sk
a
)和(pk
b
,sk
b
);步骤s3:用户a和b分别在区块链上发布交易内容t
a
、t
b
,a和b分别利用私钥调用txsign计算交易内容的签名(r
a
,s
a
)、(r
b
,s
b
);步骤s4:交易t
a
、t
b
及其签名上链后,用户a和b利用签名信息执行密钥协商协议,计算出会话密钥,完成密钥协商。2.根据权利要求1所述的基于国产区块链的匿名密钥协商方法,其特征在于,所述初始化setup算法,具体为:输入安全参数λ,随机选取大素数q,确定非奇异椭圆曲线e:y2=x3+ax+b(mod q),其中,在e包含无穷远点的所有点中选取素数n阶循环群以及生成元选取安全哈希函数零知识证明函数zkp、零知识证明验证函数verzkp、解压函数uncompress和密钥派生函数kdf;算法输出系统参数:3.根据权利要求1所述的基于国产区块链的匿名密钥协商方法,其特征在于,所述kgen,具体为:输入系统参数pp,随机选取计算p=dg,算法输出用户的私钥sk=d、公钥pk=p。4.根据权利要求1所述的基于国产区块链的匿名密钥协商方法,其特征在于,所述txsign,具体为:输入系统参数pp、用户私钥sk=d和交易内容t.随机选取内容t.随机选取计算k=kg=(x
k
,y
k
)、和r=(e+x
k
)(mod n);若r=0或r+k=n,则重新选取k再计算,否则计算s=(1+d)-1
(k-rd)(mod n);若s≠0,则输出交易内容t和签名σ=(r,s)。5.根据权利要求1所述的基于国产区块链的匿名密钥协商方法,其特征在于,所述密钥协商,具体为:协议输入系统参数pp,用户a和b在区块链上分别发布的交易以及签名t
a
、(r
a
,s
a
)和t
b
、(r
b
,s
b
)。a和b采取非交互式密钥协商或交互式密钥协商完成密钥协商。6.根据权利要求5所述的基于国产区块链的匿名密钥协商方法,其特征在于,所述非交互式密钥协商具体为:1)a计算k
a
=s
a
(1+d
a
)+r
a
d
a
(mod n)、n)、n)、计算会话密钥2)b计算k
b
=s
b
(1+d
b
)+r
b
d
b
(mod n)、n)、n)、计算会话
密钥7.根据权利要求5所述的基于国产区块链的匿名密钥协商方法,其特征在于,所述交互式密钥协商,具体为:a和b执行以下交互:1)a计算k
a
=s
a
(1+d
a
)+r
a
d
a
(mod n)、n)、和若则否则否则随机选取w
a
∈[1,n-1],计算w
a
=w
a
g。最后将(w
a
,π
a
=zkp(w
a
,g,w
a
))发送给b;2)b调用verzkp(w
a
,g,π
a
)验证π
a
的有效性后,计算k
b
=s
b
(1+d
b
)+r
b
d
b
(mod n)、n)、若则否则随机选取w
b
∈[1,n-1],计算w
b
=w
b
g;将(w
b
,π
b
=zkp(w
b
,g,w
b
))发送给a;计算最后计算会话密钥最后计算会话密钥3)a调用verzkp(w
b
,g,π
b
)验证π
b
的有效性后,计算的有效性后,计算最后计算会话密钥
技术总结
本发明涉及一种基于国产区块链的匿名密钥协商方法,提供一系统包括用户A、用户B和区块链,包括以下步骤:步骤S1:区块链调用初始化Setup算法确定系统参数,将系统参数分享给其他实体;步骤S2:用户A和B分别调用KGen产生公私钥对;步骤S3:用户A和B分别在区块链上发布交易内容,A和B分别利用私钥调用TxSign计算交易内容的签名;步骤S4:交易内容及其签名上链后,用户A和B利用签名信息执行密钥协商协议,计算出会话密钥,完成密钥协商。本发明能够实现国产区块链交易后的端对端匿名通信,在保证区块链中用户匿名性的同时完成密钥协商,保障交易后的安全通信。交易后的安全通信。交易后的安全通信。
技术研发人员:林超 黄佩达 黄欣沂 何德彪 宁建廷
受保护的技术使用者:福建师范大学
技术研发日:2021.12.03
技术公布日:2022/3/8