一种前向安全群签名代理方法及系统
未命名
08-14
阅读:68
评论:0
1.本发明涉及网络信息安全技术领域,尤其涉及一种前向安全群签名代理方法及系统。
背景技术:
2.目前,随着国际化的发展以及信息的孤岛化,合作的开展形式逐渐从“单节点”至“多节点”。“多节点”化的合作可以有效打破信息壁垒,促进跨组织间合作。第三代区块链,即联盟链,可以传递信任,有效构建多组织合作。同时,将区块链技术和密码学相结合可以有效的保护各组织的隐私信息,使得组织间的合作可以在匿名的情况下保有安全性。例如,采用群签名技术,既可以在匿名的情况下进行合作,又可以在出现问题时揭露成员身份。
3.群签名技术使所有群成员都可以代表整个群组匿名地对消息进行签名。群签名的合法性通过群组的公开参数进行验证;验证时无法确定签名人的身份;只有群管理员可以在必要时透露签名者的身份。目前群签名作为数字签名的一个重要分支,在保护交易隐私上有着天然的优势。现有技术中,在群签名验证签名时通常使用中国剩余定理,但是中国剩余定理由于存在恒量pi会带来的行为特征隐私泄露的问题,安全性有待提高。此外,还存在着在成员大规模加入和撤销时效率较低的问题,因此如何设计高效可撤销的群签名是一大难点。
技术实现要素:
4.本发明旨在至少解决现有技术中存在的技术问题,提供一种前向安全群签名代理方法及系统。
5.为了实现本发明的上述目的,根据本发明的第一个方面,本发明提供了一种前向安全群签名代理方法,包括:群管理员初始化素数组p=(p1,p2,
…
,pn),n表示成员数量,n为大于等于2的整数,将素数pi分发给对应的成员ui,i∈[1,n];成员基于分得的素数和安全时间初始化密钥并生成哈希公钥,成员将哈希公钥和身份信息发送至群管理员;成员在时间片演化自身密钥;群管理员基于所有成员的哈希公钥计算并发布公共参数;成员计算消息的签名并将签名元组发送给群管理员;群管理员验证成员发送的签名元组,验证通过后进行代理签名。
[0006]
为了实现本发明的上述目的,根据本发明的第二个方面,本发明提供了群签名系统,包括n个成员的电子设备,n个成员组成群,n为大于等于2的正整数,选择一个成员作为群管理员,群中成员通过自身电子设备执行本发明第一方面所述的前向安全群签名代理方法。
[0007]
本发明的有益技术效果为:极大地提高了行为特征隐私的保护能力,使用群管理员代理签名机制,由群管理员验证群组成员签名的合法性以及代表群成员签名消息,克服了中国剩余定理在每次验证签名时,由于存在恒量pi带来的行为特征隐私泄露问题;具有前向安全性,基于密钥演化,在每个时间片动态更新密钥而不需要改变群组公共参数。保证
了即使时间片的密钥泄露,攻击者也无法伪造该时间片前的签名信息。
附图说明
[0008]
图1是本发明一种实施例中前向安全群签名代理方法的流程示意图;
[0009]
图2是本发明前向安全群签名代理方法一种应用场景中的流程意图。
具体实施方式
[0010]
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
[0011]
在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0012]
在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
[0013]
本发明公开了一种前向安全群签名代理方法,在一种实施例中,如图1所示,包括:
[0014]
步骤s1,群管理员初始化素数组p=(p1,p2,
…
,pn),n表示成员数量,n为大于等于2的整数,将素数pi分发给对应的成员ui,i∈[1,n]。
[0015]
需要说明的是,群管理员为群内某个成员,群管理员和成员之间通过其自身的电子设备通信和算法运算,电子设备优选但不限于为计算机或终端设备。
[0016]
步骤s2,成员基于分得的素数和安全时间初始化密钥并生成哈希公钥,成员将哈希公钥和身份信息发送至群管理员。成员之间的安全时间可以不完全相同,允许相互之间存在差异。
[0017]
步骤s3,成员在时间片演化自身密钥。
[0018]
步骤s4,群管理员基于所有成员的哈希公钥计算并发布公共参数;
[0019]
步骤s5,成员计算消息的签名并将签名元组发送给群管理员;
[0020]
步骤s6,群管理员验证成员发送的签名元组,验证通过后进行代理签名。
[0021]
在另一种实施例中,步骤s2中,对于成员i包括:
[0022]
初始化密钥步骤:设成员i的安全时间为n0为大于等于2的整数,层数n的初始值为n0,成员i获取第一随机数作为第一随机变量r的初始值,调用乘方案密钥生成函数keygen
mul
(pi,rn,n)获得成员i的乘方案密钥对(sk
mul
,pk
mul
)。rn表示第一随机变量r在第n层的值。成员i保存获得的乘方案密钥对,sk
mul
表示乘方案私钥,pk
mul
表示乘方案公钥。
[0023]
keygen
mul
(pi,rn,n)执行过程包括步骤a到步骤c:
[0024]
步骤a,通过(r
0,n
,r
i,n
)=g(rn)和(r
′
1,n
,r
″
1,n
)=g(r
1,n
)获取第二随机变量r0、第三随机变量r1、第四随机变量ri′
和第五随机变量ri″
分别在第n层的数值r
0,n
、r
1,n
、r
′
1,n
和r
″
1,n
,其中,g()表示倍长伪随机数生成器。
[0025]
步骤b,对于第n层的第一安全时间子段t0=2调用加方案密钥生成函数keygen
add
(pi,r
0,n
)获得第n层左侧密钥对(sk
add,0,n
,pk
add,0,n
)。
[0026]
步骤c,若n-1=1,对于第n层的第二安全时间子段t1=2
n-1
调用加方案密钥生成函数keygen
add
(pi,r
′
1,n
)获得第n层右侧密钥对(sk
add,1,n
,pk
add,l,n
),计算第n层第一中间签名σ
add,n
:σ
add,n
=sign
add
(0,sk
add,0,n
,pk
add,1,n
),第n层乘方案私钥sk
mul
=(sk
add,0,n
,sk
add,1,n
,r
″
1,n
),第n层乘方案公钥pk
mul
=(pk
add,0,n
,pk
add,1,n
,σ
add,n
);sign
add
()表示加方案签名函数;
[0027]
若n-1>1,对于第n层的第二安全时间子段t1=2
n-1
递归调用乘方案密钥生成函数keygen
mul
(pi,r
′
1,n
,n-1)生成密钥对(sk
mul,1,n
,pk
mul,n
)作为第n层右侧密钥对,计算第n层第一中间签名σ
add,n
:σ
add,n
=sign
add
(0,sk
add,0,n
,pk
mul,1,n
),第n层乘方案私钥sk
mul
=(sk
add,0,n
,sk
mul,n
,r
″
1,n
),第n层乘方案公钥pk
mul
=(pk
add,0,n
,pk
mul,1,n
,σ
add,n
)。
[0028]
哈希公钥获取步骤:基于第i个成员的第n0层左侧密钥对获取第i个成员的哈希公钥hpk
add,i
的过程为:hpk
add,i
=hash(pk
base,0
||pk
base,1
),pk
base,0
和pk
base,1
分别表示通过调用加方案密钥生成函数获得第一时间片公钥和第二时间片公钥,pk
base,0
和pk
base,1
取自
[0029]
其中,加方案密钥生成函数表示为keygen
add
(p
add
,r
add
),r
add
表示输入加方案密钥生成函数的随机参数,p
add
表示输入加方案密钥生成函数的成员分得的素数,加方案密钥生成函数keygen
add
(p
add
,r
add
)具体执行:
[0030]
基于(r
0,add
,r
1,add
)=g(r
add
)获取第一加方案中间随机参数r
0,add
和第二加方案中间随机参数r
1,add
;
[0031]
将r
0,add
和p
add
代入基础方案密钥生成函数keygen
base
(p
add
,r
0,add
)获得第一时间片密钥对(sk
base,0
,pk
base,0
);
[0032]
将r
1,add
和p
add
代入基础方案密钥生成函数keygen
base
(p
add
,r
1,add
)获得第二时间片密钥对(sk
base,1
,pk
base,1
);
[0033]
加方案私钥为sk
add
=(sk
base,0
,sk
base,1
);加方案公钥为pk
add
=(pk
base,0
,pk
base,1
,hpk
add
);hpk
add
表示哈希公钥,hpk
add
=hash(pk
base,0
||pk
base,1
)。
[0034]
其中,基础方案密钥生成函数表示为keygen
base
(p
base
,r
base
),r
base
表示输入基础方案密钥生成函数的随机数,p
base
表示输入基础方案密钥生成函数的成员分得的素数,keygen
base
(p
base
,r
base
)执行:
[0035]
生成基础方案私钥sk
base
=r
base
,生成基础方案公钥g表示素数组的共同生成元。
[0036]
在另一种实施例中,步骤s3,成员在时间片演化自身密钥,包括:
[0037]
设当前时间时间片为t,成员调用乘方案演变函数update
mul
(t,n)对密钥进行演变,乘方案演变函数update
mul
(t,n)执行:
[0038]
若t+1≠0modt1,进一步地,若n-1=1,右侧密钥生成方案调用加方案演变函数update
add
()进行密钥演变,若n-1>1,右侧密钥生成方案递归调用乘方案演变函数update
mul
(tmodt1,n-1)进行密钥演变;
[0039]
若t+1=0modt1,左侧密钥生成方案调用加方案演变函数update
add
()进行密钥演变,按照公式(r
′
1,n
,r
″
1,n
)=g(r
″
1,n
)更新第四随机变量r1′
和第五随机变量r1″
分别在第n层的数值r
′
1,n
和r
″
1,n
,进一步地,若n-1=1,更新第n层右侧密钥对(sk
add,1,n
,pk
add,l,n
)=keygen
add
(pi,r
′
1,n
),更新第n层第一中间签名σ
add,n
:更新第n层乘方案私钥sk
mul
=(sk
add,0,n
,sk
add
,
1,n
,r
″
1,n
),更新第n层乘方案公钥pk
mul
=(pk
add,0,n
,p
kadd,1,n
,σ
add,n
),若n-1>1,递归调用乘方案密钥生成函数更新第n层右侧密钥对(sk
mul,1,n
,pk
mul,1,n
)=keygen
mul
(pi,r
′
1,n
,n-1),更新第n层第一中间签名σ
add,n
:更新第n层乘方案私钥sk
mul
=(sk
add,0,n
,sk
mul,1,n
,r
″
1,n
),更新第n层乘方案公钥pk
mul
=(pk
add,0,n
,pk
mul,1,n
,σ
add,n
)。
[0040]
其中,加方案密钥演变函数update
adu
()执行过程为:擦除第一时间片密钥对中的私钥sk
base,0
,即令sk
base,0
=0。
[0041]
在另一种实施例中,步骤s4,群管理员基于所有成员的哈希公钥计算并发布公共参数的过程为:设公共参数为c,由群管理员计算公共参数,公共参数满足下面方程式:
[0042]
c=hpk
add,1
mod p1[0043]
c=hpk
add,2
mod p2[0044]
c=hpk
add,n
mod pn[0045]
根据中国剩余定理,该方程的解为其中,第一中间量第i个成员分量为第i个成员的第二中间量ni满足pini=1mod pi。计算完成后发布公共参数c用于群签名验证。在本实施例中,通过中国剩余定理设计的群签名代理签名框架,在匿名的同时,保证了群组操作的高效。
[0046]
在另一种实施例中,步骤s5中,成员计算消息的签名并将签名元组发送给群管理员,包括:
[0047]
成员获取签名步骤:
[0048]
设当前时间片为t,计算成员i的签名σiσi=σ
mul
=(t,σ
add,n
,σ
′
mul,n
,pk
add,0,n
),其中,σ
mul
表示乘方案签名;第n层乘方案签名σ
′
mul,n
=sign
mul
(t,sk
mul
,m,n),乘方案签名函数sign
mul
(t,sk
mul
,m,n)执行:
[0049]
若n-1=1,第n层右侧采用加方案签名函数,调用加方案签名函数计算σ
′
aad,n
=sign
add
(t mod t1,sk
add,1,n
,m||t),将σ
′
add,n
作为第二中间签名,计算加方案签名σ
add
=(t,σ
′
add,n
,pk
base,0
pk
base,1
),返回σ
′
mul,n
=(t,σ
add,
,σ
add
,pk
add,0,n
);
[0050]
若n-1>1,第n层右侧采用乘方案签名函数,递归调用乘方案签名函数计算σ
′
mul,n-1
=sign
mul
(tmodt1,sk
mul,n
,m||t,n-1),将σ
′
mul,n-1
作为第二中间签名,σ
′
mul,n
=(t,σ
add,n
,σ
′
mul,n-1
,pk
add,0,n
);
[0051]
其中,加方案签名函数表示为sign
add
(t,sk
add
,m),t表示签名对应的时间片,sk
add
表示输入加方案签名函数的加方案私钥,m表示信息,sign
add
(t,sk
add
,m)执行:
[0052]
若t=0,基于加方案私钥sk
add
中的第一时间片私钥sk
base,0
调用基础方案签名函数获得中间基础方案签名σ
′
base
=sign
base
(sk
base,0
,m),得到加方案签名σ
add
=(0,σ
′
base
,
p
kbase,0
,pk
base,1
);
[0053]
若t≥1,基于加方案私钥sk
add
中的第二时间片私钥sk
base,1
调用基础方案签名函数获得中间基础方案签名σ
′
base
=sign
base
(sk
base,1
,m),得到加方案签名σ
add
=(t,σ
′
base
,pk
base,0
,pkb
ase,1
);
[0054]
签名元组生成步骤:成员i组建签名元组(m,σi,pi)并发送给群管理员。
[0055]
其中,基础方案签名函数表示为sign
base
(skb
ase
,m),其中,sk
base
表示输入基础方案签名函数的私钥,基础方案签名函数sign
base
(sk
base
,m)操作如下:
[0056]
计算消息哈希值e=hash(m);计算基础签名第一部分s1=gr,计算基础签名第二部分s2=(e*skb
ase-r)mod(p
i-1);获得基础方案签名σ
base
=(s1,s2);g表示素数组的共同生成元;r表示临时随机选取的随机数。
[0057]
在另一种实施例中,步骤s6中,群管理员验证成员发送的签名元组,验证通过后进行代理签名,具体包括:
[0058]
成员签名验证步骤:调用加方案验证函数verify
add
(σ
add,n
,pk
add,0,n
)获得第一验证结果v0;判断(c mod pi)是否与第n层左侧公钥pk
add,0,n
中的哈希公钥hpk
add,0,n
相等得到第二验证结果v1;调用乘方案验证函数verify
mul
(σ
′
mul,n
,m,n)获得第三验证结果v2,若v0、v1和v2均为真,那么签名元组验证成功;
[0059]
代理签名步骤:管理员调用乘方案签名函数生成管理员签名σ
ma
=sign
mul
(t,sk
ma
,m,n),在成员i的签名元组验证成功后群管理员代理成员i签名如下:(m,σ
ma
,p
ma
,hash(m,σi,pi)),其中,sk
ma
表示群管理员的私钥,p
ma
表示群管理员分得的素数,σ
ma
表示群管理员的签名。同时群管理员存储(hash(m,σi,pi),m,σ
ma
,p
ma
)。
[0060]
其中,乘方案验证函数表示为verify
mul
(σ
mul
,m,n),具体操作如下:调用加方案验证函数verify
add
(σ
add,n
,pk
add,0,n
)验证σ
add,n
的正确性;若n-1=1,调用加方案验证函数verify
add
(σ
′
add,n
,pk
ada,1,n
),若n-1>1,递归调用乘方案验证函数verify
mul
(σ
′
mul,n
,m||t,n-1),当σ
add,n
正确且verify
add
(σ
′
add,n
,pk
ada,1,n
)验证通过,或者,当σ
add,n
正确且verify
mul
(σ
′
mul,n
,m||t,n-1)验证通过,认为verify
mul
(σ
mul
,m,n)验证通过。
[0061]
其中,加方案验证函数表示为verify
add
(σ
add
,pk
add
),σ
add
表示输入加方案验证函数的加方案签名函数生成的签名,pk
add
表示输入加方案验证函数的加方案密钥生成函数生成的公钥,verify
add
(c
add
,pk
add
)执行:设当前时间片为t,若pk
add
中的哈希公钥hpk
add
等于hash(pk
base,0
||pk
base,1
),继续执行:若t=0,调用基础方案验证函数,输出验证结果v=verify
base
(pk
base,0
,σ
′
base
,m||t),若t≥1,调用基础方案验证函数输出验证结果v=verify
base
(pkb
ase,1
σ
′
base
,m||t)。
[0062]
其中,基础方案验证函数表示为verify
base
(pk
base
,σ
base
,m),pk
base
表示输入基础方案验证函数的基础方案密钥生成函数生成的公钥,σ
base
表示输入基础方案验证函数的基础方案签名函数生成的签名,verify
base
(pk
base
,σ
base
,m)执行:计算e=hash(m),若成立,则verify
base
(pk
base
,σ
base
,m)验证结果为真,否则verify
base
(pk
base
,σ
base
,m)验证结果为假。
[0063]
在另一种实施例中,还包括身份揭秘步骤:群管理员基于成员的签名元组的哈希值hash(m,σi,pi)获得pi,计算成员i的哈希公钥hpk
add,i
=c mod pi,根据(idi,hpk
add,i
)揭露成员i身份信息并公布(hash(m,σi,pi),m,σi,pi)。
[0064]
在另一种实施例中,当有新成员加入时:群管理员生成并分配一个素数给新成员;新成员基于分得的素数和安全时间初始化密钥并生成哈希公钥,将哈希公钥和身份信息发送至群管理员;群管理员基于当前所有成员的哈希公钥重新计算并发布公共参数。
[0065]
在另一种实施例中,当有成员撤销时,群管理员基于当前所有成员的哈希公钥重新计算并发布公共参数。
[0066]
当有成员加入或成员撤销时需要重新计算一次公共参数c。当有成员加入或成员撤销时需要重新计算一次公共参数c。l为加入或撤销后群组内剩余的成员总数。
[0067]
通过上述实施例可以看到本发明具有群组操作高效性:对于群成员的加入与撤销只需一次计算同余方程组,保证了成员大规模加入与撤销时依旧保持较高的效率。同时同于方程组的计算是简单高效的,可以实现秒级响应。
[0068]
图2展示了前向安全群签名代理方法在具体应用场景的流程示意图,首先输入群成员数量,系统创建素数组、hash函数以及成员进行密钥初始化等,此后,群管理员计算并发布公共参数,最后,在有成员加入或成员撤销时群管理员更新公共参数。为了保护交易双方的身份信息并且提高方案的安全性,发明人提出了前向安全群签名代理方案,包括
[0069]
步骤101:输入数据为初始成员数n。
[0070]
步骤102:群管理员ma初始化p=(p1,p2,...,pn),其中pi为素数,ma也是n个初始成员中的一个。找出p1到pn的共同生成元g。接下来将pi分发给对应的成员ui。
[0071]
步骤103:ui调用keygen
mul
(pi,r,n)生成sk
mul,i
,pk
mul,i
(参考步骤10331)。各个成员将对应的(idi,hpk
add,i
)发送给ma,idi为ui的身份信息。
[0072]
步骤10311:基础方案,当安全时间t=1。密钥生成keygen
base
(pi,r)的具体操作如下:skb
ase
=r,pkb
ase
=grmod pi。r为输入的成员的随机数。返回密钥对(sk
base,
pk
base
)。
[0073]
步骤10312:基础方案签名函数sign
base
(sk
base
,m)的具体操作如下:e=hash(m),s1=gr,s2=(e*sk
base-r)mod(p
i-1),σ
base
=(s1,s2)。返回σ
base
作为签名结果。r为临时随机生成的随机数。
[0074]
步骤10313:验证函数verify
base
(pk
base
,σ
base
,m)的具体操作如下:e=hash(m)。如果返回true,否则返回false。
[0075]
步骤10321:加方案:keygen
add
(pi,r)基于基础方案生成安全时间t=2的方案∑。具体操作如下:(r0,r1)=g(r),(sk
base,0
,pk
base,0
)=keygen
base
(p,r0),(sk
base,1
,pk
base,1
)=keygen
base
(p,r1),hpk
add
=hash(pkb
ase,0
||pk
base,1
),sk
add
=(sk
base,0
,sk
base,1
),pk
add
=(pk
base,0
,pk
base,1
,hpk
add
)。返回密钥对(sk
add
,pk
add
)。其中g为倍长伪随机数生成器。
[0076]
步骤10322:加方案:sign
add
(t,sk
add
,m)的具体操作如下:t=0时,σ
′
base
=sign
base
(sk
base,0
,m),σ
add
=(0,σ
′
base
,pk
base,0
,pk
base,1
)。t≥1时,σ
′
=sign
base
(skb
ase,0
,m),σ
add
=(t,σ
′
base
,pkb
ase,0
,pkb
ase,1
)。返回σ作为签名结果。
[0077]
步骤10323:加方案:verify
add
(σ
add
,pk
add
)的具体操作如下:首先验证hpk
add
是否等于hash(pk
base,0
||pk
base,1
)),不相等则直接返回false,否则进行下一步。当t=0时,v=verify
base
(pk
base,0
,σ
′
base
,m||t),返回v。当t≥1时,v=verify
base
(pk
base,1
σ
′
base
,m||t),返回v。v=verify
base
(pk
base,0
,σ
′
base
,m||t)
[0078]
步骤10324:加方案:update
add
()的具体操作如下:擦除sk
base,0
,令sk
base,0
=0。
[0079]
步骤10331:乘方案:keygen
mul
(pi,r,n)的具体操作如下:(r
0,n
,r
1,n
)=g(r),(r
′
1,n
,r
″
1,n
)=g(r
1,n
),(sk
add
,0
,n
,pk
add
,0
,n
)=keygen
add
(pi,r0)。
[0080]
n为2时,有(sk
add,1,n
,pk
add,1,n
)=keygen
add
(p,r
′1),g
add,n
=sign
add
(0,sk
add
,0
,n
,pk
add,1,n
),sk
mul
=(sk
add,0,n
,sk
add,1,n
,r
″
1,n
),pk=(pk
add,0,n
,pk
add,1,n
,σ
add,n
)。
[0081]
n≥3时,有(sk
mul,1,n
,pkm
ul,1,n
)=keygen
mul
(pi,r
′1,n-1),σ
add,n
=sign
add
(0,sk
add,0,n
,pk
mul,1,n
),sk
mul
=(sk
add,0,n
,sk
mul,1,n
,r
″
1,n
),
pkmul
=(pk
add,0,n
,pk
mul,1,n
,σ
add,n
)。
[0082]
返回密钥对(sk
mul
,pk
mul
)。乘方案安全时间t为2n。用0号方案表示keygen
add
(pi,r0)所生成的密码体系,用1号方案表示keygen
mul
(pi,r
′1,n-1)生成的密码体系,两者的安全时间分别为t0=2和t1=2
n-1
。(pk
mul,1,n
表示mu1的公钥,1表示方案1,n表示层数)
[0083]
步骤10332:乘方案:sign
mul
(t,sk
mul
,m,n)的具体操作如下:设当前时间片为t,计算成员i的签名σi,σi=σ
mul
=(t,σ
add,n
,σ
′
mul,n
,pk
add,0,n
),其中,第n层乘方案签名σ
′
mul,n
=sign
mul
(t,sk
mul
,m,n),乘方案签名函数sign
mul
(t,sk
mul
,m,n)执行:
[0084]
调用1方案的签名函数:如果为加方案,即n-1=1,调用加方案签名函数计算σ
′
add,n
=sign
add
(t mod t1,sk
add,1,n
,m||t),将σ
′
add,n
作为第二中间签名,计算σ
add
=(t,σ
′
add,n
,pk
base,0
pk
base,1
),返回σ
′
mul,n
=(t,σ
add,n
,σ
add
,pk
add,0,n
)。否则(即n-1>1),第n层右侧采用乘方案签名函数,递归调用乘方案签名函数计算σ
′
mul,n-1
=sign
mul
(t mod t1,sk
mul,1,n
,m||t,n-1),将σ
′
mul,n-1
作为第二中间签名,σ
′
mul,n
=(t,σ
add,n
,σ
′
mul,n-1
,pk
add,0,n
)。
[0085]
步骤10333:乘方案:verify
mul
(σ
mul
,m,n)的具体操作如下:首先验证σ
add,n
的正确性,调用verify
add
(σ
add,n
,pk
add,0,n
),返回v0'。之后调用1方案的验证函数,如果为加方案,则调用verify
add
(σ
′
add,n
,pk
add,1,n
),返回v1′
。否则调用verify
mul
(σ
′
mul,n
,m||t),返回v1′
。返回v0’
∧v1’
,∧表示与。
[0086]
步骤10334:乘方案:update
mul
(t,n)的具体操作如下:t+1≠0mod t1时,调用方案1的更新函数:如果为加方案,即n-1=1,则1方案调用update
add
(),否则调用update
mul
(t mod t1,n-1)。t+1=0mod t1时,方案0调用update
add
()。(r
′
1,n
,r
″
1,n
)=g(r
″
1,n
),
[0087]
进一步地,当n为2时,有(sk
add,1,n
,pk
add,1,n
)=keygen
add
(pi,r
′1),更新),更新更新sk
mul
=(sk
add,0,n
,sk
add,1,n
,r
″
1,n
),更新pk
mul
=(pk
add,0,n
,pk
add,1,n
,σ
add,n
)。
[0088]
当n≥3时,有(sk
mul,1,n
,pk
mul,1,n
)=keygen
mul
(pi,r
′1,n-1),更新更新sk
mul
=(sk
add,0,n
,sk
mul,1,n
,r
″
1,n
),更新pk
mul
=(pk
add,0,n
,pk
mul,1,n
,σ
add,n
)。
[0089]
步骤104:由ma计算公共参数c,c满足下面的方程式:
[0090]
c=hpk
add,1
mod p1[0091]
c=hpk
add,2
mod p2[0092]
…
[0093]
c=hpk
add,n mod pn[0094]
根据中国剩余定理,该方程的解为其中,其中,ni满足pini=1mod pi。计算完成后发布公共参数c用于群签名验证。
[0095]
步骤105:t时间片更新密钥时,ui调用函数update
mul
(t,n)即可(参考步骤10334)。
[0096]
步骤106:ui在t时间片签名消息m时需计算σi=sign
mul
(t,sk
mul,i
,m,n)并将(m,σi,pi)发给ma,由ma验证签名的合法性后代理签名。具体步骤如下:验证σi的合法性(参考步骤107),计算σ
ma
=sign
mul
(t,sk
ma
,m,n)。ma验证签名(m,σi,pi)合法后代替ui签名如下:(m,σ
ma
,p
ma
,h(m,σi,pi)),ma在系统内存储下面的信息(h(m,σi,pi),m,σi,pi)。
[0097]
步骤107:ma按如下步骤验证ui的签名:首先计算verify
add
(σ
add,n
,pk
add,0,n
)得到v0,之后判断(c mod pi)是否等于pk
add,0,n
中的hpk得到v1,最后计算verify
mul
(σ
′
mul,n
,m)得到v2,需要v0、v1和v2结果都为true才是合法签名,即v0∧v1∧v2。
[0098]
步骤108:成员加入或是成员撤销时需要重新计算c。步骤108:成员加入或是成员撤销时需要重新计算c。l为加入或撤销后群组内剩余的成员总数。
[0099]
步骤109:在通过身份揭秘请求时,ma基于h(m,σi,pi)找到pi,计算hpk
add,i
=c mod pi。根据(idi,hpk
add,i
)揭露成员身份信息,并公布(h(m,σi,pi),m,σi,pi)。
[0100]
本发明还公开了一种群签名系统,该系统包括n个成员的电子设备,n个成员组成群,n为大于等于2的正整数,选择一个成员作为群管理员,群中成员通过自身电子设备执行本发明提供的前向安全群签名代理方法。群管理员可为群内任意成员。
[0101]
在本系统具体应用中,可与区块链联合使用,具体的,每个成员保存自己的密钥,群管理员将每个成员的代理签名信息和公共参数上传至区块链中,以便提高安全性。针对区块链中的交易算法隐私保护问题,即是在保护交易双方身份隐私的同时,如何安全可追溯。本发明通过中国剩余定理设计的群签名代理签名框架,在匿名的同时,保证了群组操作的高效。并且,在此基础上,引入了密钥演化,使得方案具有前向安全性。
[0102]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0103]
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
技术特征:
1.一种前向安全群签名代理方法,其特征在于,包括:群管理员初始化素数组p=(p1,p2,
…
,p
n
),n表示成员数量,n为大于等于2的整数,将素数p
i
分发给对应的成员u
i
,i∈[1,n];成员基于分得的素数和安全时间初始化密钥并生成哈希公钥,成员将哈希公钥和身份信息发送至群管理员;成员在时间片演化自身密钥;群管理员基于所有成员的哈希公钥计算并发布公共参数;成员计算消息的签名并将签名元组发送给群管理员;群管理员验证成员发送的签名元组,验证通过后进行代理签名。2.如权利要求1所述的前向安全群签名代理方法,其特征在于,当有新成员加入时:群管理员生成并分配一个素数给新成员;新成员基于分得的素数和安全时间初始化密钥并生成哈希公钥,将哈希公钥和身份信息发送至群管理员;群管理员基于当前所有成员的哈希公钥重新计算并发布公共参数。3.如权利要求1所述的前向安全群签名代理方法,其特征在于,当有成员撤销时,群管理员基于当前所有成员的哈希公钥重新计算并发布公共参数。4.如权利要求1或2或3所述的前向安全群签名代理方法,其特征在于,所述成员基于分得的素数和安全时间初始化密钥并生成哈希公钥步骤中,对于成员i:初始化密钥步骤:设成员i的安全时间为n0为大于等于2的整数,层数n的初始值为n0,成员i获取第一随机数作为第一随机变量r的初始值,调用乘方案密钥生成函数keygen
mul
(p
i
,t
n
,n)获得成员i的乘方案密钥对(sk
mul
,pk
mul
),r
n
表示第一随机变量r在第n层的值,keygen
mul
(p
i
,r
n
,n)执行过程包括步骤a到步骤c:步骤a,通过(r
0,n
,r
1,n
)=g(r
n
)和(r
′
1,n
,r
″
1,n
)=g(r
1,n
)获取第二随机变量r0、第三随机变量r1、第四随机变量r1′
和第五随机变量r1″
分别在第n层的数值r
0,n
、r
1,n
、r
′
1,n
和r
″
1,n
,其中,g()表示倍长伪随机数生成器;步骤b,对于第n层的第一安全时间子段t0=2调用加方案密钥生成函数keygen
add
(p
i
,r
0,n
)获得第n层左侧密钥对(sk
add,0,n
,pk
add,0,n
);步骤c,若n-1=1,对于第n层的第二安全时间子段t1=2
n-1
调用加方案密钥生成函数keygen
add
(p
i
,r
′
1,n
)获得第n层右侧密钥对(sk
add,1,n
,pk
add,1,n
),计算第n层第一中间签名σ
add,n
:σ
add,n
=sign
add
(0,sk
add,0,n
,pk
add,1,n
),第n层乘方案私钥sk
mul
=(sk
add,0,n
,sk
add,1,n
,r
″
1,n
),第n层乘方案公钥pk
mul
=(pk
add,0,n
,pk
add,1,n
,σ
add,n
);sign
add
()表示加方案签名函数;若n-1>1,对于第n层的第二安全时间子段t1=2
n-1
递归调用乘方案密钥生成函数keygen
mul
(p
i
,r
′
1,n
,n-1)生成密钥对(sk
mul,n
,pk
mul,n
)作为第n层右侧密钥对,计算第n层第一中间签名σ
add,n
:σ
add,n
=sign
add
(0,sk
add,0,n
,pk
mul,n
),第n层乘方案私钥sk
mul
=(sk
add,0,n
,sk
mul,n
,r
″
1,n
),第n层乘方案公钥pk
mul
=(pk
add,0,n
,pk
mul,1,n
,σ
add,n
);哈希公钥获取步骤:基于第i个成员的第n0层左侧密钥对获取第i个成员的哈希公钥hpk
add,i
的过程为:hpk
add,i
=hash(pk
base,0
||pk
base,1
),pk
base,0
和pk
base,1
分别表示通过调用加方案密钥生成函数获得第一时间片公钥和第二时间
片公钥,pk
base,0
和pk
base,1
取自其中,加方案密钥生成函数表示为keygen
add
(p
add
,r
add
),r
add
表示输入加方案密钥生成函数的随机参数,p
add
表示输入加方案密钥生成函数的成员分得的素数,加方案密钥生成函数keygen
add
(p
add
,r
add
)具体执行:基于(r
0,add
,r
1,add
)=g(r
add
)获取第一加方案中间随机参数r
0,add
和第二加方案中间随机参数r
1,add
;将r
0,add
和p
add
代入基础方案密钥生成函数keygen
base
(p
add
r
0,add
)获得第一时间片密钥对(sk
base,0
,pk
base,0
);将r
1,add
和p
add
代入基础方案密钥生成函数keygen
base
(p
add
,r
1,add
)获得第二时间片密钥对(sk
base,1
,pk
base,1
);加方案私钥为sk
add
=(sk
base,0
,sk
base,1
);加方案公钥为pk
add
=(pk
base,0
,pk
base,1
,hpk
add
);hpk
add
表示哈希公钥,hpk
add
=hash(pk
base,0
||pk
base,1
);其中,基础方案密钥生成函数表示为keygen
base
(p
base
,r
base
),r
base
表示输入基础方案密钥生成函数的随机数,p
base
表示输入基础方案密钥生成函数的成员分得的素数,keygen
base
(p
base
,r
base
)执行:生成基础方案私钥sk
base
=r
base
,生成基础方案公钥g表示素数组的共同生成元。5.如权利要求4所述的前向安全群签名代理方法,其特征在于,所述成员计算消息的签名并将签名元组发送给群管理员,包括:成员获取签名步骤:设当前时间片为t,计算成员i的签名σ
i
,σ
i
=σ
mul
=(t,σ
add,n
,σ
′
mul,n
,pk
add,0,n
),其中,σ
mul
表示乘方案签名;第n层乘方案签名σ
′
mul,n
=sign
mul
(t,sk
mul
,m,n),乘方案签名函数sign
mul
(t,sk
mul
,m,n)执行:若n-1=1,第n层右侧采用加方案签名函数,调用加方案签名函数计算σ
′
add,n
=sign
add
(t mod t1,sk
add,1,n
,m|t),将σ
′
add,n
作为第二中间签名,计算加方案签名σ
add
=(t,σ
′
add,n
,pk
base,0
pk
base,1
),返回σ
′
mul,n
=(t,σ
add,n
,σ
add
,pk
add,0,n
);若n-1>1,第n层右侧采用乘方案签名函数,递归调用乘方案签名函数计算σ
′
mul,n-1
=sign
mul
(t mod t1,sk
mul,1,n
,m||t,n-1),将σ
′
mul,n-1
作为第二中间签名,σ
′
mul,n
=(t,σ
add,n
,σ
′
mul,n-1
,pk
add,0,n
);其中,加方案签名函数表示为sign
add
(t,sk
add
,m),t表示签名对应的时间片,sk
add
表示输入加方案签名函数的加方案私钥,m表示信息,sign
add
(t,sk
add
,m)执行:若t=0,基于加方案私钥sk
add
中的第一时间片私钥sk
base,0
调用基础方案签名函数获得中间基础方案签名σ
′
base
=sign
base
(sk
base,0
,m),得到加方案签名σ
add
=(0,σ
′
base
,pk
base,0
,pk
base,1
);若t≥1,基于加方案私钥sk
add
中的第二时间片私钥sk
base,1
调用基础方案签名函数获得中间基础方案签名σ
′
base
=sign
base
(sk
base,1
,m),得到加方案签名σ
add
=(t,σ
′
base
,pk
base,0
,pk
base,1
);其中,基础方案签名函数表示为sign
base
(sk
base
,m),其中,sk
base
表示输入基础方案签名
函数的私钥,基础方案签名函数sign
base
(sk
base
,m)操作如下:计算消息哈希值e=hash(m);计算基础签名第一部分s1=g
r
,计算基础签名第二部分s2=(e*sk
base-r)mod(pi-1);获得基础方案签名σ
base
=(s1,s2);r表示成员临时随机选取的随机数;签名元组生成步骤:成员i组建签名元组(m,σ
i
,p
i
)并发送给群管理员。6.如权利要求4或5所述的前向安全群签名代理方法,其特征在于,所述群管理员基于所有成员的哈希公钥计算并发布公共参数,设公共参数为c:其中,第一中间量第i个成员分量为第i个成员的第二中间量n
i
满足p
i
n
i
=1mod p
i
。7.如权利要求4或5所述的前向安全群签名代理方法,其特征在于,所述成员在时间片演化自身密钥,包括:设当前时间时间片为t,成员调用乘方案演变函数update
mul
(t,n)对密钥进行演变,乘方案演变函数update
mul
(t,n)执行:若t+1≠0modt1,进一步地,若n-1=1,右侧密钥生成方案调用加方案演变函数update
add
()进行密钥演变,若n-1>1,右侧密钥生成方案递归调用乘方案演变函数update
mul
(tmodt1,n-1)进行密钥演变;若t+1=0modt1,左侧密钥生成方案调用加方案演变函数update
add
()进行密钥演变,按照公式(r
′
1,n
,r
″
1,n
)=g(r
″
1,n
)更新第四随机变量r1′
和第五随机变量r1″
分别在第n层的数值r
′
1,n
和r
″
1,n
,进一步地,若n-1=1,更新第n层右侧密钥对(sk
add,1,n
,pk
add,1,n
)=keygen
add
(p
i
,r
′
1,n
),更新第n层第一中间签名σ
add,n
:更新第n层乘方案私钥sk
mul
=(sk
add,0,n
,sk
add,1,n
,r
″
1,n
),更新第n层乘方案公钥pk
mul
=(pk
add,0,n
,pk
add,1,n
,σ
add,n
),若n-1>1,递归调用乘方案密钥生成函数更新第n层右侧密钥对(sk
mul,1,n
,pk
mul,1,n
)=keygen
mul
(p
i
,r
′
1,n
,n-1),更新第n层第一中间签名σ
add,n
:更新第n层乘方案私钥sk
mul
=(sk
add,0,n
,sk
mul,1,n
,r
″
1,n
),更新第n层乘方案公钥pk
mul
=(pk
add,0,n
,pk
mul,1,n
,σ
add,n
);其中,加方案密钥演变函数update
add
()执行过程为:擦除第一时间片密钥对中的私钥sk
base,0
。8.如权利要求4或5所述的前向安全群签名代理方法,其特征在于,所述群管理员验证成员发送的签名元组,验证通过后进行代理签名,具体包括:成员签名验证步骤:调用加方案验证函数verify
add
(σ
add,n
,pk
add,0,n
)获得第一验证结果v0;判断(c mod p
i
)是否与第n层左侧公钥pk
add,0,n
中的哈希公钥hpk
add,0,n
相等得到第二验证结果v1;调用乘方案验证函数verify
mul
(σ
′
mul,n
,m,n)获得第三验证结果v2,若v0、v1和v2均为真,那么签名元组验证成功;代理签名步骤:管理员调用乘方案签名函数生成管理员签名σ
ma
=sign
mul
(t,sk
ma
,m,n),
在成员i的签名元组验证成功后代理成员i签名如下:(m,σ
ma
,p
ma
,hash(m,σ
i
,p
i
)),其中,sk
ma
表示群管理员的私钥,p
ma
表示群管理员分得的素数,σ
ma
表示群管理员的签名;其中,乘方案验证函数表示为verify
mul
(σ
mul
,m,n),具体操作如下:调用加方案验证函数verify
add
(σ
add,n
,pk
add,0,n
)验证σ
add,n
的正确性;若n-1=1,调用加方案验证函数verify
add
(σ
′
add,n
,pk
add,1,n
),若n-1>1,递归调用乘方案验证函数verify
mul
(σ
′
mul,n
,m||t,n-1),当σ
add,n
正确且verify
add
(σ
′
add,n
,pk
add,1,n
)验证通过,或者,当σ
add,n
正确且verify
mul
(σ
′
mul,n
,m||t,n-1)验证通过,认为verify
mul
(σ
mul
,m,n)验证通过;其中,加方案验证函数表示为verify
add
(σ
add
,pk
add
),σ
add
表示输入加方案验证函数的加方案签名函数生成的签名,pk
add
表示输入加方案验证函数的加方案密钥生成函数生成的公钥,verify
add
(σ
add
,pk
add
)执行:设当前时间片为t,若pk
add
中的哈希公钥hpk
add
等于hash(pk
base,0
||pk
base,1
),继续执行:若t=0,调用基础方案验证函数,输出验证结果v=verify
base
(pk
base,0
,σ
′
base
,m||t),若t≥1,调用基础方案验证函数输出验证结果v=verify
base
(pk
base,1
,σ
′
base
,m||t);其中,基础方案验证函数表示为verify
base
(pk
base
,σ
base
,m),pk
base
表示输入基础方案验证函数的基础方案密钥生成函数生成的公钥,σ
base
表示输入基础方案验证函数的基础方案签名函数生成的签名,verify
base
(pk
base
,σ
base
,m)执行:计算e=hash(m),若成立,则verify
base
(pk
base
,σ
base
,m)验证结果为真,否则verify
base
(pk
base
,σ
base
,m)验证结果为假。9.如权利要求8所述的前向安全群签名代理方法,其特征在于,还包括身份揭秘步骤:群管理员基于成员的签名元组的哈希值hash(m,σ
i
,p
i
)获得p
i
,计算成员i的哈希公钥hpk
add,i
=c mod p
i
,根据(id
i
,hpk
add,i
)揭露成员i身份信息并公布(hash(m,σ
i
,p
i
),m,σ
i
,p
i
)。10.一种群签名系统,其特征在于,包括n个成员的电子设备,n个成员组成群,n为大于等于2的正整数,选择一个成员作为群管理员,群中成员通过自身电子设备执行权利要求1-9之一所述的前向安全群签名代理方法。
技术总结
本发明提供了一种前向安全群签名代理方法及系统。方法包括:群管理员初始化素数组,将素数分发给对应的成员;成员基于分得的素数和安全时间初始化密钥并生成哈希公钥,成员将哈希公钥和身份信息发送至群管理员;成员在时间片演化自身密钥;群管理员基于所有成员的哈希公钥计算并发布公共参数;成员计算消息的签名并将签名元组发送给群管理员;群管理员验证成员发送的签名元组,验证通过后进行代理签名。提升行为特征隐私保护,群管理员代理签名克服了中国剩余定理恒量带来的行为特征隐私泄露问题;在每个时间片动态更新密钥而不需要改变群组公共参数,具有前向安全性。具有前向安全性。具有前向安全性。
技术研发人员:胡春强 卢俊泽 邓绍江 夏晓峰 向涛 蔡斌 桑军
受保护的技术使用者:重庆大学
技术研发日:2023.05.18
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
