一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

区块链上基于身份的环签密方法与流程

2021-11-24 21:23:00 来源:中国专利 TAG:


1.本发明属于网络信息安全技术领域,具体涉及到公钥密码体制、区块链技术和基于身份的环签密方法。


背景技术:

2.在基于身份的环签密技术领域中,真实的签密者能任意选择n

1个成员的身份,加上其自己的身份构成一个群,然后利用群中成员的公钥和自己的私钥,代表整个群,可认证的对消息进行加密。实现了签密者身份的完全匿名。
3.区块链技术是一种基于链式数据结构的分布式共享账本技术,记录了链上所有用户的交易和身份等信息,具有公开透明、不可篡改、去中心化等特点。但在区块链系统提供了灵活的分布式协同处理优势的同时,也对防止个人隐私泄露提出了巨大的挑战。由于对记录在区块链上的数据是公开透明、无法更改与删除,若个人隐私被泄露,用户将无法采取措施进行补救。因此必须提前制定方案来保护区块链上的隐私信息,传统的环签密方法无法实现这一技术。


技术实现要素:

4.本发明所要解决的技术问题在于克服上述现有技术的缺点,提供一种方法简单、计算复杂度低、安全性好的区块链上基于身份的环签密方法。
5.解决上述技术问题所采用的技术方案由下述步骤组成:
6.a、分配节点
7.真实签密者id
s
按以下方法分配区块链节点:
8.k={id
j
|j=1,2,

,m}
9.ω={id
i
|i=1,2,

,n}
10.式中,id
j
表示集合k中节点的身份,id
i
表示集合ω中节点的身份,k是由真实签密者id
s
随机选取的区块链节点的集合,m是集合k中成员的个数,m为有限正整数,ω是由真实签密者id
s
随机选取的n

1个区块链节点组成的集合,n是集合ω中成员的个数,n为有限正整数,集合ω与集合k中节点不能重复。
11.b、系统初始化
12.(b1)多私钥生成中心公开全局参数
13.按下式确定全局参数l:
[0014][0015][0016]
h1:{0,1}
*

g1[0017]
h2:g2→
{0,1}
l
[0018]
[0019]
其中k是安全参数、为有限的正整数,q是一个k比特的大素数,是双线性映射,g1和g2分别是q阶循环加法群和循环乘法群,p是群g1的一个生成元,h1、h2、h3是三个安全的哈希函数,l是消息长度,是有限域{1,2,

,q

1},{0,1}
*
是由0和1组成的任意长度的身份,{0,1}
l
是由0和1组成的长度为l的消息。
[0020]
(b2)多私钥生成中心确定公钥y
j
[0021]
多私钥生成中心按下式确定公钥y
j

[0022]
y
j
=x
j
p
[0023]
式中x
j
为多私钥生成中心从有限域中随机选择的一个正整数。
[0024]
(b3)多私钥生成中心确定密钥对集合u:
[0025]
u={k
j
|j=1,2,

,m}
[0026]
式中k
j
包括第j个节点的公钥y
j
和私钥x
j

[0027]
(b4)多私钥生成中心按下式确定系统公钥y:
[0028][0029]
c、生成用户密钥
[0030]
(c1)用户确定公钥q
i
和公钥q
r

[0031]
q
i
=h1(id
i
)
[0032]
q
r
=h1(id
r
)
[0033]
式中,id
i
为环中某个成员的身份,id
r
为接收者身份。
[0034]
(c2)确定签密者私钥
[0035]
多私钥生成中心按下式为真实签密者id
s
确定对应的私钥s
sj

[0036]
s
sj
=q
s
x
j
[0037]
式中q
s
是真实签密者的公钥,q
s
∈{q1,q2,...,q
n
}。
[0038]
(c3)确定接收者私钥
[0039]
多私钥生成中心按下式为接收者id
r
确定对应的私钥s
rj

[0040]
s
rj
=q
r
x
j

[0041]
d、基于身份的环签密
[0042]
(d1)真实签密者id
s
随机选取确定参数r和参数r
c

[0043]
r=k
·
p
[0044][0045]
(d2)真实签密者id
s
按下式确定部分密文c:
[0046][0047]
式中m是长度为l的消息。
[0048]
(d3)真实签密者id
s
确定哈希值按下式确定哈希值h
i

