1.一种前向安全群签名代理方法,其特征在于,包括:
群管理员初始化素数组p=(p1,p2,…,pN),N表示成员数量,N为大于等于2的整数,将素数pi分发给对应的成员ui,i∈[1,N];
成员基于分得的素数和安全时间初始化密钥并生成哈希公钥,成员将哈希公钥和身份信息发送至群管理员;
成员在时间片演化自身密钥;
群管理员基于所有成员的哈希公钥计算并发布公共参数;
成员计算消息的签名并将签名元组发送给群管理员;
群管理员验证成员发送的签名元组,验证通过后进行代理签名。
2.如权利要求1所述的前向安全群签名代理方法,其特征在于,当有新成员加入时:群管理员生成并分配一个素数给新成员;
新成员基于分得的素数和安全时间初始化密钥并生成哈希公钥,将哈希公钥和身份信息发送至群管理员;
群管理员基于当前所有成员的哈希公钥重新计算并发布公共参数。
3.如权利要求1所述的前向安全群签名代理方法,其特征在于,当有成员撤销时,群管理员基于当前所有成员的哈希公钥重新计算并发布公共参数。
4.如权利要求1或2或3所述的前向安全群签名代理方法,其特征在于,所述成员基于分得的素数和安全时间初始化密钥并生成哈希公钥步骤中,对于成员i:初始化密钥步骤:设成员i的安全时间为 n0为大于等于2的整数,层数n的初始值为n0,成员i获取第一随机数作为第一随机变量r的初始值,调用乘方案密钥生成函数KeyGenmul(pi,tn,n)获得成员i的乘方案密钥对(skmul,pkmul),rn表示第一随机变量r在第n层的值,KeyGenmul(pi,rn,n)执行过程包括步骤A到步骤C:步骤A,通过(r0,n,r1,n)=G(rn)和(r′1,n,r″1,n)=G(r1,n)获取第二随机变量r0、第三随机变量r1、第四随机变量r1′和第五随机变量r1″分别在第n层的数值r0,n、r1,n、r′1,n和r″1,n,其中,G()表示倍长伪随机数生成器;
步骤B,对于第n层的第一安全时间子段T0=2调用加方案密钥生成函数KeyGenadd(pi,r0,n)获得第n层左侧密钥对(skadd,0,n,pkadd,0,n);
n‑1
步骤C,若n‑1=1,对于第n层的第二安全时间子段T1=2 调用加方案密钥生成函数KeyGenadd(pi,r′1,n)获得第n层右侧密钥对(skadd,1,n,pkadd,1,n),计算第n层第一中间签名σadd,n:σadd,n=Signadd(0,skadd,0,n,pkadd,1,n),第n层乘方案私钥skmul=(skadd,0,n,skadd,1,n,r″1,n),第n层乘方案公钥pkmul=(pkadd,0,n,pkadd,1,n,σadd,n);Signadd()表示加方案签名函数;
n‑1
若n‑1>1,对于第n层的第二安全时间子段T1=2 递归调用乘方案密钥生成函数KeyGenmul(pi,r′1,n,n‑1)生成密钥对(skmul,n,pkmul,n)作为第n层右侧密钥对,计算第n层第一中间签名σadd,n:σadd,n=Signadd(0,skadd,0,n,pkmul,n),第n层乘方案私钥skmul=(skadd,0,n,skmul,n,r″1,n),第n层乘方案公钥pkmul=(pkadd,0,n,pkmul,1,n,σadd,n);
哈希公钥获取步骤:基于第i个成员的第n0层左侧密钥对 获取第i个成员的哈希公钥hpkadd,i的过程为:hpkadd,i=Hash(pkbase,0||pkbase,1),pkbase,0和pkbase,1分别表示通过调用加方案密钥生成函数 获得第一时间片公钥和第二时间片公钥,pkbase,0和pkbase,1取自
其中,加方案密钥生成函数表示为KeyGenadd(padd,radd),radd表示输入加方案密钥生成函数的随机参数,padd表示输入加方案密钥生成函数的成员分得的素数,加方案密钥生成函数KeyGenadd(padd,radd)具体执行:基于(r0,add,r1,add)=G(radd)获取第一加方案中间随机参数r0,add和第二加方案中间随机参数r1,add;
将r0,add和padd代入基础方案密钥生成函数KeyGenbase(paddr0,add)获得第一时间片密钥对(skbase,0,pkbase,0);
将r1,add和padd代入基础方案密钥生成函数KeyGenbase(padd,r1,add)获得第二时间片密钥对(skbase,1,pkbase,1);
加方案私钥为skadd=(skbase,0,skbase,1);加方案公钥为pkadd=(pkbase,0,pkbase,1,hpkadd);hpkadd表示哈希公钥,hpkadd=Hash(pkbase,0||pkbase,1);
其中,基础方案密钥生成函数表示为KeyGenbase(pbase,rbase),rbase表示输入基础方案密钥生成函数的随机数,pbase表示输入基础方案密钥生成函数的成员分得的素数,KeyGenbase(pbase,rbase)执行:
生成基础方案私钥skbase=rbase,生成基础方案公钥 g表示素数组的共同生成元。
5.如权利要求4所述的前向安全群签名代理方法,其特征在于,所述成员计算消息的签名并将签名元组发送给群管理员,包括:
成员获取签名步骤:
设当前时间片为t,计算成员i的签名σi,σi=σmul=(t,σadd,n,σ′mul,n,pkadd,0,n),其中,σmul表示乘方案签名;第n层乘方案签名σ′mul,n=Signmul(t,skmul,M,n),乘方案签名函数Signmul(t,skmul,M,n)执行:若n‑1=1,第n层右侧采用加方案签名函数,调用加方案签名函数计算σ′add,n=Signadd(t mod T1,skadd,1,n,M|t),将σ′add,n作为第二中间签名,计算加方案签名σadd=(t,σ′add,n,pkbase,0pkbase,1),返回σ′mul,n=(t,σadd,n,σadd,pkadd,0,n);
若n‑1>1,第n层右侧采用乘方案签名函数,递归调用乘方案签名函数计算σ′mul,n‑1=Signmul(t mod T1,skmul,1,n,M||t,n‑1),将σ′mul,n‑1作为第二中间签名,σ′mul,n=(t,σadd,n,σ′mul,n‑1,pkadd,0,n);
其中,加方案签名函数表示为Signadd(t,skadd,M),t表示签名对应的时间片,skadd表示输入加方案签名函数的加方案私钥,M表示信息,Signadd(t,skadd,M)执行:若t=0,基于加方案私钥skadd中的第一时间片私钥skbase,0调用基础方案签名函数获得中间基础方案签名σ′base=Signbase(skbase,0,M),得到加方案签名σadd=(0,σ′base,pkbase,0,pkbase,1);
若t≥1,基于加方案私钥skadd中的第二时间片私钥skbase,1调用基础方案签名函数获得中间基础方案签名σ′base=Signbase(skbase,1,M),得到加方案签名σadd=(t,σ′base,pkbase,0,pkbase,1);
其中,基础方案签名函数表示为Signbase(skbase,M),其中,skbase表示输入基础方案签名函数的私钥,基础方案签名函数Signbase(skbase,M)操作如下:R
计算消息哈希值e=Hash(M);计算基础签名第一部分s1=g ,计算基础签名第二部分s2=(e*skbase‑R)mod(pi‑1);获得基础方案签名σbase=(s1,s2);R表示成员临时随机选取的随机数;
签名元组生成步骤:成员i组建签名元组(M,σi,pi)并发送给群管理员。
6.如权利要求4或5所述的前向安全群签名代理方法,其特征在于,所述群管理员基于所有成员的哈希公钥计算并发布公共参数,设公共参数为c:其中,第一中间量 第i个成员分量为 第i个成员的第二中间量Ni满足PiNi=1mod pi。
7.如权利要求4或5所述的前向安全群签名代理方法,其特征在于,所述成员在时间片演化自身密钥,包括:
设当前时间时间片为t,成员调用乘方案演变函数Updatemul(t,n)对密钥进行演变,乘方案演变函数Updatemul(t,n)执行:
若t+1≠0modT1,进一步地,若n‑1=1,右侧密钥生成方案调用加方案演变函数Updateadd()进行密钥演变,若n‑1>1,右侧密钥生成方案递归调用乘方案演变函数Updatemul(tmodT1,n‑1)进行密钥演变;
若t+1=0modT1,左侧密钥生成方案调用加方案演变函数Updateadd()进行密钥演变,按照公式(r′1,n,r″1,n)=G(r″1,n)更新第四随机变量r1′和第五随机变量r1″分别在第n层的数值r′1,n和r″1,n,进一步地,若n‑1=1,更新第n层右侧密钥对(skadd,1,n,pkadd,1,n)=KeyGenadd(pi,r′1,n),更新第n层第一中间签名σadd,n: 更新第n层乘方案私钥skmul=(skadd,0,n,skadd,1,n,r″1,n),更新第n层乘方案公钥pkmul=(pkadd,0,n,pkadd,1,n,σadd,n),若n‑1>1,递归调用乘方案密钥生成函数更新第n层右侧密钥对(skmul,1,n,pkmul,1,n)=KeyGenmul(pi,r′1,n,n‑1),更新第n层第一中间签名σadd,n:更新第n层乘方案私钥skmul=(skadd,0,n,skmul,1,n,r″1,n),更新第n层乘方案公钥pkmul=(pkadd,0,n,pkmul,1,n,σadd,n);
其中,加方案密钥演变函数Updateadd()执行过程为:擦除第一时间片密钥对中的私钥skbase,0。
8.如权利要求4或5所述的前向安全群签名代理方法,其特征在于,所述群管理员验证成员发送的签名元组,验证通过后进行代理签名,具体包括:成员签名验证步骤:调用加方案验证函数Verifyadd(σadd,n,pkadd,0,n)获得第一验证结果v0;判断(c mod pi)是否与第n层左侧公钥pkadd,0,n中的哈希公钥hpkadd,0,n相等得到第二验证结果v1;调用乘方案验证函数Verifymul(σ′mul,n,M,n)获得第三验证结果v2,若v0、v1和v2均为真,那么签名元组验证成功;
代理签名步骤:管理员调用乘方案签名函数生成管理员签名σMa=Signmul(t,skMa,M,n),在成员i的签名元组验证成功后代理成员i签名如下:(M,σMa,pMa,Hash(M,σi,pi)),其中,skMa表示群管理员的私钥,pMa表示群管理员分得的素数,σMa表示群管理员的签名;
其中,乘方案验证函数表示为Verifymul(σmul,M,n),具体操作如下:调用加方案验证函数Verifyadd(σadd,n,pkadd,0,n)验证σadd,n的正确性;若n‑1=1,调用加方案验证函数Verifyadd(σ′add,n,pkadd,1,n),若n‑1>1,递归调用乘方案验证函数Verifymul(σ′mul,n,M||t,n‑1),当σadd,n正确且Verifyadd(σ′add,n,pkadd,1,n)验证通过,或者,当σadd,n正确且Verifymul(σ′mul,n,M||t,n‑1)验证通过,认为Verifymul(σmul,M,n)验证通过;
其中,加方案验证函数表示为Verifyadd(σadd,pkadd),σadd表示输入加方案验证函数的加方案签名函数生成的签名,pkadd表示输入加方案验证函数的加方案密钥生成函数生成的公钥,Verifyadd(σadd,pkadd)执行:设当前时间片为t,若pkadd中的哈希公钥hpkadd等于Hash(pkbase,0||pkbase,1),继续执行:若t=0,调用基础方案验证函数,输出验证结果v=Verifybase(pkbase,0,σ′base,M||t),若t≥1,调用基础方案验证函数输出验证结果v=Verifybase(pkbase,1,σ′base,M||t);
其中,基础方案验证函数表示为Verifybase(pkbase,σbase,M),pkbase表示输入基础方案验证函数的基础方案密钥生成函数生成的公钥,σbase表示输入基础方案验证函数的基础方案签名函数生成的签名,Verifybase(pkbase,σbase,M)执行:计算e=Hash(M),若成立,则Verifybase(pkbase,σbase,M)验证结果为真,否则Verifybase(pkbase,σbase,M)验证结果为假。
9.如权利要求8所述的前向安全群签名代理方法,其特征在于,还包括身份揭秘步骤:群管理员基于成员的签名元组的哈希值Hash(M,σi,pi)获得pi,计算成员i的哈希公钥hpkadd,i=c mod pi,根据(IDi,hpkadd,i)揭露成员i身份信息并公布(Hash(M,σi,pi),M,σi,pi)。
10.一种群签名系统,其特征在于,包括N个成员的电子设备,N个成员组成群,N为大于等于2的正整数,选择一个成员作为群管理员,群中成员通过自身电子设备执行权利要求1‑
9之一所述的前向安全群签名代理方法。