掌桥专利:专业的专利平台
掌桥专利
首页

数字签名方法、签名信息的验证方法、相关装置及电子设备

文献发布时间:2023-06-19 11:45:49


数字签名方法、签名信息的验证方法、相关装置及电子设备

技术领域

本申请涉及量子计算技术领域,尤其涉及量子计算中的信息安全领域,具体涉及一种数字签名方法、签名信息的验证方法、相关装置及电子设备。

背景技术

数字签名是一个基本的公钥密码学任务,公钥密码学是指密码方案中包含公钥和私钥,公钥可以公开,从而可以使两个用户在未建立通讯的前提下进行加密解密和身份验证。而数字签名的目标是对文件的发送者进行身份验证,从而确保文件的发送者是真实的,这在电子商务和互联网协议中具有基础的重要性。

目前,在互联网通讯中,通常使用的数字签名方案是基于大数分解和离散对数的困难性,如基于迪菲-赫尔曼密钥交换的非对称加密算法。

发明内容

本公开提供了一种数字签名方法、签名信息的验证方法、相关装置及电子设备。

根据本公开的第一方面,提供了一种数字签名方法,所述方法应用于第一电子设备,包括:

获取待发送文件和所述第一电子设备用于数字签名的私钥,所述私钥包括第一可逆矩阵;

基于所述第一可逆矩阵和随机生成的第一张量,生成L个第二张量,所述L个第二张量包括所述第一张量和与所述第一张量同构的张量,L为大于1的正整数;

基于随机生成的第二可逆矩阵和所述第一张量,对所述待发送文件进行数字签名,得到第一字符串;

基于所述L个第二张量,构建哈希树的根节点的哈希值;

基于所述第一字符串、第一可逆矩阵、第二可逆矩阵、L个第二张量和哈希树的根节点的哈希值,生成所述第一电子设备针对所述待发送文件的签名信息。

根据本公开的第二方面,提供了一种签名信息的验证方法,所述方法应用于第二电子设备,包括:

获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括哈希树的根节点的哈希值;

基于所述签名信息,生成Q个第二目标字符串,Q为正整数;

在所述哈希树的根节点的哈希值与每个第二目标字符串均相等的情况下,基于所述签名信息,生成第四张量;

基于所述第四张量,对所述待发送文件进行数字签名,得到第二字符串;

基于所述第二字符串对所述签名信息进行验证。

根据本公开的第三方面,提供了一种数字签名装置,所述装置应用于第一电子设备,包括:

第一获取模块,用于获取待发送文件和所述第一电子设备用于数字签名的私钥,所述私钥包括第一可逆矩阵;

第一生成模块,用于基于所述第一可逆矩阵和随机生成的第一张量,生成L个第二张量,所述L个第二张量包括所述第一张量和与所述第一张量同构的张量,L为大于1的正整数;

第一数字签名模块,用于基于随机生成的第二可逆矩阵和所述第一张量,对所述待发送文件进行数字签名,得到第一字符串;

构建模块,用于基于所述L个第二张量,构建哈希树的根节点的哈希值;

第二生成模块,用于基于所述第一字符串、第一可逆矩阵、第二可逆矩阵、L个第二张量和哈希树的根节点的哈希值,生成所述第一电子设备针对所述待发送文件的签名信息。

根据本公开的第四方面,提供了一种签名信息的验证装置,所述装置应用于第二电子设备,包括:

第二获取模块,用于获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括哈希树的根节点的哈希值;

第四生成模块,用于基于所述签名信息,生成Q个第二目标字符串,Q为正整数;

第五生成模块,用于在所述哈希树的根节点的哈希值与每个第二目标字符串均相等的情况下,基于所述签名信息,生成第四张量;

第二数字签名模块,用于基于所述第四张量,对所述待发送文件进行数字签名,得到第二字符串;

验证模块,用于基于所述第二字符串对所述签名信息进行验证。

根据本公开的第五方面,提供了一种电子设备,包括:

至少一个处理器;以及

与至少一个处理器通信连接的存储器;其中,

存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够执行第一方面中的任一项方法,或者执行第二方面中的任一项方法。

根据本公开的第六方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行第一方面中的任一项方法,或者执行第二方面中的任一项方法。

根据本公开的第七方面,提供了一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,所述电子设备能够执行第一方面中的任一项方法,或者执行第二方面中的任一项方法。

根据本申请的技术解决了数字签名安全性比较低的问题,提高了数字签名的安全性。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1是根据本申请第一实施例的数字签名方法的流程示意图;

图2是目标张量相对哈希树的根节点的认证路径的计算实现示意图;

图3是根据本申请第二实施例的签名信息的验证方法的流程示意图;

图4是根据本申请第三实施例的数字签名装置的结构示意图;