[0049]
h
i
=h3(m||id
i
||u
i
||r
c
)
[0050]
式中u
i
是真实签密者id
s
随机选取的n

1个参数,u
i
∈g1,i∈{1,2,

,n},i≠s。
[0051]
(d4)真实签密者id
s
确定参数u
s
和哈希值h
s

[0052][0053]
h
s
=h3(m||id
s
||u
s
||r
c
);
[0054]
式中t为真实签密者id
s
从有限域中随机选择的一个正整数。
[0055]
(d5)真实签密者id
s
按下式确定部分密文v:
[0056][0057]
(d6)真实签密者id
s
将密文δ发送给拥有身份id
r
的接收者:
[0058][0059]
式中表示u1,u2,...,u
n
的并集。
[0060]
e、解签密
[0061]
(e1)接收者id
r
收到密文δ后,确定参数r
c


[0062][0063]
(e2)接收者id
r
确定解密后的消息m


[0064][0065]
(e3)接收者id
r
确定哈希值h
i

[0066]
h
i
=h3(m

||id
i
||u
i
||r
c

)
[0067]
(e4)接收者id
r
确定验证参数t和验证参数z:
[0068][0069][0070]
(e5)如果t=z,则解密后的消息m

是一个有效的明文;否则,说明δ是无效密文。
[0071]
本发明的a分配节点步骤为:
[0072]
真实签密者id
s
按以下方法分配区块链节点:
[0073]
k={id
j
|j=1,2,

,m}
[0074]
ω={id
i
|i=1,2,...,n}
[0075]
式中,id
j
表示集合k中节点的身份,id
i
表示集合ω中节点的身份,k是由真实签密者id
s
随机选取的区块链节点的集合,m是集合k中成员的个数,m为[5,10],ω是由真实签密者id
s
随机选取的n

1个区块链节点组成的集合,n是集合ω中成员的个数,n为[10,50],集合ω与集合k中节点不能重复。
[0076]
本发明的b系统初始化的(b3)多私钥生成中心确定密钥对集合u为:
[0077]
u={k
j
|j=1,2,

,m}
[0078]
式中k
j
包括第j个节点的公钥y
j
和私钥x
j
,m是集合k中成员的个数,m取值为[5,10]。
[0079]
在本发明的b系统初始化步骤中,所述的(b4)多私钥生成中心按下式确定系统公钥y:
[0080]
[0081]
式中m是集合k中成员的个数,m取值为[5,10]。
[0082]
本发明的c生成用户密钥步骤为:
[0083]
(c1)用户确定公钥q
i
和公钥q
r

[0084]
q
i
=h1(id
i
)
[0085]
q
r
=h1(id
r
)
[0086]
式中,id
i
为环中某个成员的身份,id
r
为接收者身份,i取值为[1,50]。
[0087]
(c2)确定签密者私钥
[0088]
多私钥生成中心按下式为真实签密者id
s
确定对应的私钥s
sj

[0089]
s
sj
=q
s
x
j
[0090]
式中q
s
是真实签密者的公钥,q
s
∈{q1,q2,...,q
n
},j取值为[5,10]。
[0091]
(c3)确定接收者私钥
[0092]
多私钥生成中心按下式为接收者id
r
确定对应的私钥s
rj

[0093]
s
rj
=q
r
x
j

[0094]
由于本发明在区块链上使用了基于身份的环签密方法,利用智能合约技术为区块链中的不同节点分配不同的技术方案来构建环签密,保护了用户身份隐私,解决了传统公钥方法不能应用在区块链上的技术问题;在区块链上基于身份的环签密方法中,实现了去除可信化中心,简化了运算步骤,提高了安全性。本发明具有方法简单、计算复杂度低、安全性好等优点,在网络信息安全技术领域具有很好的应用前景。
附图说明
[0095]
图1是本发明实施例1的流程图。
具体实施方式
[0096]
下面结合附图和实施例对本发明进一步详细说明,但本发明不限于下述的实施方式。
[0097]
实施例1
[0098]
以从多私钥生成中心选择的大素数q,q为2
192
‑264

