1.一种基于区块链的椭圆曲线门限签名方法,其特征在于它是由下述步骤组成:A、系统初始化
密钥生成中心公布系统全局参数L:U={I1,I2,…,In}
其中p为大素数,E为p阶椭圆曲线E,G为椭圆曲线E上的一个生成元,Fp为p阶有限域,为p阶整数域,H为哈希函数,u为消息长度,U为签名组中所有用户的集合,Ii表示签名组中的一个用户,i∈{1,2,…,n},n是签名组用户的数量、n和u为有限的正整数,t是门限值、1<t≤n;
B、生成用户公私钥
(B1)用户Ii从有限域Fp中随机选取参数aiμ∈{ai0,ai1,…,ai(t‑1)}确定t‑1阶多项式fi(x):
1 t‑1
fi(x)=ai0+ai1x+…+ai(t‑1)x其中Ii∈U;
(B2)用户Ii按下式确定密钥份额sij、拉格朗日插值系数χi,并将密钥份额sij发送给用户Ij:sij=fi(IDj),
其中IDj是用户Ij的唯一身份标识,Ij∈U,j∈{1,2,…,n},IDi是用户Ii的唯一身份标识;
(B3)用户Ii按下式确定参数θiμ,并在签名组内将参数θiμ广播:θiμ=aiμ×G
其中μ∈{0,1,…,t‑1};
(B4)用户Ij收到来自其他成员发来的密钥份额sij,按下式确定验证参数Vij和验证参数Cij,并验证密钥份额sij的有效性:Vij=sij×G;
若Vij=Cij成立,则接受密钥份额sij作为用户Ij的密钥份额sij,否则要求用户Ii重新发送密钥份额sij;
(B5)用户Ij收到n份有效的密钥份额sij,按下式确定自己的私钥skj与公钥pkj:pkj=skj×G
(B6)组内用户通过广播信息按下式确定签名公钥Q:C、生成份额签名
(C1)用户Ii确定哈希值e:
e=H(m)
其中m是长度为u比特的消息;
(C2)用户Ii在整数域 中随机选取ki,确定XiXi=ki×G
其中Xi是椭圆曲线E上的点(xi,yi);
(C3)用户Ii按下式确定部分份额签名ri:ri=ximod p
(C4)用户Ii在整数域 中随机选取αi,按下式确定部分份额签名βi、部分份额签名li:‑1
βi=m (ki‑αiri)
li=riαi+eχi×ski
(C5)用户Ii将部分份额签名ri、部分份额签名βi、部分份额签名li发送给门限签名合成者Ic,Ic∈U;
D、合成门限签名
(D1)门限签名合成者Ic确定哈希值e:e=H(m)
(D2)门限签名合成者Ic收到来自用户Ii的部分份额签名ri、部分份额签名βi、部分份额签名li,按下式确定X′i:X′i=(li+βim)×G‑eχi×pki其中X′i是椭圆曲线E上的点(x′i,y′i);
(D3)门限签名合成者Ic确定验证参数vi并验证部分份额签名ri、部分份额签名βi、部分份额签名li的有效性:vi=xi′mod p
如果ri=vi,认定部分份额签名ri、部分份额签名βi、部分份额签名li有效,否则认定其无效并要求用户Ii重发;
(D4)门限签名合成者Ic收到了t份有效的部分份额签名ri、部分份额签名βi、部分份额签名li,按下式确定部分门限签名r、部分门限签名β、部分门限签名l:(D5)门限签名合成者Ic将部分签名r、部分签名β、部分签名l发送给签名验证者Iv;
E、验证门限签名
(E1)签名验证者Iv确定哈希值e:e=H(m)
(E2)签名验证者Iv收到部分签名r、部分签名β、部分签名l,按下式确定X′:X′=(l+βm)×G‑eQ
其中X′是椭圆曲线E上的点(x′,y′);
(E3)签名验证者Iv确定验证参数v并验证部分签名r、部分签名β、部分签名l的有效性:v=x′mod p
如果v=r,则签名验证成功,否则失败;
F、添加签名组用户
添加签名组用户时,应满足:①已有用户的私钥ski不会改变或泄露;②新用户加入不会改变签名公钥Q;③新用户可以获得自己的私钥skr并能与已有用户合作生成有效的签名;
设定新用户Ir,Ir∈U的唯一身份标识为IDr,增加新用户Ir步骤如下:(F1)用户Ii从有限域Fp中选取参数biμ∈{bi1,bi2,…,bi(t‑1)}按下式确定t‑1阶多项式fi′(x):
1 t‑1
fi′(x)=bi0+bi1x+…+bi(t‑1)x
1 2 t‑1
bi0=‑bi1IDr‑bi2IDr…‑bi(t‑1)IDr(F2)用户Ii按下式确定临时密钥份额s′ij,并将临时密钥份额s′ij发送给用户Ij:s′ij=fi′(IDj);
(F3)用户Ii按下式确定参数δiμ,并在签名组内将参数δiμ广播:δiμ=biμ×G
(F4)用户Ij收到用户Ii发来的临时密钥份额s′ij,按下式确定验证参数V′ij和C′ij,并验证临时密钥份额s′ij的有效性:V′ij=s′ij×G
若V′ij=C′ij成立,则接受临时密钥份额s′ij作为用户Ij的临时密钥份额,否则要求用户Ii重新发送临时密钥份额s′ij;
(F5)用户Ij收到n份有效的临时密钥份额s′ij,按下式确定临时私钥sk′j,并将临时私钥sk′j发送给新用户Ir:(F6)用户Ij按下式确定参数εj,并在签名组内将参数εj广播:εj=sk′j×G
(F7)新用户Ir收到用户Ij发来的临时私钥sk′j,按下式确定验证参数ηi,并验证临时私钥sk′j的有效性:ηj=sk′j×G
若ηj=εj成立,则接受临时私钥sk′j作为用户Ij的临时私钥sk′j,否则要求用户Ij重新发送临时私钥sk′j;
(F8)新用户Ir收到t份有效的临时私钥sk′j,按下式确定自己的私钥skr并公布自己的公钥pkr:pkr=skr×G
G、删除签名组用户
删除用户Iw时,应满足:①重构其他成员的私钥ski,并使得被删除用户的私钥skw失效;
②用户被删除不会改变签名公钥Q;设定被删除用户Iw的唯一表示符为IDw,Iw∈U,删除用户Iw的步骤如下:(G1)用户Ii从有限域Fp中选取参数ciμ∈{ci0,ci1,ci2,…,ci(t‑1)},确定t‑1阶多项式f″i(x):
1 t‑1
fi″(x)=ci0+ci1x+…+ci(t‑1)x(G2)用户Ii按下式确定临时密钥份额s″ij,并将临时密钥份额s″ij发送给用户Ij:s″ij=fi″(IDj)
(G3)用户Ii按下式确定参数γiμ,并在签名组内将参数γiμ广播:γiμ=ciμ×G
(G4)用户Ij收到用户Ii发来的临时密钥份额s″ij,按下式确定验证参数V″ij和C″ij,并验证临时密钥份额s″ij的有效性:V″ij=s″ij×G
若V″ij=C″ij成立,则接受临时密钥份额s″ij作为用户Ij的临时密钥份额,否则要求用户Ii重新发送临时密钥份额s″ij;
(G5)用户Ij收到n‑1份有效的临时密钥份额s″ij,按下式更新新私钥sk″j并公布自己的公钥pk″j:pk″j=sk″j×G。
2.根据权利要求1所述的基于区块链的椭圆曲线门限签名方法,其特征在于:所述的A系统初始化、B生成用户公私钥、C生成份额签名、F添加签名组用户、G删除签名组用户步骤中,n取值为100。