一种基于ZSS的线性网络编码签名方法

文档序号:37640696发布日期:2024-04-18 18:02阅读:50来源:国知局
一种基于ZSS的线性网络编码签名方法

本发明涉及信息安全中的数据认证,尤其是一种基于zss的线性网络编码签名方法。


背景技术:

1、随着通信网络的不断发展和创新,网络编码已成为一项重要的网络通信技术,广泛地应用于无线通信,卫星通信,移动边缘计算,云存储和分布式系统等。网络编码技术可以提高数据传输的可靠性和容错性。网络编码技术允许网络节点在转发信息前对传输的信息内容进行编码处理,从而有效提高网络吞吐量和增强网络稳定性。然而,基于网络编码技术的通信网络容易受到污染攻击。污染攻击是指攻击者入侵一些网络节点,恶意地把篡改或伪造后的信息注入到网络中。这些被注入的错误信息经中间路由编码转发后,在网络中迅速传播造成大面积污染而导致信宿节点不能正确接收真实的信息。

2、为了解决网络编码中的污染攻击问题,boneh和freeman在2009年公钥密码会议上首次提出了线性同态签名的概念。与传统的数字签名以单个消息为签名单位不同,线性同态签名是对一个向量子空间进行签名。它要求将待签名的文件分割成若干个文件块{m′1,m′2,...,m′n},并表示成一个素域上的k维向量m′i=(m′i1,m′i2,...,m′ik),之后进行增广,变成一组线性无关的向量{m1,m2,...,mn};对以该组向量为基生成的子空间v进行签名,生成子空间的标签τ及对每个基向量的签名{σ1,σ2,...,σn},并把标签,每个基向量及其签名装载到一个数据包,发送给下游节点;中间路由或信宿节点在接收到数据包后对来自同一源节点的数据包进行签名验证;中间路由会把验证为假的数据包丢弃,而将所有通过验证的数据包进行线性组合,形成新的数据包发送给下游节点。这样一来,不仅信宿节点可以过滤掉被损坏的数据包,并在拥有达到预定量且通过验证的数据包之后可以解析出源节点发送的原始数据,中间节点也可以对收到的数据包进行验证,并将被污染的数据包丢弃,从而有效预防污染攻击。

3、目前已经有很多关于线性同态签名的研究,大多数方案都是基于具有同态特性的rsa签名或bls签名构造的。rsa签名和bls签名是密码学领域中最常用的两种签名机制。rsa签名是基于rsa算法的数字签名方案,其安全性主要取决于密钥长度的选择。在rsa签名中,密钥长度越长,安全性越高,但相应地,签名的长度也会增加,运算速度会变慢。而bls签名是一种基于椭圆曲线密码学的短消息签名机制。在相同的安全条件下,与rsa签名相比,bls签名生成的签名长度更短。例如,当模数的位数为1024bits时,rsa的签名长度是1024bits,而bls的签名长度大约是160bits。bls签名机制生成的签名之所以短,不仅是因为它使用了双线性运算,可以将多个签名进行聚合生成一个更短的签名,还采用了一种特殊的哈希函数,即maptopoint函数,将输入值映射为椭圆曲线上的一个点。这种哈希函数的设计充分利用了椭圆曲线的特性,使得签名长度得以大幅减小。然而,双线性配对运算是密码算法中最耗时的运算之一。此外,对于特定的椭圆曲线和哈希函数,maptopoint函数可能需要进行多次计算和搜索,才能找到满足特定条件的点。由于maptopoint函数是概率性的,在找到满足条件的点中存在一定的失败率。尽管已有学者尝试提高maptopoint函数的效率,但提高其效率仍然是一个具有挑战性的问题。因此,如果有一个线性同态签名方案既能保证短签名的特性,又能减少双线性配对和maptopoint哈希函数的使用,那么其计算效率可以得到明显提升。


技术实现思路

1、本发明提出一种基于zss的线性网络编码签名方法,能保障数据在传输过程中的完整性和真实性,在解决网络编码中的污染攻击问题及在确保短签名的前提下不仅减少了双线性配对运算,还消除了maptopoint哈希函数的使用。