图5是根据本申请第四实施例的签名信息的验证装置的结构示意图;

图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

第一实施例

如图1所示,本申请提供一种数字签名方法,所述方法应用于第一电子设备,包括如下步骤:

步骤S101:获取待发送文件和所述第一电子设备用于数字签名的私钥,所述私钥包括第一可逆矩阵。

本实施例中,数字签名方法涉及量子计算技术领域,尤其涉及量子计算相关的信息安全领域,其可以广泛应用于电子商务、身份验证和软件分发等诸多场景。

比如,在身份验证的应用场景,设甲方需要将一份文件发送给乙方,而乙方需要验证这份文件确实是由甲方而非其他人发出的。此时,甲方可以对这份文件进行数字签名,而乙方接受到文件和相对应的签名信息,并获得甲方公开广播的公钥后,可以验证这份文件的发送方的确为甲方。

又比如,在软件分发的应用场景,可以对所获得的软件进行发布者的身份验证,从而确定该软件的来源。

实际使用时,本申请实施例的数字签名方法,可以由本申请实施例的数字签名装置执行。本申请实施例的数字签名装置可以配置在任意第一电子设备中,以执行本申请实施例的数字签名方法。第一电子设备可以为服务器,也可以为终端,这里不做具体限定。

所述第一电子设备作为通信的发送方,可以与其他电子设备进行通信,以发送文件。在发送文件之前,为了使其他电子设备能够验证接收的文件的确由第一电子设备发送,且验证发送方的真实性,第一电子设备可以使用数字签名技术对待发送文件进行数字签名。

所述待发送文件指的是所述第一电子设备需要发送给其他电子设备的文件,其类型可以为文本、压缩包或音视频等。

所述私钥可以为所述第一电子设备预先存储,并用于对第一电子设备的待发送文件进行加密以及数字签名的参数。所述私钥可以与公钥对应,私钥和公钥的组合可以称之为密钥对,且所述公钥通常是由第一电子设备公开给其他电子设备,以使其他电子设备可以使用该公钥对所述第一电子设备的签名信息进行验证。

作为公钥密码学中的任务,数字签名方案需要基于某个算法问题的困难性,以保证数字签名的安全性。而随着量子计算机的发展,现有的数字签名方案所基于的算法问题通常对量子计算机来说可能并不困难,即所基于的算法问题可能无法对抗量子攻击,因此,数字签名的安全性受到威胁。

其中,上述提到的困难性是一个微妙的概念。首先,不同于一般认为最坏意义下的困难,这里需要是平均意义上的困难,即对于大部分输入都不存在有效的算法。其次,由于并非所有的困难的问题都对应着合适的数字签名协议,因此基于该问题还需要设计相应的协议。最后,还需要从量子算法设计的角度探讨该问题在后量子密码学的范畴内的可用性,比如大数分解问题,虽然从经典计算机的角度看是困难的,而从量子计算的角度却是容易的。

从计算复杂性的角度,张量同构问题可以被认为是同构类型问题中比较困难的问题。而从量子计算的角度,由于张量同构问题的求解困难性,采用张量同构问题设计的数字签名在量子算法角度的安全性提供了保障。因此,本申请实施例中,所基于的算法问题可以采用张量同构问题,利用张量同构问题对大部分计算机(包括量子计算机)的角度的求解困难性,来进行数字签名的设计。

以下可以对张量同构问题进行描述。

设p为一个素数,GF(p)表示模p域,用GL(n,p)表示GF(p)上的n×n大小的可逆矩阵的集合。在GF(p)上的多阶矩阵可以称之为一个张量,其中,张量的阶数通常大于2。

