【技术实现步骤摘要】
一种抗量子、基于哈希签名且具有小尺寸的签名认证方法
[0001]本专利技术涉及数据通信信息安全
,具体说是一种抗量子、基于哈希签名且具有小尺寸的签名认证方法。
技术介绍
[0002]大规模数据流在通信双方持续传输的应用背景下,为了确保通信中参与方身份的真实性以及数据的完整性(不被篡改),数据源的身份认证和数据的完整性认证一直是数据通信中的典型需求。数字签名算法为在通信领域进行消息源身份认证和消息完整性认证的非对称密码技术,传统的基于数论困难假设的数字签名方案是应用领域最主流使用的算法,但是随着量子计算的发展,传统的基于数论困难假设的数字签名方案的弊端逐渐显露,如不具备抗量子攻击特性,安全假设复杂,理论基础不成熟,不能抵抗多目标攻击、安全性低。
[0003]作五大后量子密码算法之一,基于哈希的签名技术近年来越来越受到关注,并被广泛用于消息源身份认证和消息完整性认证领域。基于哈希的签名与基于计算困难数论问题的数字签名方案相比,具有抗量子攻击、签名算法的不可伪造性,只基于哈希函数的基本安全假设、高效、易于实现等特点。但是现有的哈希签名技术由于将一次签名(One
‑
time signature)或少次签名(Few
‑
time signature)与哈希树结合的设计,会出现签名尺寸较大,因此密钥生成、签名生成和验证的总成本过高的问题,限制了其实际应用。
技术实现思路
[0004]为解决现有的哈希签名尺寸大、密钥生成、签名生成和验证总成本高的问题,本专利技术的目的
【技术保护点】
【技术特征摘要】
1.一种抗量子、基于哈希签名且具有小尺寸的签名认证方法,其特征在于:它是一种大规模数据流在通信双方持续传输的应用背景下进行数据源的身份认证和数据的完整性认证的签名方法;为表述清楚,现将部分术语定义如下:完整传输:签名者和验证者之间不间断的消息传输,它是一种时间间隔;签名者:即发送方,验证者:即接收方;签名密钥:所述签名密钥即私钥,将用于签名阶段以生成认证标识;验证密钥:所述验证密钥即公钥;x:一个公钥可验证的完整传输的个数;签名周期:使用一组印章进行签名的时间间隔;s:一个签名周期中可签名消息的个数;片段:将多个消息通过批量摘要子算法压缩为一个消息摘要的时间间隔;所述签名认证方法的步骤如下:S1:将发送者和接收者之间的完整传输按时间顺序划分为多个片段,并为每个片段设置一个32位片段标签IDX
smt
,其值由0开始,依次加1;片段的数据通信以起始标识符SRT开始;然后,基于区块大小或发送时间,片段中的数据流被划分为多个数据块,数据块以m表示,为每个数据块m分配标签IDX
msg
,并附加到每个数据块后,其值由0开始,依次加1,每个片段以结束标识符END终止;每个数据块的索引参数IDX
pkt
=IDX
smt
||IDX
msg
;S2:密钥生成算法Gen,其有先后两个步骤S2.1私钥生成子算法SKGEN和S2.2公钥生成子算法PKGEN所述密钥生成算法Gen为发送方使用前向安全的伪随机函数生成签名密钥和验证密钥,为构造不可伪造的前向安全签名方案提供密钥;该算法包含私钥生成子算法SKGEN和公钥生成子算法PKGEN;S2.1私钥生成子算法SKGEN私钥生成子算法从初始状态SEED
fws
开始,使用第j
‑
1周期的种子密钥seed
j
‑1来生成第j周期的种子密钥seed
j
,然后,使用seed
j
生成周期j中的包含t个印章SEAL
i,j
(1≤i≤t)的私钥SK
periodj
,j=1,2,
…
,x+l,其中x、t的取值均为2的次方;生成算法如下所示:输入:伪随机函数Q:={q
k
:k
×
(0,1)
n
→
{0,1)
n
|k∈(0,1)
n
};n为安全参数,n的取值依据算法在应用中被设置的安全级别而定;私钥生成种子SEED
fws
:随机选取自(0,1)
n
的均匀分布;处理:seed0=SEED
fwsfws
j=1,2,...,x+l.
输出:SK
periodj
,j=1,2,
…
,x+l;其中,前x个私钥SK
periodj
,j=1,2,
…
,x,在每次完整传输开始时被用作第一个签名密钥,后l个私钥,SK
periodj
,j=x+1,x+2,
…
,x+l,被用作后续签名密钥,在完整传输中被依次使用;x的赋值是随机的,如当x=10,l=10时,前10个私钥SK
periodj
,j=1,2,
…
,8,9,10在每次完整传输开始时被用作第一个签名密钥,后10个私钥SK
periodj
,j=11,12,
…
,18,19,20被用作后续签名密钥,在完整传输中被依次使用;S2.2公钥生成子算法PKGEN步骤S2.1生成私钥后,公钥生成子算法PKGEN基于可调整哈希函数以SK
periodj
,j=1,2,
…
,x+l,作为输入,利用哈希树来生成相应的公钥;具体来说:首先,以sk
periodj
,j=x+1,x+2,
…
,x+l作为伪随机函数F的输入生成PK
periodj
,j=1,2,
…
,x+l;然后,以公钥生成种子SEED
auth
和标签HIDX
m,n
作为伪随机函数R的输入,来生成每步迭代所需的KEY和MSK;接着,以每个PK
periodj
的各个分量作为哈希树的叶节点,利用可调整哈希函数th来生成哈希树的根节点,依次生成PK
j
,j=1,2,
…
,x+l;最后,以PK
j
,j=1,2,
…
,x作为哈希树HT
root
的叶节点,按照生成每步迭代所需的KEY和MSK和生成PK
j
,j=1,2,
…
,x+l的步骤,构造哈希树HT
root
的根节点PK
root
,根节点PK
root
即为公钥;具体的处理过程为:输入:安全参数n;伪随机函数伪随机函数R:={r
SEED
:IDX
→
KEY||MSK|SEED∈(0,1)
n
};可调整哈希函数th:={(0,1)
n
×
(0,1)
4n
→
(0,1)
n
};公钥生成种子SEED
auth
:随机选取自(0,1)
n
的均匀分布;标签HIDX
m,n
序列:由完整传输的序号、对应各级节点在认证树中的位置组成,其中,m=0,1,...logt
‑
1,n=0,1,...2
m
‑
1;分别代表相应的节点在认证树中从上到下的层数和在每层中从左到右的位置数,m、n计数均从0开始,依次加1;所述各级节点包括根节点和叶节点,以下用N
m,n
来表示;处理:
①
以下过程计算PK
j
,j=1,2,
…
,x+l;a.对于每个j∈1,2,...,x+l,
b.利用伪随机函数R生成每步迭代所需的密钥和掩码,以下分别用带下标的KEY和MSK来表示:r(SEED
auth
,HIDX
m,n
)=KEY
m,n
||MSK
m,n
,m=0,1,...logt
‑
2,n=0,1,...,2
m
‑
1;c.计算此哈希树的根节点N
0,0
:m的取值依次为logt
‑
1,logt
‑
2,...,0,对于上述每个m,计算:其中,n取值依次为0,2,4,...,2
m
‑
2;PK
j
=N
0,0
;
②
以下过程计算PK
root
:a.N
logx,0
,N
logx,1
,...N
logx,x
‑1=PK1,PK2,...,PK
x
b.利用伪随机函数R生成每步迭代所需的KEY和MSK:r(SEED
auth
,HIDX
m,n
)=KEY
m,n
||MSK
m,n
,m=0,1,2,...logx
‑
2,n=0,1,2,...,2
m
‑
1;c.计算此哈希树的根节点N
0,0
:m的取值依次为logx
‑
1,logx
‑
2,...,0,对于上述每个m,计算:其中,n取值依次为0,2,4,...,2
m
‑
2;PK
root
=N
0,0
;S3:签名算法Sig,其有先后两个步骤S3.1批量摘要子算法BDA和S3.2签名子算法:S3.1批量摘要子算法BDA批量摘要子算法的具体步骤如下:批量摘要子算法将S1阶段处理后的数据以片段为单位输入,对于每一个片段中的所有数据块及其索引参数m1,IDX
pkt,1
,m2,IDX
pkt,2
,
…
,m
j
,IDX
pkt,j
,利用伪随机函数P和哈希函数族T,生成每个片段中所有数据块的批量摘要值BDS;一个完整传输中所有的批量摘要值按时间顺序记为BDS1,BDS2,
…
;对一个片段中的数据进行批量摘要过程如下:输入:安全参数n;一个传输片段中的所有数据块m1,...,m
j
;伪随机函数P:={p
SEED
:(0,1)
64
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。