1为例,本实施例的区块链上基于身份的环签密方法步骤如下(如图1所示):
[0099]
a、分配节点
[0100]
真实签密者id
s
按以下方法分配区块链节点:
[0101]
k={id
j
|j=1,2,

,m}
[0102]
ω={id
i
|i=1,2,...,n}
[0103]
式中,id
j
表示集合k中节点的身份,id
i
表示集合ω中节点的身份,k是由真实签密者id
s
随机选取的区块链节点的集合,m是集合k中成员的个数,m为[5,10],本实施例的m取值为8,ω是由真实签密者id
s
随机选取的n

1个区块链节点组成的集合,n是集合ω中成员的个数,n为[10,50],本实施例的n取值为30,集合ω与集合k中节点不能重复。
[0104]
b、系统初始化
[0105]
(b1)多私钥生成中心公开全局参数
[0106]
按下式确定全局参数l:
[0107][0108][0109]
h1:{0,1}
*

g1[0110]
h2:g2→
{0,1}
l
[0111][0112]
其中k是安全参数、为有限的正整数,q是一个2
k
的大素数,本实施例采用q为2
192
‑264

1,是双线性映射,g1和g2分别是q阶循环加法群和循环乘法群,p是群g1的一个生成元,h1、h2、h3是三个安全的哈希函数,l是消息长度,是有限域{1,2,...,2
192
‑264

2},{0,1}
*
是由0和1组成的任意长度的身份,{0,1}
l
是由0和1组成的长度为l的消息;
[0113]
(b2)多私钥生成中心按下式确定公钥y
j

[0114]
y
j
=x
j
p
[0115]
式中x
j
为多私钥生成中心从有限域中随机选择的一个正整数,是有限域{1,2,...,2
192
‑264

2};
[0116]
(b3)多私钥生成中心确定密钥对集合u:
[0117]
u={k
j
|j=1,2,

,m}
[0118]
式中k
j
包括第j个节点的公钥y
j
和私钥x
j
;m是集合k中成员的个数,m为[5,10],本实施例的m取值为8。
[0119]
(b4)多私钥生成中心确定系统公钥y:
[0120][0121]
式中m为[5,10],本实施例的m取值为8。
[0122]
c、生成用户密钥
[0123]
(c1)多私钥生成中心确定公钥q
i
和公钥q
r

[0124]
q
i
=h1(id
i
)
[0125]
q
r
=h1(id
r
)
[0126]
式中,id
i
为环中某个成员的身份,id
r
为接收者身份,i∈{1,2,...,n},n为[10,50],即i∈{1,2,...,50},本实施例的i∈{1,2,...,30};
[0127]
(c2)确定签密者私钥
[0128]
多私钥生成中心按下式为真实签密者id
s
确定对应的私钥s
sj

[0129]
s
sj
=q
s
x
j
[0130]
式中,q
s
是真实签密者的公钥,q
s
∈{q1,q2,...,q
n
},j∈{1,2,...,m},m为[5,10],即,j∈{1,2,...,10},本实施例的j∈{1,2,...,8},m取值为8;
[0131]
(c3)确定接收者私钥
[0132]
多私钥生成中心按下式为接收者id
r
确定对应的私钥s
rj

[0133]
s
rj
=q
r
x
j

[0134]
d、基于身份的环签密
[0135]
(d1)确定参数r和参数r
c

[0136]
r=k
·
p
[0137][0138]
式中k为真实签密者id
s
随机选取的参数,随机选取的参数,是有限域{1,2,...,2
192
‑264

2};
[0139]
(d2)确定部分密文
[0140]
按下式确定部分密文c:
[0141][0142]
式中m是长度为l的消息;
[0143]
(d3)确定哈希值
[0144]
按下式确定哈希值h
i

[0145]
h
i
=h3(m||id
i
||u
i
||r
c
)
[0146]
式中u
i
是真实签密者id
s
随机选取的n

1个参数,u
i
∈g1,i∈{1,2,

,n},i≠s;
[0147]
(d4)确定参数u
s
和哈希值h
s

[0148][0149]
h
s
=h3(m||id
s
||u
s
||r
c
)
[0150]
式中t为真实签密者id
s
,从有限域中随机选择的一个正整数,是有限域{1,2,...,2
192
‑264

2};
[0151]
(d5)确定部分密文
[0152]
真实签密者id
s
按下式确定部分密文v:
[0153][0154]
(d6)发送密文
[0155]
真实签密者id
s
将密文δ发送给拥有身份id
r
的接收者:
[0156][0157]
式中表示u1,u2,