2、本发明采用以下技术方案。

3、一种基于zss的线性网络编码签名方法,所述方法中,线性网络的源节点先将待签名文件分割成若干个文件块,并表示成一个素域上的k维向量,之后通过增广来转换为一组线性无关的向量,再对以该组向量为基生成的子空间进行签名,生成子空间的标签及对每个基向量的签名,并把标签,每个基向量及其签名装载到一个数据包,发送给下游节点;由中间路由或信宿节点在接收到数据包后对来自同一源节点的数据包进行签名验证;然后中间路由会将所有通过验证的数据包进行线性组合,形成新的数据包发送给下游节点;当信宿节点收到达到预定量且通过验证的数据包后,解析出源节点发送的原始数据。

4、所述方法具体包括以下步骤;

5、步骤一、生成系统参数,具体为:

6、输入安全参数λ和大整数n,参数生成器生成系统参数并广播给系统用户,其中是阶为大素数q的循环群,是一个非对称双线性映射,是一个同构映射,g是群的随机生成元,g1,···,gn是群中的元素,h是群的随机生成元,是两个抗碰撞的哈希函数;

7、步骤二、生成用户密钥,具体为:

8、用户u首先从素域中随机选取一个元素,并计算对其的承诺,最后设置自己的私钥sk和对应的公钥pk;

9、步骤三、生成签名,具体为:

10、用户u首先对待签名文件m进行预处理,将文件m分成n块{m′1,m′2,...,m′n},每块表示成k维向量接下来进行增广,使其成为线性无关的n+k维向量依次给每个向量后附加n维单位向量e1,e2,...,en中的一个,其中ei=(vi(k+1),...,vi(k+n));增广后的向量组生成的n维子空间记为v;然后,用户u随机选择vid∈{0,1}*作为子空间的唯一标识符,计算子空间v的标签τ,并使用自己的私钥对子空间v中基向量{m1,m2,...,mn}的每一个向量进行签名;最后,用户u作为源节点,将子空间标签τ,向量mi及其对应的签名σi封装到一个数据包中,并发送给下游节点;增广后的向量最大维数不超过n;

11、步骤四、签名验证,具体为:

12、中间路由或信宿节点首先验证所收到的数据包中子空间标签τ的有效性,如果τ无效,那么该数据包并非由源节点发送的,否则继续验证对其向量签名;如果向量签名没有通过验证,则该数据包是被污染的假数据包,将其丢弃,否则该数据包是正确的数据包,通过验证;对于信宿节点而言,只有接收到达到预定量的正确的数据包,才能够解析出源节点发送的原始数据;

13、步骤五、导出签名,具体为:

14、中间路由对所有收到的数据包进行验证后,将来自同一源节点且通过验证的数据包进行任意的线性组合,导出同一子空间中另一向量及其对应的签名并将其与子空间标签τ一起合成新的数据包转发给下一个节点。

15、所述步骤二中用户密钥按照如下方式生成:根据系统参数用户u从素域中随机选取一个元素x作为自己的私钥sk,并计算对应的公钥

16、所述步骤三中按照如下方式生成签名:

17、步骤3.1、用户u首先将待签名文件m分割分成n块{m′1,m′2,...,m′n},每块表示成k维向量1≤i≤n;

18、步骤3.2、用户u依次给k维向量中的每个向量后附加n维单位向量e1,e2,...,en中的一个,使其增广成一组线性无关的n+k维向量其中1≤i≤n,1≤j≤n+k,vij∈{0,1},且仅当j=k+i时vij=1;

19、步骤3.3、用户u将以{m1,m2,...,mn}为基向量生成的n维子空间记为v,并随机选择vid∈{0,1}*作为子空间的唯一标识符;

20、步骤3.4、用户u计算并设置子空间的标签τ=(vid,pk,τ0);步骤3.5、用户u计算子空间中基向量mi=(mi1,mi2,...,mik,vi(k+1),...,vi(k+n))对应的签名其中1≤i≤n,1≤j≤n+k,vij∈{0,1},且仅当j=k+i时vij=1;

