一种抗量子、基于哈希签名且具有小尺寸的签名认证方法

文档序号:34457513发布日期:2023-06-14 21:45阅读:59来源:国知局
一种抗量子、基于哈希签名且具有小尺寸的签名认证方法

本发明涉及数据通信信息安全,具体说是一种抗量子、基于哈希签名且具有小尺寸的签名认证方法。


背景技术:

1、大规模数据流在通信双方持续传输的应用背景下,为了确保通信中参与方身份的真实性以及数据的完整性(不被篡改),数据源的身份认证和数据的完整性认证一直是数据通信中的典型需求。数字签名算法为在通信领域进行消息源身份认证和消息完整性认证的非对称密码技术,传统的基于数论困难假设的数字签名方案是应用领域最主流使用的算法,但是随着量子计算的发展,传统的基于数论困难假设的数字签名方案的弊端逐渐显露,如不具备抗量子攻击特性,安全假设复杂,理论基础不成熟,不能抵抗多目标攻击、安全性低。

2、作五大后量子密码算法之一,基于哈希的签名技术近年来越来越受到关注,并被广泛用于消息源身份认证和消息完整性认证领域。基于哈希的签名与基于计算困难数论问题的数字签名方案相比,具有抗量子攻击、签名算法的不可伪造性,只基于哈希函数的基本安全假设、高效、易于实现等特点。但是现有的哈希签名技术由于将一次签名(one-timesignature)或少次签名(few-time signature)与哈希树结合的设计,会出现签名尺寸较大,因此密钥生成、签名生成和验证的总成本过高的问题,限制了其实际应用。


技术实现思路

1、为解决现有的哈希签名尺寸大、密钥生成、签名生成和验证总成本高的问题,本发明的目的是提供一种大规模数据流在通信双方持续传输的应用背景下进行数据源的身份认证和数据的完整性认证的抗量子的基于哈希签名的认证方法,和标准的基于哈希的签名算法相比,其签名尺寸可实现百倍规模的降低。

2、本发明为实现上述目的,通过以下技术方案实现:

3、本技术的功能为:

4、(1)数据源的身份认证,以确保通信中参与方身份的真实性;

5、(2)数据的完整性认证,以确保通信中传输的数据未被篡改。

6、本技术的应用场景特征为:

7、(1)大规模的公共数据流在通信双方之间持续传播;

8、(2)应用中有身份认证和数据完整性认证需求。

9、一种抗量子、基于哈希签名且具有小尺寸的签名认证方法,它是一种大规模数据流在通信双方持续传输的应用背景下进行数据源的身份认证和数据的完整性认证的签名方法;为表述清楚,现将部分术语定义如下:

10、完整传输:签名者和验证者之间不间断的消息传输,它是一种时间间隔;

11、签名者:即发送方,验证者:即接收方;

12、签名密钥:所述签名密钥即私钥,将用于签名阶段以生成认证标识;

13、验证密钥:所述验证密钥即公钥;

14、x:一个公钥可验证的完整传输的个数;

15、签名周期:使用一组印章进行签名的时间间隔;

16、s:一个签名周期中可签名消息的个数;

17、片段:将多个消息通过批量摘要子算法压缩为一个消息摘要的时间间隔;

18、所述签名认证方法的步骤如下:

19、s1:将发送者和接收者之间的完整传输按时间顺序划分为多个片段,并为每个片段设置一个32位片段标签idxsmt,其值由0开始,依次加1;片段的数据通信以起始标识符srt开始;然后,基于区块大小或发送时间,片段中的数据流被划分为多个数据块,数据块以m表示,为每个数据块m分配标签idxmsg,并附加到每个数据块后,其值由0开始,依次加1,每个片段以结束标识符end终止;每个数据块的索引参数idxpkt=idxsmt||idxmsg;

20、s2:密钥生成算法gen,其有先后两个步骤s2.1私钥生成子算法skgen和s2.2公钥生成子算法pkgen

21、所述密钥生成算法gen为发送方使用前向安全的伪随机函数生成签名密钥和验证密钥,为构造不可伪造的前向安全签名方案提供密钥;

22、该算法包含私钥生成子算法skgen和公钥生成子算法pkgen;

23、s2.1私钥生成子算法skgen

24、私钥生成子算法从初始状态seedfws开始,使用第j-1周期的种子密钥seedj-1来生成第j周期的种子密钥seedj,然后,使用seedj生成周期j中的包含t个印章seali,j(1≤i≤t)的私钥skperiodj,j=1,2,…,x+l,其中x、t的取值均为2的次方;生成算法如下所示:

25、输入:伪随机函数

26、q:={qk:k×(0,1)n→(0,1)n|k∈(0,1)n};

27、n为安全参数,n的取值依据算法在应用中被设置的安全级别而定;

28、私钥生成种子seedfws:随机选取自(0,1)n的均匀分布;

29、处理:

30、seed0=seedfws

31、

32、

33、

34、输出:skperiodj,j=1,2,…,x+l;

35、其中,前x个私钥skperiod j,j=1,2,…,x,在每次完整传输开始时被用作第一个签名密钥,后l个私钥,skperiod j,j=x+1,x+2,…,x+l,被用作后续签名密钥,在完整传输中被依次使用;x的赋值是随机的,如当x=10,l=10时,前10个私钥skperiod j,j=1,2,…,8,9,10在每次完整传输开始时被用作第一个签名密钥,后10个私钥skperiod j,j=11,12,…,18,19,20被用作后续签名密钥,在完整传输中被依次使用;

36、s2.2公钥生成子算法pkgen

37、步骤s2.1生成私钥后,公钥生成子算法pkgen基于可调整哈希函数以skperiod j,j=1,2,…,x+l,作为输入,利用哈希树来生成相应的公钥;具体来说:

38、首先,以skperiod j,j=x+1,x+2,…,x+l作为伪随机函数f的输入生成pkperiod j,j=1,2,…,x+l;

39、然后,以公钥生成种子seedauth和标签hidxm,n作为伪随机函数r的输入,来生成每步迭代所需的key和msk;

40、接着,以每个pkperiod j的各个分量作为哈希树的叶节点,利用可调整哈希函数th来生成哈希树的根节点,依次生成pkj,j=1,2,…,x+l;

41、最后,以pkj,j=1,2,…,x作为哈希树htroot的叶节点,按照生成每步迭代所需的key和msk和生成pkj,j=1,2,…,x+l的步骤,构造哈希树htroot的根节点pkroot,根节点pkroot即为公钥;

42、具体的处理过程为:

43、输入:安全参数n;

44、伪随机函数

45、

46、伪随机函数

47、r:={rseed:idx→key||msk|seed∈(0,1)n};

48、可调整哈希函数

49、

50、公钥生成种子seedauth:随机选取自(0,1)n的均匀分布;

51、标签hidxm,n序列:由完整传输的序号、对应各级节点在认证树中的位置组成,其中,m=0,1,...logt-1,n=0,1,...2m-1;分别代表相应的节点在认证树中从上到下的层数和在每层中从左到右的位置数,m、n计数均从0开始,依次加1;所述各级节点包括根节点和叶节点,以下用nm,n来表示;

52、

53、处理:

54、①以下过程计算pkj,j=1,2,…,x+l;

55、a.

56、对于每个j∈1,2,...,x+l,

57、

58、b.利用伪随机函数r生成每步迭代所需的密钥和掩码,以下分别用带下标的key和msk来表示:

59、

60、m=0,1,...logt-2,n=0,1,...,2m-1;

61、c.计算此哈希树的根节点n0,0:m的取值依次为logt-1,logt-2,...,0,

62、对于上述每个m,计算:

63、

64、其中,n取值依次为0,2,4,...,2m-2;

65、pkj=n0,0;

66、②以下过程计算pkroot:

67、a.nlogx,0,nlogx,1,...nlogx,x-1=pk1,pk2,...,pkx

68、b.利用伪随机函数r生成每步迭代所需的key和msk:

69、r(seedauth,hidxm,n)=keym,n||mskm,n,

70、m=0,1,2,...logx-2,n=0,1,2,...,2m-1;

71、c.计算此哈希树的根节点n0,0:m的取值依次为logx-1,logx-2,...,0,

72、对于上述每个m,计算:

73、

74、其中,n取值依次为0,2,4,...,2m-2;

75、pkroot=n0,0;

76、s3:签名算法sig,其有先后两个步骤s3.1批量摘要子算法bda和s3.2签名子算法:

77、s3.1批量摘要子算法bda

78、批量摘要子算法的具体步骤如下:

79、批量摘要子算法将s1阶段处理后的数据以片段为单位输入,对于每一个片段中的所有数据块及其索引参数m1,idxpkt,1,m2,idxpkt,2,…,mj,idxpkt,j,利用伪随机函数p和哈希函数族t,生成每个片段中所有数据块的批量摘要值bds;一个完整传输中所有的批量摘要值按时间顺序记为bds1,bds2,…;对一个片段中的数据进行批量摘要过程如下:

80、输入:安全参数n;

81、一个传输片段中的所有数据块m1,...,mj;

82、伪随机函数p={pseed:(0,1)64×(0,1))*×(0,1)n→(0,1)n|seed∈(0,1)n};

83、哈希函数族 t:={tkey:(0,1)n×(0,1)n→(0,1)n|key∈(0,1)n};

84、处理:

85、t0(idx,seeddg,m)=p(seeddg,idxsmt,j||{0}32)=ivprd,j

86、p(seeddg,idxpkt,i,mi)=mdi||keyi

87、

88、i=1,2,...,j;

89、输出:bds=tj(idx,seeddg,m);

90、s3.2签名子算法

91、输入:安全参数n;

92、伪随机函数f1:{0,1}n×{0,1}2n→{0,1}n;

93、哈希函数h1:{0,1}n×{0,1}2n→{0,1}n;

94、哈希函数族私钥序列:skperiodj,j=1,2,…,x+l;

95、一次完整传输中所有的批量摘要值按时间顺序记为bds1,bds2,…;

96、处理:首先,将上述批量摘要值bds1,bds2,…依次按签名周期重新划分,第j个周期要处理的批量摘要值表示为bdsi,j,i∈1,2,…,s;

97、当i=1,2,…,s-1时,

98、计算

99、rdmi,j=f1(sk,bdsi,j),

100、dgti,j=h1(rdmi,j,bdsi,j);

101、当i=s时,

102、计算

103、rdms,j=f1(sk,bdss,j||pkj+1)

104、dgts,j=h1(rdms,j,bdss,j||pkj+1)

105、其中rdmi,j和dgti,j是中间参数,不需要定义其代表的具体意义;

106、接下来,对每个dgti,j,i∈1,2,…进行身份验证,具体步骤如下:

107、从私钥序列skperiod j中选择k个sealjp,其中p=1,2,…,k,i≤jp≤t,满足:

108、

109、其中每个完整传输中的第一个签名密钥依次选自skperiod j,j=1,2,…,x,后续密钥依次选自skperiod j,j=x+1,x+2,…,x+l;

110、最后,为了缩减一个完整传输的签名尺寸,选择合适的q值,使t,k和s确定的情况下,

111、2q+(logt-q+1)*s*k

112、取最小值;

113、最终签名为:

114、当j≠1时:

115、当i=1时,

116、

117、当i=2,3…,s时,

118、

119、其中,i代表一个周期内的签名顺序,代表的公钥从第logt层到第q层的验证路径,1≤jp≤t,p=1,2,...,k,即公钥生成算法pkgen中,使用所在的哈希树计算根节点时,从第logt层到第q层经由的所有旁节点,此处的旁节点是指在计算上一级节点时,除了下一层中的哈希值以外的另一个节点值;为此哈希树的第q层所有节点的值;

120、代表哈希树的第q层中的所有节点对应的哈希值;

121、当j=1时,

122、当i=1时的签名为:

123、

124、其中,认证路径pathpktoroot包含logx个值,为公钥生成算法pkgen中,使用pk1,pk2,…,pk2^q对应的哈希树htroot的根节点作为最高层哈希树htroot的叶节点,构造最高层哈希树的根节点pkroot时,从最底层到最顶层的根节点pkroot经由的所有旁节点,此处的旁节点是指在计算上一级节点时,除了下一层中的哈希值以外的另一个节点值;

125、当i=2,3,…,s时,

126、

127、输出:上述签名值σ,即认证标识;

128、s4:验证算法ver

129、附带认证标识的数据流由发送方传递到接收方时,接收方按照如下方法进行验证:

130、输入:一个完整传输中通信双方交互的数据流和相关索引参数;

131、签名值,其中,第j周期的签名值表示为:

132、当j≠1时:

133、当i=1时,

134、

135、当i=2,3,…,s时,

136、

137、当j=1时,

138、当i=1时的签名为:

139、

140、当i=2,3,…,s时,

141、

142、公钥:seeddg、seedauth、pkroot:

143、数据流;

144、处理:

145、将数据流按照传输片段进行划分,每个传输周期中的数据流为m1,idxpkt,1,m2,idxpkt,2,…,ms,idxpkt,s;