,u
n
的并集;
[0158]
e、解签密
[0159]
(e1)接收者id
r
收到密文δ后,确定参数r
c


[0160][0161]
(e2)确定解密后的消息m


[0162][0163]
(e3)接收者id
r
确定哈希值h
i

[0164]
h
i
=h3(m

||id
i
||u
i
||r
c

)
[0165]
(e4)接收者id
r
确定验证参数t和验证参数z:
[0166]
[0167][0168]
(e5)如果t=z,则解密后的消息m

是一个有效的消息;否则,认为密文δ是无效密文。
[0169]
完成区块链上基于身份的环签密。
[0170]
实施例2
[0171]
以从多私钥生成中心选择的大素数q,q为2
192
‑264

1为例,本实施例的区块链上基于身份的环签密方法步骤如下:
[0172]
a、分配节点
[0173]
真实签密者id
s
按以下方法分配区块链节点:
[0174]
k={id
j
|j=1,2,

,m}
[0175]
ω={id
i
|i=1,2,...,n}
[0176]
式中,id
j
表示集合k中节点的身份,id
i
表示集合ω中节点的身份,k是由真实签密者id
s
随机选取的区块链节点的集合,m是集合k中成员的个数,m为[5,10],本实施例的m取值为5,ω是由真实签密者id
s
随机选取的n

1个区块链节点组成的集合,n是集合ω中成员的个数,n为[10,50],本实施例的n取值为10,集合ω与集合k中节点不能重复。
[0177]
b、系统初始化
[0178]
(b1)多私钥生成中心公开全局参数
[0179]
该步骤与实施例1相同。
[0180]
(b2)确定公钥y
j
[0181]
该步骤与实施例1相同。
[0182]
(b3)多私钥生成中心确定密钥对集合u
[0183]
多私钥生成中心按下式确定密钥对集合u:
[0184]
u={k
j
|j=1,2,

,m}
[0185]
式中k
j
包括第j个节点的公钥y
j
和私钥x
j
,m是集合k中成员的个数,m为[5,10],本实施例的m取值为5。
[0186]
(b4)多私钥生成中心确定系统公钥y:
[0187][0188]
式中m为[5,10],本实施例的m取值为5。
[0189]
c、生成用户密钥
[0190]
(c1)多私钥生成中心确定公钥q
i
和公钥q
r

[0191]
q
i
=h1(id
i
)
[0192]
q
r
=h1(id
r
)
[0193]
式中,id
i
为环中某个成员的身份,id
r
为接收者身份,i∈{1,2,...,n},n为[10,50],即i∈{1,2,...,50},本实施例的i∈{1,2,...,10};
[0194]
(c2)确定签密者私钥
[0195]
多私钥生成中心按下式为真实签密者id
s
确定对应的私钥s
sj

[0196]
s
sj
=q
s
x
j
[0197]
式中,q
s
是真实签密者的公钥,q
s
∈q
i
,j∈{1,2,

,m},m为[5,10],即,j∈{1,
2,...,10},本实施例的j∈{1,2,...,5},m取值为5;
[0198]
(c3)确定接收者私钥
[0199]
该步骤与实施例1相同。
[0200]
其它步骤与实施例1相同。完成区块链上基于身份的环签密。
[0201]
实施例3
[0202]
以多私钥生成中心选择的大素数q,q为2
192
‑264

1为例,本实施例的区块链上基于身份的环签密方法步骤如下:
[0203]
a、分配节点
[0204]
真实签密者id
s
按以下方法分配区块链节点:
[0205]
k={id
j
|j=1,2,

,m}
[0206]
ω={id
i
|i=1,2,...,n}
[0207]
式中,id
j
表示集合k中节点的身份,id
i
表示集合ω中节点的身份,k是由真实签密者id
s
随机选取的区块链节点的集合,m是集合k中成员的个数,m为[5,10],本实施例的m取值为10,ω是由真实签密者id
s
随机选取的n

1个区块链节点组成的集合,n是集合ω中成员的个数,n为[10,50],本实施例的n取值为50,集合ω与集合k中节点不能重复。
[0208]
b、系统初始化
[0209]
(b1)多私钥生成中心公开全局参数
[0210]
该步骤与实施例1相同。
[0211]
(b2)多私钥生成中心确定公钥y
j

