一种数字签名的方法、装置、存储介质及电子设备与流程

文档序号:36381087发布日期:2023-12-14 13:27阅读:32来源:国知局
一种数字签名的方法与流程

本技术涉及计算机,尤其涉及一种数字签名的方法、装置、存储介质及电子设备。


背景技术:

1、随着科技的发展,互联网飞速发展。在通信过程中,也即在接收以及发送消息的过程中,为了保证消息的安全性,数字签名算法被广泛使用。在数字签名中,消息发送者可基于私钥对消息进行签名,并将签名后的消息发送给消息接收者,消息接收者可基于消息发送者公布的公钥对签名后的消息进行验签,以确定该消息确实来源于消息发送者,并且该签名使得消息不可被篡改,保证了消息的完整性。

2、然而,量子计算机具备无比强大的计算能力,随着量子计算机的发展,量子计算机完全有可能破解普通的数字签名算法,因此后量子签名算法受到广泛关注。后量子签名算法是指能够在经典计算机与量子计算机上均能保持安全性的一种数字签名算法,也即后量子签名算法是一种不可被量子计算机破解的数字签名算法。

3、基于此,本技术说明书提供了一种数字签名的方法,该方法可以应对量子计算机的攻击,提高了对消息的保护力度。


技术实现思路

1、本说明书提供一种数字签名的方法、装置、存储介质及电子设备,以至少部分的解决现有技术存在的上述问题。

2、本说明书采用下述技术方案:

3、本说明书提供了一种数字签名的方法,所述方法应用于签名方,所述方法包括:

4、响应于用户的数字签名请求,获取待签名消息;并生成原始随机比特、私钥随机种子以及公钥随机种子;

5、基于sm3算法中的hmac函数,根据所述原始随机比特以及所述待签名消息,生成签名随机比特;

6、将所述待签名消息划分为若干消息块;并根据所述消息块的个数,构建由若干merkle树构成的超树;

7、针对每一个消息块,确定在所述超树中该消息块对应的节点;并,根据该消息块对应的节点,确定该消息块对应的adrs;根据所述adrs、所述私钥随机种子以及所述公钥随机种子,生成该消息块对应的节点的第二私钥;根据生成的所述超树中的各节点的第二私钥,得到所述待签名消息对应的第一签名;

8、根据所述超树中的各节点的第二私钥,计算所述超树的根节点的签名,并将计算得到的所述超树的根节点的签名作为第二签名;

9、根据所述第一签名、所述签名随机比特以及所述第二签名,得到所述待签名消息对应的最终签名。

10、可选地,生成该消息块对应的节点的第二私钥,具体包括:

11、采用sm3算法,根据所述adrs、所述私钥随机种子以及公钥随机种子,生成该消息块对应的节点的第二私钥。

12、可选地,生成签名原始随机比特,具体包括:

13、生成私钥随机因子;

14、基于sm3算法中的hmac函数,根据所述原始随机比特、所述私钥随机因子以及所述待签名消息,生成签名随机比特。

15、可选地,在计算所述超树的根节点的签名之前,所述方法还包括:

16、获取原始密钥;其中所述原始密钥包括第一私钥以及原始公钥;

17、计算所述超树的根节点的签名,具体包括:

18、基于sm3算法中的mgf1函数,根据所述签名随机比特、所述私钥随机种子、所述原始公钥以及所述待签名消息,生成所述待签名消息对应的哈希摘要;

19、根据所述哈希摘要以及与该节点相邻的节点的第二私钥,计算所述超树的根节点的签名本说明书提供了一种数字签名的装置,所述装置位于签名方,所述装置包括:

20、响应模块,用于响应于用户的数字签名请求,获取待签名消息;并,生成原始随机比特、私钥随机种子以及公钥随机种子;

21、生成模块,用于基于sm3算法中的hmac函数,根据所述原始随机比特以及所述待签名消息,生成签名随机比特;

22、构建模块,用于将所述待签名消息划分为若干消息块;并,根据所述消息块的个数,构建由若干merkle树构成的超树;

23、第一签名确定模块,用于针对每一个消息块,确定在所述超树中该消息块对应的节点;并,根据该消息块对应的节点,确定该消息块对应的adrs;根据所述adrs、所述私钥随机种子以及所述公钥随机种子,生成该消息块对应的节点的第二私钥;根据生成的所述超树中的各节点的第二私钥,得到所述待签名消息对应的第一签名;

24、第二签名确定模块,用于根据所述超树中的各节点的第二私钥,计算所述超树的根节点的签名,并将计算得到的所述超树的根节点的签名作为第二签名;

25、最终签名确定模块,用于根据所述第一签名、所述签名随机比特以及所述第二签名,得到所述待签名消息对应的最终签名。

26、可选地,所述生成模块具体用于,采用sm3算法,根据所述adrs、所述私钥随机种子以及公钥随机种子,生成该消息块对应的节点的第二私钥。

27、可选地,所述生成模块具体用于,生成私钥随机因子;基于sm3算法中的hmac函数,根据所述随机比特、所述私钥随机因子以及所述待签名消息,生成签名随机比特。

28、可选地,所述响应模块还用于,获取原始密钥;其中所述原始密钥包括第一私钥以及原始公钥;

29、所述第二签名确定模块具体用于,基于sm3算法中的mgf1函数,根据所述签名随机比特、所述私钥随机种子、所述原始公钥以及所述待签名消息,生成所述待签名消息对应的哈希摘要;根据所述哈希摘要以及与该节点相邻的节点的第二私钥,计算所述超树的根节点的签名。

30、本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数字签名的方法。

31、本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数字签名的方法。

32、本说明书采用的上述至少一个技术方案能够达到以下有益效果:

33、从本说明书提供的数字签名的方法中可以看出,签名方对应的服务器可响应于用户的数字签名请求,获取待签名消息,并生成原始随机比特、私钥随机种子以及公钥随机种子。然后基于sm3算法中的hmac函数,根据原始随机比特以及待签名消息,生成签名随机比特。接着将待签名消息划分为若干消息块,并根据消息块的个数,构建由若干merkle树构成的超树,并针对每一个消息块,确定在超树中该消息块对应的节点,根据该消息块对应的节点,确定该消息块对应的adrs,根据adrs、私钥随机种子以及公钥随机种子,生成该消息块对应的节点的第二私钥,根据生成的超树中的各节点的第二私钥,得到待签名消息对应的第一签名。进而根据超树中的各节点的第二私钥,计算超树的根节点的签名,并将计算得到的超树的根节点的签名作为第二签名。最后根据第一签名、签名随机比特以及第二签名,得到待签名消息对应的最终签名。

34、本方法在对数字签名时,区别于目前的sphincs+算法中的签名随机比特生成方法,基于sm3算法中的hmac函数,生成用于得到最终签名的签名随机比特,可以应对量子计算机的攻击,提高了对消息的保护力度。

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