以张量为三阶矩阵为例,张量可以称之为n×n×n的矩阵,其有n×n×n个分量,n可以称之为张量的维数。令一张量为A,用A=(a

其中,公式

需要说明的是,在张量为更高阶矩阵的情况下,张量同构问题还可以推广至为更高阶矩阵的张量上,也就是说,更高阶矩阵的张量同构问题可以依据三阶矩阵的张量同构问题进行类推。比如,针对两个为四阶矩阵的张量,分别可以用A=(a

在张量同构问题的前提下,由于即使知道两个张量为同构的张量,也很难求解这两个张量之间变换的可逆矩阵,因此,为了保证数字签名的安全性,所述第一电子设备用于数字签名的私钥可以设置为矩阵形式,以保证私钥被破解的困难性。

具体的,所述私钥可以包括第一可逆矩阵,而公钥可以设置为张量形式或根据张量变换来的字符串(该字符串可以为基于张量设置的哈希值),并将公钥进行公布。这样,若其他电子设备需要伪造第一电子设备针对待发送文件的签名信息,需要根据公钥去破解得到私钥,这就相当于其他电子设备需要求解一个张量同构问题。由于张量同构问题的求解困难性,因此,其他电子设备很难根据公钥破解得到第一电子设备的私钥,如此,其他电子设备是很难伪造第一电子设备的签名,从而可以保证数字签名的安全性。

在实际应用中,可以基于张量同构问题,采用经典的图同构问题的零知识交互协议构造身份认证协议。根据所需的安全性,可以将该协议进行若干轮,且每一轮中产生多个张量。基于该身份认证协议,可以使用经典的身份识别协议Fiat-Shamir转换过程构造数字签名方案。

在数字签名方案中,重要的参数可以包括签名长度、公钥长度、以及产生密钥、产生签名和验证签名的运行时间。根据协议中的主要参数(比如,n为张量的维数即张量规模,p为域的大小即数域规模,r为轮数即签名长度参数,λ为安全性参数,s为哈希树深度,令t=2

可以有多种方式获取所述待发送文件,比如,可以从预先存储的文件中获取待发送文件,又比如,可以主动生成待发送文件。

所述私钥可以由第一电子设备预先生成并存储在数据库中的,也可以由开发商预先设置并存储在数据库中的,这里不做具体限定。

所述私钥以由第一电子设备预先生成并存储在数据库中为例,所述第一电子设备可以随机生成至少一个第一可逆矩阵,如随机生成t-1个第一可逆矩阵,用C

步骤S102:基于所述第一可逆矩阵和随机生成的第一张量,生成L个第二张量,所述L个第二张量包括所述第一张量和与所述第一张量同构的张量,L为大于1的正整数。

以采用三阶矩阵的张量同构问题来进行数字签名方案的设计为例,在构造第一电子设备的私钥和公钥时,可以随机生成一个第一张量,可以用A

对于i∈{1,...,t-1},第一电子设备可以基于私钥中的所述第一可逆矩阵和第一张量,构造与所述第一张量同构的张量,其构造的公式可以为

在实际应用中,L的值可以为t。可以将所述L个第二张量作为公钥发送给其他电子设备,由于将所述L个第二张量作为公钥发送给其他电子设备最大的问题是公钥长度比较大,其对公钥需要交互的场景下应用时效率会很大程度受到影响,因此,也可以将基于所述L个第二张量变换来的字符串作为公钥发送给其他设备,且该字符串可以为基于张量设置的哈希值,以下对此进行详细说明,这里不做具体限定。

步骤S103:基于随机生成的第二可逆矩阵和所述第一张量,对所述待发送文件进行数字签名,得到第一字符串。

可以基于随机生成的第二可逆矩阵和所述第一张量,采用哈希函数对所述待发送文件进行数字签名,得到第一字符串。

具体的,可以基于随机生成的第二可逆矩阵和所述第一张量,生成与所述第一张量同构的第三张量;基于所述第三张量,对所述待发送文件进行数字签名,得到第一字符串。

实际应用中,对于i∈{1,...,r},r可以为正整数,第一电子设备可以随机生成至少一个第二可逆矩阵,这至少一个第二可逆矩阵可以用D

之后,可以使用哈希函数(用H表示),对所述待发送文件(用M表示)进行数字签名,具体的,可以将待发送文件M与第三张量B

其中,M|B

步骤S104:基于所述L个第二张量,构建哈希树的根节点的哈希值。

该步骤中,在密码学和计算机科学中,哈希树是一种树型数据结构,其可以包括多层,每层由至少一个节点构成,每个节点均以数据块的哈希作为标签,而除了叶子节点以外的节点则以其子节点标签的加密哈希作为标签。

可以基于所述L个第二张量,采用哈希函数构建哈希树的根节点的哈希值,并且,可以直接基于所述L个第二张量来构建哈希树,也可以基于所述L个第二张量和随机生成的第一目标字符串来构建哈希树。

以基于所述L个第二张量和随机生成的第一目标字符串来构建哈希树为例,具体的,可以随机生成第一目标字符串,可以用MerkleKey表示,具体可以基于随机函数如uniform或random等生成MerkleKey。

其中,MerkleKey可以为长度为λ的01字符串,λ可以为安全性参数,即可以根据数字签名需要达到的安全性,对λ进行设置,如数字签名若需要达到128bit的安全性,λ可以设置为128。

可以基于所述L个第二张量构造所述哈希树的叶子节点,具体可以使用哈希函数H构建哈希树的第s层即叶子节点对应的层,用公式h

继续使用哈希函数H构建哈希树的其他内部节点,用公式h

步骤S105:基于所述第一字符串、第一可逆矩阵、第二可逆矩阵、L个第二张量和哈希树的根节点的哈希值,生成所述第一电子设备针对所述待发送文件的签名信息。

所述签名信息可以包括第一字符串、由第一字符串、第一可逆矩阵和第二可逆矩阵生成的目标矩阵、基于所述第一字符串从所述L个第二张量选取的N个第二张量、以及针对所述N个第二张量中每个第二张量,基于所述第二张量和哈希树的根节点的哈希值所确定的第二张量相对所述哈希树的根节点的认证路径。其中,第二张量相对所述哈希树的根节点的认证路径包括一系列哈希值,即从第二张量开始计算至哈希树中根节点的哈希值所需要的全部信息。

在一可选实施方式中,所述签名信息可以包括由第一字符串切分成的多个字符串、由这多个字符串、第一可逆矩阵和第二可逆矩阵生成的目标矩阵、N个第二张量和所述N个第二张量中每个第二张量相对所述哈希树的根节点的认证路径。

本实施例中,通过获取待发送文件和所述第一电子设备用于数字签名的私钥,所述私钥包括第一可逆矩阵;基于所述第一可逆矩阵和随机生成的第一张量,生成L个第二张量,所述L个第二张量包括所述第一张量和与所述第一张量同构的张量;基于随机生成的第二可逆矩阵和所述第一张量,对所述待发送文件进行数字签名,得到第一字符串;基于所述L个第二张量,构建哈希树的根节点的哈希值;基于所述第一字符串、第一可逆矩阵、第二可逆矩阵、L个第二张量和哈希树的根节点的哈希值,生成所述第一电子设备针对所述待发送文件的签名信息。如此,通过张量同构问题并结合哈希树进行数字签名,若其他电子设备需要伪造第一电子设备针对待发送文件的签名信息,需要根据公钥(可以包括同构的张量或基于同构的张量生成的哈希值)去破解得到私钥,这就相当于其他电子设备需要求解一个哈希树的解密问题和张量同构问题,使得其他设备在不知道私钥的情况下,通过公钥伪造私钥非常困难,从而使得伪造数字签名非常困难,进而可以提高数字签名的安全性。

可选的,所述步骤S105具体包括:

将所述第一字符串进行切分,得到P个字符串,P为大于1的正整数;

基于所述P个字符串、第一可逆矩阵和第二可逆矩阵,生成目标矩阵;

基于所述P个字符串,从所述L个第二张量中选取N个第二张量,N为正整数;

针对所述N个第二张量中每个第二张量,基于所述哈希树的根节点的哈希值和所述第二张量,确定所述第二张量相对所述哈希树的根节点的认证路径;

其中,所述签名信息包括所述P个字符串、所述目标矩阵、所述N个第二张量和所述N个第二张量中每个第二张量相对所述哈希树的根节点的认证路径。

本实施方式中,可以将所述第一字符串进行切分,得到多个字符串,比如,得到r个长度为s的01字符串,这r个字符串分别可以用f

可以基于所述P个字符串、第一可逆矩阵和第二可逆矩阵,生成目标矩阵,具体的,对于i∈{1,...,r},所述第一电子设备可以采用公式

之后,可以基于所述P个字符串,从所述L个第二张量中选取N个第二张量,具体可以从A

针对i∈{1,...,r},分别基于第二张量

也就是说,基于第二张量

最终,可以基于这r个字符串、多个目标矩阵、N个第二张量和所述N个第二张量中每个第二张量相对所述哈希树的根节点的认证路径,确定所述第一电子设备针对所述待发送文件的签名信息,所述签名信息即为

若有另一电子设备如第三电子设备希望假扮第一电子设备,希望对待发送文件M产生签名,由于第三电子设备没有私钥,因此,其无法基于私钥生成目标矩阵,即无法采用公式

另外,第三电子设备对协议直接的攻击方法都会归结于这样的问题:其需要找到一种方法产生多个01字符串,用g

因此,基于上述两点,第三电子设备伪造第一电子设备的签名信息非常困难。

进一步的,协议中的参数组合可以做如下设置,以达到128bit的安全性,如下表1所示。

表1 对达到128bit安全性的一些参数组合

本实施方式中,将所述第一字符串进行切分,得到P个字符串;基于所述P个字符串、第一可逆矩阵和第二可逆矩阵,生成目标矩阵;基于所述P个字符串,从所述L个第二张量中选取N个第二张量;针对所述N个第二张量中每个第二张量,基于所述哈希树的根节点的哈希值和所述第二张量,确定所述第二张量相对所述哈希树的根节点的认证路径;其中,所述签名信息包括所述P个字符串、所述目标矩阵、所述N个第二张量和所述N个第二张量中每个第二张量相对所述哈希树的根节点的认证路径。如此,这使得其他电子设备在不知道私钥的情况下,通过张量同构问题结合哈希树生成的公钥伪造其之间的可逆矩阵即伪造私钥非常困难,同时,基于哈希树的根节点去破解哈希树也非常困难,从而使得伪造数字签名非常困难,进而可以提高数字签名的安全性。

可选的,所述N个第二张量包括目标张量,所述目标张量为所述N个第二张量中任一张量,所述针对所述N个第二张量中每个第二张量,基于所述哈希树的根节点的哈希值和所述第二张量,确定所述第二张量相对所述哈希树的根节点的认证路径,包括:

基于所述哈希树中所述目标张量对应的叶子节点的哈希值和所述哈希树的根节点的哈希值,确定从所述哈希树中所述目标张量对应的叶子节点至根节点所途径的节点的目标哈希值;

其中,所述目标张量相对所述哈希树的根节点的认证路径包括:所述目标哈希值,以及从所述哈希树中所述目标张量对应的叶子节点至根节点所途径的节点在所述哈希树中的位置。

本实施方式具体描述了目标张量相对所述哈希树的根节点的认证路径,在构建哈希树时,哈希树中的每一个节点都会储存哈希函数的值即哈希值,如节点A所存储的哈希值是且仅是其下方两个子节点的哈希值,其所在位置和第一目标字符串MerkleKey的函数。因此,只要知道两个子节点的哈希值、节点A的位置以及MerkleKey,即可以用哈希函数H计算出节点A所储存的哈希值。而认证路径就是计算所途径的节点所需要的全部信息,以至于可以计算出根节点的哈希值。需要说明的是,第一电子设备的签名过程与第二电子设备的验签过程所采用的哈希函数应当是统一的。

参见图2,图2是目标张量相对哈希树的根节点的认证路径的计算实现示意图,如图2所示,首先基于目标张量,调用哈希函数确定哈希树中目标张量对应的叶子节点201的哈希值,从叶子节点201游历至根节点202,需要途径叶子节点203、节点204和节点205。

而从叶子节点201游历至根节点202所途径的节点与哈希树中其他节点如节点206的区别在于,节点206可以基于叶子节点201和叶子节点203的哈希值计算得到,而所途径的节点需要根据其位置获取哈希树中节点的哈希值。这些所途径的节点的哈希值可以用来结合目标张量来计算哈希树的根节点的哈希值。

其中,在获取到叶子节点201的哈希值的情况下,可以获取叶子节点203的位置以及哈希值,比如,叶子节点203在叶子节点201的左边,相应获取在邻近叶子节点201左边的叶子节点203的哈希值,所述目标张量相对于哈希树根节点的认证路径包括叶子节点203的位置和哈希值。

之后,基于叶子节点201的哈希值和叶子节点203的哈希值,调用哈希函数可以获取其父节点的哈希值,相应的,可以获取途径节点包括其父节点右边位置的节点204,相应的,可以获取哈希树中该位置的节点204的哈希值,所述目标张量相对于哈希树根节点的认证路径包括节点204的位置和哈希值。

而节点205的哈希值的获取方式和节点204的哈希值的获取方式类似,这里不再进行赘述。最终,可以基于节点204的父节点的哈希值和节点205的哈希值计算得到一个哈希值,使该哈希值与哈希树的根节点的哈希值相等,而目标张量相对哈希树的根节点的认证路径包括节点203的位置和哈希值、节点204的位置和哈希值、以及节点205的位置和哈希值。

本实施方式中,通过基于所述哈希树中所述目标张量对应的叶子节点的哈希值和所述哈希树的根节点的哈希值,确定从所述哈希树中所述目标张量对应的叶子节点至根节点所途径的节点的目标哈希值,从而可以得到目标张量相对哈希树的根节点的认证路径,进而可以基于该认证路径实现第一电子设备的数字签名。

可选的,所述步骤103具体包括:

基于随机生成的第二可逆矩阵和所述第一张量,生成与所述第一张量同构的第三张量;

基于所述第三张量,对所述待发送文件进行数字签名,得到第一字符串。

本实施方式中,对于i∈{1,...,r},r可以为正整数,第一电子设备可以随机生成至少一个第二可逆矩阵,这至少一个第二可逆矩阵可以用D

之后,可以使用哈希函数(用H表示),对所述待发送文件(用M表示)进行数字签名,具体的,可以将待发送文件M与第三张量B

其中,M|B

本实施方式中,通过基于随机生成的第二可逆矩阵和所述第一张量,生成与所述第一张量同构的第三张量;基于所述第三张量,对所述待发送文件进行数字签名,得到第一字符串,从而可以实现数字签名。

可选的,所述步骤S104具体包括:

基于所述L个第二张量和随机生成的第一目标字符串,构建哈希树的叶子节点的哈希值;

基于所述哈希树的叶子节点的哈希值和所述第一目标字符串,构建所述哈希树的节点中除所述叶子节点之外的其他节点的哈希值,所述其他节点包括所述哈希树的根节点。

本实施方式描述的是基于所述L个第二张量和随机生成的第一目标字符串来构建哈希树的具体过程。

可以随机生成第一目标字符串,可以用MerkleKey表示,具体可以基于随机函数如uniform或random等生成MerkleKey。

其中,MerkleKey可以为长度为λ的01字符串,λ可以为安全性参数,即可以根据数字签名需要达到的安全性,对λ进行设置,如数字签名若需要达到128bit的安全性,λ可以设置为128。

可以基于所述L个第二张量构造所述哈希树的叶子节点,具体可以使用哈希函数H构建哈希树的第s层即叶子节点对应的层,用公式h

继续使用哈希函数H构建哈希树的其他内部节点,用公式h

本实施方式中,通过基于所述L个第二张量和随机生成的第一目标字符串,来构建哈希树的根节点的哈希值,如此,可以提高哈希树的破解难度,进而可以进一步提高数字签名的安全性。

可选的,所述步骤S101之前,还包括:

生成与所述私钥对应的公钥,所述公钥包括所述第一目标字符串和哈希树的根节点的哈希值;

将所述公钥进行公布。

本实施方式是基于私钥生成公钥的过程,且为了使其他电子设备在接收到所述第一电子设备发送的签名信息和待发送文件的情况下,可以对待发送文件的发送方即第一电子设备进行身份验证,需要将私钥对应的公钥进行公布。

所述私钥包括第一可逆矩阵C

随机生成第一目标字符串MerkleKey,基于MerkleKey和所述L个第二张量,采用哈希函数构建哈希树的叶子节点的哈希值,其构建过程在上述已经详细描述,这里不再对其进行赘述。需要说明的是,第一电子设备的签名过程和第二电子设备的验签过程,其采用的第一目标字符串应当是统一的。

继续基于叶子节点的哈希值和MerkleKey,采用哈希函数构建哈希树中其他节点的哈希值,最终可以构建出哈希树的根节点的哈希值。其中,所述私钥对应的公钥包括所述第一目标字符串和哈希树的根节点的哈希值。

之后,可以将生成的所述公钥进行公布,相应的,其他电子设备即可以得到所述第一电子设备的公钥。

本实施方式中,通过私钥和随机生成的初始张量去构造与该初始张量同构的张量,得到L个第二张量,并基于所述L个第二张量和第一目标字符串,构建哈希树的根节点的哈希值,将哈希树的根节点的哈希值和第一目标字符串作为第一电子设备的公钥进行公布。如此,可以使得公钥的长度大大减小,从而可以提高公钥需要交互的场景下的应用效率。

第二实施例

如图3所示,本申请提供一种签名信息的验证方法,所述方法应用于第二电子设备,包括如下步骤:

步骤S301:获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括哈希树的根节点的哈希值;

步骤S302:基于所述签名信息,生成Q个第二目标字符串,Q为正整数;

步骤S303:在所述哈希树的根节点的哈希值与每个第二目标字符串均相等的情况下,基于所述签名信息,生成第四张量;

步骤S304:基于所述第四张量,对所述待发送文件进行数字签名,得到第二字符串;

步骤S305:基于所述第二字符串对所述签名信息进行验证。

本实施例中,所述第二电子设备为接收待发送文件的电子设备,第一电子设备可以将待发送文件和所述待发送文件的签名信息发送给第二电子设备,相应的,第二电子设备可以接收所述待发送文件、待发送文件的签名信息。

且所述第一电子设备在发送待发送文件和所述待发送文件的签名信息之前,会将用于验证其身份的公钥进行公布,相应的,第二电子设备可以获取所述第一电子设备公布的公钥。

所述公钥与所述签名信息关联的私钥对应,即所述公钥与生成所述签名信息的私钥为一密钥对,所述公钥中可以包括哈希树的根节点的哈希值,同时,所述公钥中还可以包括第一目标字符串。

在第二电子设备可以对签名信息进行双重验证,以保证验证的准确性。

第一重验证具体可以为基于所述签名信息生成Q个第二目标字符串,Q为正整数,比对公钥中所述哈希树的根节点的哈希值与每个第二目标字符串是否相等,在均相等的情况下,才进行第二重验证,否则,在存在有一个第二目标字符串与哈希树的根节点的哈希值不相等的情况下,验证失败。

在所述哈希树的根节点的哈希值与每个第二目标字符串均相等的情况下,启动第二重验证,具体可以基于所述签名信息,生成第四张量,所述第四张量可以用B′

之后,可以基于所述第四张量,采用哈希函数对所述待发送文件进行数字签名,得到第二字符串。具体的,可以将待发送文件M与第四张量B'

其中,M|B'

最后,可以基于所述第二字符串对所述签名信息进行验证,在所述第二字符串与所述签名信息中的字符串全部相同的情况下,所述签名信息验证成功,即所述待发送文件确实是所述第一电子设备发送的。在所述第二字符串与所述签名信息中的字符串不完全相同的情况下,所述签名信息验证失败,即所述待发送文件是其他电子设备而非第一电子设备发送的。

本实施例中,通过基于所述签名信息,生成Q个第二目标字符串;在所述哈希树的根节点的哈希值与每个第二目标字符串均相等的情况下,基于所述签名信息,生成第四张量;基于所述第四张量,对所述待发送文件进行数字签名,得到第二字符串;基于所述第二字符串对所述签名信息进行验证。如此,第二电子设备在获取到第一电子设备公布的公钥的情况下,基于公钥以及接收到的待发送文件和所述待发送文件的签名信息,即可以非常方便地对签名信息进行验证,以验证待发送文件的发送方的身份。同时,对签名信息进行双重验证,进一步可以保证验证的准确性。

可选的,所述签名信息包括P个字符串,P为大于1的正整数,所述步骤S305具体包括:

将所述第二字符串进行切分,得到K个字符串,P等于K;

在所述P个字符串与所述K个字符串一一相等的情况下,确定所述签名信息验证成功;或者,在所述P个字符串中第三目标字符串与所述K个字符串中第四目标字符串不相等的情况下,确定所述签名信息验证失败,所述第三目标字符串在所述P个字符串的位置与所述第四目标字符串在所述K个字符串的位置对应,所述第三目标字符串为所述P个字符串中任一字符串。

本实施方式中,可以将所述第二字符串进行切分,得到多个字符串,比如,得到r个长度为s的01字符串,这r个字符串分别可以用f

对于i∈{1,...,r},若均有f

本实施方式中,通过将所述第二字符串进行切分,得到多个字符串,并将这多个字符串与所述签名信息中的多个字符串进行一一比对,在均相同的情况下,所述签名信息验证成功,在存在任一字符串不相同的情况下,所述签名信息验证失败,如此,可以非常方便地对签名信息进行验证。

可选的,所述签名信息包括N个第二张量和所述N个第二张量中每个第二张量相对所述哈希树的根节点的认证路径,所述步骤S302具体包括:

针对所述N个第二张量中每个第二张量,基于所述第二张量和所述第二张量相对所述哈希树的根节点的认证路径,生成所述第二张量对应的第二目标字符串,Q等于N。

本实施方式中,对于i∈{1,...,r},基于第二张量

本实施方式中,通过所述签名信息中第二张量和第二张量相对所述哈希树的根节点的认证路径,反复调用哈希函数来得到第二目标字符串,并将该第二目标字符串与哈希树的根节点的哈希值进行比对,从而可以实现签名信息的第一重验证。

为了验证本申请实施例中的数字签名方法和签名信息的验证方法的优势,可以从运行时间、公钥长度和签名长度等方面比对本申请实施例的方案和其他方案,本申请实施例的方案为基于张量同构方案(加入哈希树技术)处理器主频2.4GHz,其他方案可以包括基于格问题的签名方案Falcon处理器主频3.3GHz、基于张量同构的签名方案处理器主频2.4GHz和基于哈希函数的签名方案SPHINCS+处理器主频3.5GHz。

本申请实施例的方案基于编程语言Python原型实现,各个方案的运行时间表如下表2所示,且各个方案的公钥长度和签名长度表如下表3所示。

表2 各个方案的运行时间表

表3 各个方案的公钥长度和签名长度表

从表2可以看出,相较于其他方案,本方案在运行时间上均有明显改善,而从表3可以看出,相较于其他方案,本方案可以大幅降低公钥长度。

第三实施例

如图4所示,本申请提供一种数字签名装置400,所述装置应用于第一电子设备,包括:

第一获取模块401,用于获取待发送文件和所述第一电子设备用于数字签名的私钥,所述私钥包括第一可逆矩阵;

第一生成模块402,用于基于所述第一可逆矩阵和随机生成的第一张量,生成L个第二张量,所述L个第二张量包括所述第一张量和与所述第一张量同构的张量,L为大于1的正整数;

第一数字签名模块403,用于基于随机生成的第二可逆矩阵和所述第一张量,对所述待发送文件进行数字签名,得到第一字符串;

构建模块404,用于基于所述L个第二张量,构建哈希树的根节点的哈希值;

第二生成模块405,用于基于所述第一字符串、第一可逆矩阵、第二可逆矩阵、L个第二张量和哈希树的根节点的哈希值,生成所述第一电子设备针对所述待发送文件的签名信息。

可选的,其中,所述第二生成模块405包括:

切分单元,用于将所述第一字符串进行切分,得到P个字符串,P为大于1的正整数;

第一生成单元,用于基于所述P个字符串、第一可逆矩阵和第二可逆矩阵,生成目标矩阵;

选取单元,用于基于所述P个字符串,从所述L个第二张量中选取N个第二张量,N为正整数;

确定单元,用于针对所述N个第二张量中每个第二张量,基于所述哈希树的根节点的哈希值和所述第二张量,确定所述第二张量相对所述哈希树的根节点的认证路径;

其中,所述签名信息包括所述P个字符串、所述目标矩阵、所述N个第二张量和所述N个第二张量中每个第二张量相对所述哈希树的根节点的认证路径。

可选的,其中,所述N个第二张量包括目标张量,所述目标张量为所述N个第二张量中任一张量,所述确定单元,具体用于基于所述哈希树中所述目标张量对应的叶子节点的哈希值和所述哈希树的根节点的哈希值,确定从所述哈希树中所述目标张量对应的叶子节点至根节点所途径的节点的目标哈希值;

其中,所述目标张量相对所述哈希树的根节点的认证路径包括:所述目标哈希值,以及从所述哈希树中所述目标张量对应的叶子节点至根节点所途径的节点在所述哈希树中的位置。

可选的,其中,所述第一数字签名模块403,具体用于基于随机生成的第二可逆矩阵和所述第一张量,生成与所述第一张量同构的第三张量;基于所述第三张量,对所述待发送文件进行数字签名,得到第一字符串。

可选的,其中,所述构建模块404,具体用于基于所述L个第二张量和随机生成的第一目标字符串,构建哈希树的叶子节点的哈希值;基于所述哈希树的叶子节点的哈希值和所述第一目标字符串,构建所述哈希树的节点中除所述叶子节点之外的其他节点的哈希值,所述其他节点包括所述哈希树的根节点。

可选的,所述装置还包括:

第三生成模块,用于生成与所述私钥对应的公钥,所述公钥包括所述第一目标字符串和哈希树的根节点的哈希值;

公布模块,用于将所述公钥进行公布。

本申请提供的数字签名装置400能够实现数字签名方法实施例实现的各个过程,且能够达到相同的有益效果,为避免重复,这里不再赘述。

第四实施例

如图5所示,本申请提供一种签名信息的验证装置500,所述装置应用于第二电子设备,包括:

第二获取模块501,用于获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括哈希树的根节点的哈希值;

第四生成模块502,用于基于所述签名信息,生成Q个第二目标字符串,Q为正整数;

第五生成模块503,用于在所述哈希树的根节点的哈希值与每个第二目标字符串均相等的情况下,基于所述签名信息,生成第四张量;

第二数字签名模块504,用于基于所述第四张量,对所述待发送文件进行数字签名,得到第二字符串;

验证模块505,用于基于所述第二字符串对所述签名信息进行验证。

可选的,其中,所述签名信息包括P个字符串,P为大于1的正整数,所述验证模块505,具体用于将所述第二字符串进行切分,得到K个字符串,P等于K;在所述P个字符串与所述K个字符串一一相等的情况下,确定所述签名信息验证成功;或者,在所述P个字符串中第三目标字符串与所述K个字符串中第四目标字符串不相等的情况下,确定所述签名信息验证失败,所述第三目标字符串在所述P个字符串的位置与所述第四目标字符串在所述K个字符串的位置对应,所述第三目标字符串为所述P个字符串中任一字符串。

可选的,其中,所述签名信息包括N个第二张量和所述N个第二张量中每个第二张量相对所述哈希树的根节点的认证路径,所述第四生成模块502,具体用于针对所述N个第二张量中每个第二张量,基于所述第二张量和所述第二张量相对所述哈希树的根节点的认证路径,生成所述第二张量对应的第二目标字符串,Q等于N。

本申请提供的签名信息的验证装置500能够实现签名信息的验证方法实施例实现的各个过程,且能够达到相同的有益效果,为避免重复,这里不再赘述。

根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM603中,还可以存储设备600操作所需的各种程序和数据。计算单元601、ROM602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调整解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如数字签名方法或签名信息的验证方法。例如,在一些实施例中,数字签名方法或签名信息的验证方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM603并由计算单元601执行时,可以执行上文描述的数字签名方法或签名信息的验证方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方法(例如,借助于固件)而被配置为执行数字签名方法或签名信息的验证方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编辑语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

相关技术
  • 数字签名方法、签名信息的验证方法、相关装置及电子设备
  • 数字签名方法、签名信息的验证方法、相关装置及电子设备
技术分类

06120113043332