[0212]
该步骤与实施例1相同。
[0213]
(b3)多私钥生成中心确定密钥对集合u:
[0214]
多私钥生成中心按下式确定密钥对集合u:
[0215]
u={k
j
|j=1,2,

,m}
[0216]
式中k
j
包括第j个节点的公钥y
j
和私钥x
j
;m是集合k中成员的个数,m为[5,10],本实施例的m取值为10。
[0217]
(b4)多私钥生成中心确定系统公钥y:
[0218][0219]
式中m为[5,10],本实施例的m取值为10。
[0220]
c、生成用户密钥
[0221]
(c1)多私钥生成中心确定公钥q
i
和公钥q
r

[0222]
q
i
=h1(id
i
)
[0223]
q
r
=h1(id
r
)
[0224]
式中,id
i
为环中某个成员的身份,id
r
为接收者身份,i∈{1,2,...,n},n为[10,50],即i∈{1,2,...,50},本实施例的i∈{1,2,...,50}。
[0225]
(c2)确定签密者私钥
[0226]
多私钥生成中心按下式为真实签密者id
s
确定对应的私钥s
sj

[0227]
s
sj
=q
s
x
j
[0228]
式中,q
s
是真实签密者的公钥,q
s
∈{q1,q2,...,q
n
},j∈{1,2,...,m},m为[5,10],
即,j∈{1,2,...,10},本实施例的j∈{1,2,...,10},m取值为10。
[0229]
(c3)确定接收者私钥
[0230]
该步骤与实施例1相同。
[0231]
其它步骤与实施例1相同。完成区块链上基于身份的环签密。
[0232]
为了验证本方案的有益效果,发明人采用本发明实例1的区块链上基于身份的环签密方法与专利号为cn201910255191.2(简称对比实验1)、cn201510289137.8(简称对比实验2)的中国专利进行了对比仿真实验,实验分别为特征比较、计算时间、签密或签名时间比较,实验结果见表1、表2、表3。
[0233]
表1特征比较
[0234]
实验组别是否满足不可伪造性是满足否机密性是否适合区块链对比实验1是是否对比实验2是是否本发明是是是
[0235]
由表1可见,本发明与对比实验相比,不仅满足不可伪造性和机密性,还可适用于区块链,为区块链系统在保护用户隐私提供了技术支撑。
[0236]
表2计算时间
[0237]
操作符号执行操作所需时间(ms)t
h
一次哈希运算11.71t
ec
一次指数运算5.00t
mul
一次标量乘法运算0.03t
bp
一次双线性对运算15.23
[0238]
由表2可见,主要的密码操作在系统中的计算时间。仿真计算是通过在vc 6.0软件中使用c程序设计语言、调用pbc库,对方案中的运算进行仿真分析,在仿真时主要关注了哈希、双线性对、指数操作等耗时比较高的运算。
[0239]
在实施例1中,n表示环签密中的环成员个数,n为30,结合表2的所述时间,可以得出对比实验1、对比实验2、本发明的计算时间。
[0240]
对比实验1环签密的计算时间方式为:(n 1)t
h
t
bp
(3n 1)t
mul

[0241]
对比实验2环签密的计算时间方式为:(2n 3)t
h
t
bp
(2n 1)t
mul

[0242]
本发明环签密的计算时间方式为:(n 1)t
h
t
bp
nt
mul

[0243]
对比实验1解签密的计算时间方式为:(n 1)t
h
(2n 2)t
bp

[0244]
对比实验2解签密的计算时间方式为:(n 3)t
h
6t
bp
t
ec

[0245]
本发明解签密的计算时间方式为:(n 1)t
h
3t
bp

[0246]
对比实验1环签密与解签密的总计算时间方式为:2(n 1)t
h
(2n 3)t
bp
(3n 1)t
mul

[0247]
对比实验2环签密与解签密的总计算时间方式为:3(n 2)t
h
7t
bp
t
ec
(2n 1)t
mul

[0248]
本发明环签密与解签密的总计算时间方式为:2(n 1)t
h
4t
bp
nt
mul

[0249]
表3环签密与解签密时间比较
[0250][0251]
由表3可见,本发明在签密过程中所用时间比其他两个方法更少,在验证阶段,本发明也具有相对较少的计算时间。通过对签密与解签密的总计算时间来看,本发明相对其他两个对比实验,计算效率明显提高。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献