21、步骤3.6、用户u将子空间标签τ,向量mi及其对应的签名σi装载到一个数据包中,并作为源节点将数据包发送给下游节点。

22、所述步骤四中按照如下方式进行签名验证:

23、步骤4.1、中间路由或信宿节点首先验证所收到的数据包中子空间标签τ的有效性,计算双线性对和e(g,h),然后判定两者是否相等;

24、步骤4.2、如果步骤4.1中两个值相等,则中间路由或信宿节点收到的数据包来自源节点,通过解析τ恢复出vid,pk和τ0,然后中间路由或信宿节点计算双线性对和并判定两者是否相等;

25、步骤4.3、如果步骤4.2中两个值相等,那么中间路由或信宿节点收到的数据包通过验证,若结果输出1,表明该数据包中所含的签名是其向量对应的有效签名,否则输出0;如果信宿节点收到达到预定量的通过验证的正确数据包,就能够解析出源节点发送的原始数据。

26、所述步骤五中按照如下方式导出签名:

27、步骤5.1、中间路由对来自同一源节点的正确数据包进行线性组合,得到同一子空间v中另一向量其中线性组合系数ci是从素域中随机选取的元素;

28、步骤5.2、中间路由计算向量对应的签名

29、步骤5.3、中间路由将子空间标签τ,向量及其对应的签名装载到一个新数据包中,并将其发送给下游节点。

30、所述方法中的符号及定义具体说明如下:

31、u:互联网用户u,待签名文件的拥有者;

32、阶为大素数q的循环群;

33、包含q个元素的有限域,元素为0,1,2,…,q-1;

34、去掉零元素后的有限域;

35、e:从到的双线性对;

36、g:循环群的生成元;

37、g1,···,gn:群中的元素;

38、h:循环群的生成元;

39、h1(·),h2(·):由任意长的比特串{0,1}*到的杂凑函数;

40、sk:用户u的私钥;

41、pk:用户u的公钥;

42、m:待签名的文件;

43、m′i:文件m对应的第i个原始向量,其中

44、mi:文件m对应的第i个增广向量,其中

45、mij:增广向量mi对应的第j个分量,其中

46、vij:单位向量ei对应的第j个分量,其中vij∈{0,1};

47、v:由基向量{m1,m2,...,mn}生成的向量子空间;

48、vid:子空间v的标识符;

49、τ:子空间v的标签;

50、σi:向量mi对应的签名;

51、ci:线性组合系数,从素域中随机选取的元素;

52、gm:g的m次幂;

53、ab:元素a与b相乘;

54、m1,m2,...,mn相加,即

55、σ1,σ2,…,σn相乘,即

56、相较于现有技术,本发明具有以下有益效果:本发明是一种基于zss签名构造的线性同态签名方案,不仅允许信宿节点对收到的数据包进行验证,还允许网络中任一中间路由可以验证并整合来自同一用户u的数据包,从而有效地解决网络编码中的污染攻击问题。本发明还保持着短签名的特性,保证了数据在网络中的传输效率。此外,本发明在生成一个向量子空间的签名时,没有使用计算代价较高的maptopoint哈希操作。如果对子空间标签进行验证时,双线性对可以被提前计算,而且对向量对应的签名进行验证时,无需进行maptopoint哈希运算。因此,本发明的计算效率得到了显著提升。

57、本发明将待签名文件分割增广成线性无关的子空间向量,只需要对生成向量子空间v的基向量{m1,m2,...,mn}逐一签名就完成对该子空间的签名,因为子空间中的其它向量都可由这组基向量{m1,...,mn}进行任意的线性组合生成。同时本发明不仅无需计算代价较高的maptopoint哈希操作来完成向量子空间的签名,而且减少使用耗时的双线性配对运算来验证该子空间的签名,从而提高子空间签名生成和验证的计算效率。而且本发明所产生的向量签名仍然属于短签名,确保了数据在网络中高效的传输速率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1