本发明属于网络信息安全技术领域,具体涉及到密码学或多源网络编码机制或多重签名方法。
背景技术:
传统通信网络通过存储转发的方式传送数据,中间节点作为转发器,其他节点只负责路由,不对数据内容做任何处理。采用网络编码不仅可以极大地节省网络资源,而且能提高网络传输速率、吞吐量和可靠性。但是在网络编码大大提高网络各方面性能的同时也带来了许多污染和窃听威胁。由于攻击者可通过节点蓄意篡改或伪造消息,这些被篡改或伪造的消息和其他消息进行线性组合后会污染其它消息;攻击者通过窃听网络中部分或全部信道获取网络中传输的消息,在传输过程中必须尽早过滤被污染的消息。这些不安全因素很大程度上限制了网络编码的应用范围,阻碍了它在现实生活中的应用和推广。
传统的多重签名认证方式不能抵御污染和窃听攻击。多源网络编码机制下多重同态签名方法可以简化中间节点的验证过程,也可以极大地减少计算量、降低能源消耗及抵抗源节点之间的伪造攻击。但是,目前没有多源网络编码机制下多重签名方法,如何采用多源网络编码机制构建多重同态签名是密码学中当前需要迫切解决的一个技术问题。
技术实现要素:
本发明所要解决的技术问题在于克服上述现有技术的缺点,提供一种可以抵制污染和窃听攻击的多源网络编码机制下多重同态签名方法。
解决上述技术问题所采用的技术方案由下述步骤组成:
a、系统初始化
(a1)可信机构定义有限域fq上的椭圆曲线e:
y2≡x3+ax+b,
其中a,b∈fq是满足4a3+27b2≠0的常量。
(a2)可信机构选取阶为t的椭圆曲线e上的一个基点g,其中q是一个大素数为有限的正整数,t是素数为有限的正整数。
(a3)可信机构定义用户集合u:
u={u1,u2,…,un},
其中每个用户是独立的签名实体ui。
(a4)可信机构通过保密信道发送指定的代标识符i:
i={i1,i2,…,in}
给各个用户。
(a5)可信机构定义一个n-1次多项式:
f(x)=a0+a1x+a2x2+...+an-1xn-1
其中a0,a1,...,an-1∈fq。
(a6)可信机构确定多重签名的私钥d和公钥q:
d=f(0)=a0
q=d·g。
(a7)可信机构选取密码学安全的hash函数h:
{0,1}*→zq
其中zq是{0,1,...,q-1}。
(a8)可信机构公开系统参数z:
z=(e,fq,g,q,f,t,h,q)。
b、用户钥生成
(b1)每个签名实体ui选取x1,x2,...,xj,...,xn-1∈fq,确定自己的私钥di和公钥qi:
di=f(xj)
qi=di·g
式中j∈{1,2,...,n-1}。
c、多重签名
(c1)签名实体ui选取一个随机数ri(0<ri<t),确定si:
si=ri·g
式中si是椭圆曲线上的点(xi,yi)。
(c2)签名实体ui确定ci、σi:
ci=ximodt
(c3)签名实体ui发送si、ci给收集者,收集者确定s、l、c:
l=h(i1,i2,...,in,s,m)
式中s是椭圆曲线上的点(x,y)。
(c4)签名实体ui发送ri、xj、σi给收集者,如果
成立,收集者确定σ:
(c5)收集者输出多重签名(s,σ)。
d、组合
(d1)在已有的组合算法中,消息的局部编码向量α=(α1,α2,...,αk),向量w1,w2,...,wk的签名为σ1,σ2,...,σk,节点对该消息编码操作得到的消息向量m:
其中k是有限的正整数。
(d2)已知一条输出消息d:
消息d的签名是:
e、验证
(e1)接收者确定l、u:
l=h(i1,i2,...,in,s,m)
u=σ-1modt。
(e2)接收者确定p:
p=lug+cσ-1q
p是椭圆曲线上的点(xp,yp)。
(e3)接收者确定c′:
c′=xpmodt。
(e4)接收者验证c′=s是否成立,如果成立多重签名成功;否则多重签名失败。
本发明在多源网络编码机制下集成椭圆曲线签名和多重签名技术,提出了一种多源网络编码机制下多重同态签名方法,利用多重签名的同态性简化了中间节点的验证过程,极大地减少了计算复杂度及降低了能源消耗。该方法不仅能够抵抗源节点之间的伪造攻击,而且可以保障消息的正确性和匿名性。
本发明具有安全性强、计算复杂度低等优点,可以解决传统多重签名认证方式不能抵御污染和窃听攻击的问题。
附图说明
图1是本发明实施例1的流程图。
具体实施方式
下面结合附图和实施例对本发明进一步详细说明,但本发明不限于这些实施例。
实施例1
本实施例以椭圆曲线y2≡x3+ax+bmodq、大素数q为2192-264-1为例,多源网络编码机制下多重同态签名方法由下述步骤组成:
(a1)可信机构选择一个大素数q,q为2192-264-1,定义有限域fq上的椭圆曲线e:y2≡x3+ax+b,其中a,b∈fq是满足4a3+27b2≠0的常量。
(a2)可信机构选取阶为t的椭圆曲线e上的一个基点g,t是素数为有限的正整数;
(a3)可信机构定义用户集合u:
u={u1,u2,…,un},
其中每个用户是独立的签名实体ui;
(a4)可信机构通过保密信道发送指定的代标识符i:
i={i1,i2,…,in}
给各个用户;
(a5)可信机构定义一个n-1次多项式:
f(x)=a0+a1x+a2x2+...+an-1xn-1
其中a0,a1,...,an-1∈fq;
(a6)可信机构确定多重签名的私钥d和公钥q:
d=f(0)=a0
q=d·g;
(a7)可信机构选取密码学安全的hash函数h:
{0,1}*→zq,
其中zq是{0,1,...,2192-264-2};
(a8)可信机构公开系统参数z:
z=(e,fq,g,q,f,t,h,q);
b、用户钥生成
(b1)每个签名实体ui选取x1,x2,...,xj,...,xn-1∈fq,确定自己的私钥di和公钥qi:
di=f(xj)
qi=di·g
式中j∈{1,2,...,n-1};
c、多重签名
(c1)签名实体ui选取一个随机数ri(0<ri<t),确定si:
si=ri·g
式中si是椭圆曲线上的点(xi,yi);
(c2)签名实体ui确定ci、σi:
ci=ximodt
(c3)签名实体ui发送si、ci给收集者,收集者确定s、l、c:
l=h(i1,i2,...,in,s,m)
式中s是椭圆曲线上的点(x,y);
(c4)签名实体ui发送ri、xj、σi给收集者,如果
成立,收集者确定σ:
(c5)收集者输出多重签名(s,σ);
d、组合
(d1)在已有的组合算法中,消息的局部编码向量α=(α1,α2,...,αk),向量w1,w2,...,wk的签名为σ1,σ2,...,σk,节点对该消息编码操作得到的消息向量m:
其中k是有限的正整数;
(d2)已知一条输出消息d:
消息d的签名是:
e、验证
(e1)接收者确定l、u:
l=h(i1,i2,...,in,s,m)
u=σ-1modt;
(e2)接收者确定p:
p=lug+cσ-1q
p是椭圆曲线上的点(xp,yp);
(e3)接收者确定c′:
c′=xpmodt;
(e4)接收者验证c′=s是否成立,如果成立多重签名成功;否则多重签名失败。
实施例2
本实施例以椭圆曲线y2≡x3+ax+bmodq、大素数q为2224-296+1为例,多源网络编码机制下多重同态签名方法由下述步骤组成:
(a1)可信机构选择一个大素数q,q为2224-296+1,定义有限域fq上的椭圆曲线e:y2≡x3+ax+b,其中a,b∈fq是满足4a3+27b2≠0的常量。
(a2)可信机构选取阶为t的椭圆曲线e上的一个基点g,t是素数为有限的正整数。
(a3)可信机构定义用户集合u:
u={u1,u2,…,un},
其中每个用户是独立的签名实体ui。
(a4)可信机构通过保密信道发送指定的代标识符i:
i={i1,i2,…,in}
给各个用户。
(a5)可信机构定义一个n-1次多项式:
f(x)=a0+a1x+a2x2+...+an-1xn-1
其中a0,a1,...,an-1∈fq。
(a6)可信机构确定多重签名的私钥d和公钥q:
d=f(0)=a0
q=d·g;
(a7)可信机构选取密码学安全的hash函数h:
{0,1}*→zq
其中zq是{0,1,...,2224-296}。
(a8)可信机构公开系统参数z:
z=(e,fq,g,q,f,t,h,q);
其它步骤与实施例1相同。
实施例3
本实施例以椭圆曲线y2≡x3+ax+bmodq、大素数q为2256-2224+2192+296+1为例,多源网络编码机制下多重同态签名方法由下述步骤组成:
(a1)可信机构选择一个大素数q,q为2256-2224+2192+296+1,定义有限域fq上的椭圆曲线e:y2≡x3+ax+b,其中a,b∈fq是满足4a3+27b2≠0的常量。
(a2)可信机构选取阶为t的椭圆曲线e上的一个基点g,t是素数为有限的正整数。
(a3)可信机构定义用户集合u:
u={u1,u2,…,un}
其中每个用户是独立的签名实体ui。
(a4)可信机构通过保密信道发送指定的代标识符i:
i={i1,i2,…,in}
给各个用户。
(a5)可信机构定义一个n-1次多项式:
f(x)=a0+a1x+a2x2+...+an-1xn-1
其中a0,a1,...,an-1∈fq。
(a6)可信机构确定多重签名的私钥d和公钥q:
d=f(0)=a0
q=d·g。
(a7)可信机构选取密码学安全的hash函数h:
{0,1}*→zq
其中zq是{0,1,...,2256-2224+2192+296};
(a8)可信机构公开系统参数z:
z=(e,fq,g,q,f,t,h,q)。
其它步骤与实施例1相同。