146、调用批量摘要子算法bda计算相关的批量摘要值,第j个周期的批量摘要值表示为bdsi,j,i∈1,2,…,s;

147、当i=1,2,…,s-1时,

148、计算

149、rdmi,j=f1(sk,bdsi,j),

150、dgti,j=h1(rdmi,j,bdsi,j);

151、当i=s时,

152、计算

153、rdms,j=f1(sk,bdss,j||pkj+1)

154、dgts,j=h1(rdms,j,bdss,j||pkj+1).

155、验证

156、当j≠1,i≠1时,

157、输入seedauth,索引标签hidxm,n,(m=0,1,…,logx-2,n=0,1,…,2m-1)k个sealjp(p=1,2,…,k),调用pkgen算法第q层对应的k个节点的哈希值,并比较上述k个节点的哈希值是否等于传输周期中的第一个签名值中对应的pk1,pk2,…,pk2^q;若相等,则签名为真;

158、当j≠1,i=1时,

159、即此签名为一个周期中的第一个签名值且非一个完整传输中的第一个签名,除进行上述验证,还须输入pk1,pk2,…,pk2^q,调用pkgen算法计算哈希树的根节点,并比较其是否等于相应公钥,此公钥已被前一个周期的私钥签名;若相等,则签名为真;

160、当j=1,i=1时,

161、即此签名为一个完整传输中的第一个签名,除进行上述验证,还须输入pkroot、周期索引、身份验证路径;首先,检查周期索引以确保签名使用的是未被使用过的密钥对;然后,输入pkj、pathpktoroot,调用pkgen算法计算从pkj经由pathpktoroot计算的哈希树的根节点是否等于pkroot;若相等,则签名为真;

162、输出:签名为真/假;

163、当接收方输出为真,代表数据和认证标识通过验证,则判断该发送方为所要进行交互的设备,且数据信息无误;若未通过验证,则与发送方交互失败,实现了对发送方身份的真实性和发送数据的完整性的保护;

164、综上,所述抗量子、基于哈希签名且具有小尺寸的签名认证方法,密钥生成和签名发生于发送方,发送方将准备发送给接收方的数据作为输入:首先,按照密钥生成算法gen生成签名密钥和验证密钥对,其中,所述签名密钥即私钥,将用于签名阶段以生成认证标识,所述验证密钥即公钥,由系统中的可信第三方签名并生成x.509证书,并由发送方发送至接收方,已备认证阶段使用;发送方利用私钥和签名算法,准备发送给接收方的数据进行数字签名以生成认证标识;验证发生于接收方,当附带认证标识的数据流由发送方传递到接收方时,接收方使用验证算法ver进行验证,若通过验证,则判断该发送方为所要进行交互的发送方,且数据信息无误;若未通过验证,则与发送方交互失败,实现对发送方的身份的真实性和发送的数据的完整性的保护。

165、现有认证方法主要分为两大类:主流一类为基于经典密码技术设计;前沿一类为基于后量子密码技术设计。

166、本发明与现有技术相比有如下优点:

167、(1)量子安全性。现有的主流认证技术大多基于经典密码学中数论困难假设,此类认证技术不具备抗量子攻击特性。本方法基于五大后量子密码的基于哈希的签名设计,具备天然的抵抗量子攻击的特性,是一种量子安全认证方法;

168、(2)底层安全假设简单。与基于其他四种后量子密码的认证技术相比,本技术只依赖底层哈希函数的安全假设,安全假设更简单,且理论基础更为成熟;

169、(3)算法安全性更高。与基于其他基于哈希的签名的认证技术相比,本方法通过使用可调整哈希函数,可以在更低的安全假设下(非抗碰撞安全),可抵抗多方程多目标攻击,具有更高的安全性;

170、(4)约百倍规模缩减的签名尺寸。基于哈希的认证技术在应用中最大的困扰在于其签名尺寸过大。源于其将一次性签名或少签名与哈希树相结合的设计方法,导致其签名尺寸较大,并带来密钥生成、签名生成和验证的总成本过高等问题,故而在实际应用中受到限制。与其他基于哈希的签名的认证技术相比,本方法认证数据中的签名尺寸有百倍至千倍规模的降低。和现在最主流的基于哈希的签名算法xmss(iso颁布的rfc8391标准)相比,在具体的参数区间内,ebiba-256较xmss-256的签名压缩率为0.828至0.017,因此本技术得到的签名尺寸在特定参数下能实现百倍规模的缩减。

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