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

文档序号:7978 发布日期:2021-09-17 浏览:33次 英文

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

技术领域

本公开涉及量子计算

技术领域

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

背景技术

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

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

发明内容

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

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

获取待发送文件、所述第一电子设备用于数字签名的私钥和第一压缩数据,所述第一压缩数据基于随机生成的第一对称张量压缩得到,所述第一对称张量的阶数大于2,所述私钥包括第一可逆矩阵;

基于所述第一可逆矩阵和所述第一压缩数据,生成L个第二对称张量的L个第二压缩数据,所述L个第二对称张量包括所述第一对称张量,以及还包括与所述第一对称张量同构的对称张量,L为大于1的正整数;

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

基于L个构建数据,构建哈希树的根节点的哈希值,所述L个构建数据为所述L个第二压缩数据或所述L个第二对称张量;

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

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

获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括哈希树的根节点的哈希值,所述签名信息包括N个第二对称张量的N个第二压缩数据和N个构建数据相对所述哈希树的根节点的认证路径,一个构建数据为一个第二压缩数据或一个第二压缩数据对应的第二对称张量;

基于所述N个第二压缩数据和所述认证路径,生成Q个第二目标字符串,Q为正整数;

在所述哈希树的根节点的哈希值与每个第二目标字符串均相同的情况下,基于所述N个第二压缩数据,将所述签名信息与所述N个第二对称张量进行矩阵相乘处理,以生成第二签字数据,所述第二签字数据为与所述N个第二对称张量同构的第四对称张量或所述第四对称张量的第四压缩数据;

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

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

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

第一获取模块,用于获取待发送文件、所述第一电子设备用于数字签名的私钥和第一压缩数据,所述第一压缩数据基于随机生成的第一对称张量压缩得到,所述第一对称张量的阶数大于2,所述私钥包括第一可逆矩阵;

第一生成模块,用于基于所述第一可逆矩阵和所述第一压缩数据,生成L个第二对称张量的L个第二压缩数据,所述L个第二对称张量包括所述第一对称张量,以及还包括与所述第一对称张量同构的对称张量,L为大于1的正整数;

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

构建模块,用于基于L个构建数据,构建哈希树的根节点的哈希值,所述L个构建数据为所述L个第二压缩数据或所述L个第二对称张量;

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

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

第二获取模块,用于获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括哈希树的根节点的哈希值,所述签名信息包括N个第二对称张量的N个第二压缩数据和N个构建数据相对所述哈希树的根节点的认证路径,一个构建数据为一个第二压缩数据或一个第二压缩数据对应的第二对称张量;

第四生成模块,用于基于所述N个第二压缩数据和所述认证路径,生成Q个第二目标字符串,Q为正整数;

矩阵相乘处理模块,用于在所述哈希树的根节点的哈希值与每个第二目标字符串均相同的情况下,基于所述N个第二压缩数据,将所述签名信息与所述N个第二对称张量进行矩阵相乘处理,以生成第二签字数据,所述第二签字数据为与所述N个第二对称张量同构的第四对称张量或所述第四对称张量的第四压缩数据;

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

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

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

至少一个处理器;以及

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

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

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

根据本公开的第七方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现第一方面中的任一项方法,或者执行第二方面中的任一项方法。

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

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

附图说明

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

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

图2是构建数据相对哈希树的根节点的认证路径的计算实现示意图;

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

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

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

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

具体实施方式

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

第一实施例

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

步骤S101:获取待发送文件、所述第一电子设备用于数字签名的私钥和第一压缩数据,所述第一压缩数据基于随机生成的第一对称张量压缩得到,所述第一对称张量的阶数大于2,所述私钥包括第一可逆矩阵。

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

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

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

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

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

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

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

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

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

从计算复杂性的角度,张量同构问题可以被认为是同构类型问题中比较困难的问题,以下可以对张量同构问题进行描述。

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

以张量为三阶矩阵为例,张量可以称之为n×n×n的矩阵,其有n×n×n个分量,n可以称之为张量的维数。令一张量为A,用A=(aijk)表示,另一张量为B,用B=(bijk)表示,每阶数据的长度均为n,即张量的下标i、j和k分别可以取1至n,用i,j,k∈{1,2,...,n}表示,而aijk,bijk∈GF(p)分别为两个张量第i片、第j行和第k列的元素,这些元素罗列在一起即可以构成张量即(aijk)和(bijk)。张量同构问题即是求解是否存在可逆矩阵,用C=(cij)∈GL(n,p)表示,使得也就是说,张量同构问题即是确定两个张量是否为同构张量,且在两个张量为同构的张量的情况下,求解这两个张量相互变换的可逆矩阵。

其中,公式中的表示的是三个矩阵分别从张量的三个方向去相乘,也就是说,同时可以用三个矩阵乘在张量的三个方向上,三个矩阵可以为相同的可逆矩阵C。其相乘后的结果也是一个张量,可以用B'表示,其中,B'=(bi'jk),而bi'jk为张量B'中下标对应位置的一个数,

而对称张量同构问题延续对张量同构问题的定义,与张量同构问题不同的是,同构的张量为对称张量,即中,张量A和张量B均为对称张量,而对称张量的定义为:设一张量A,其满足aijk=aikj=ajik=ajki=akij=akji

从量子计算的角度,由于张量同构问题的求解困难性,采用张量同构问题设计的数字签名在量子算法角度的安全性提供了保障。采用格罗布纳基等算法对这两种问题分别进行求解时,一方面由于对称张量的数据对称性和关系性相对于其他张量更好,另一方面由于攻击算法精度的问题,求解两个对称张量是否为同构张量,且在两个对称张量为同构的张量的情况下,求解这两个对称张量相互变换的可逆矩阵,对称张量同构问题相对于张量同构问题而言,其运算时的收敛速度更慢。

这就说明,所基于的算法问题采用对称张量同构问题进行数字签名的设计,相对于采用张量同构问题进行数字签名的设计,其数字签名的安全性更高。因此,本公开实施例中,所基于的算法问题可以采用对称张量同构问题,利用对称张量同构问题对大部分计算机(包括量子计算机)的角度的求解困难性,来进行数字签名的设计。

需要说明的是,在对称张量为更高阶矩阵的情况下,对称张量同构问题还可以推广至为更高阶矩阵的对称张量上,也就是说,更高阶矩阵的对称张量同构问题可以依据三阶矩阵的对称张量同构问题进行类推。比如,针对两个为四阶矩阵的对称张量,分别可以用A=(aijkl)和B=(bijkl)来表示,对称张量同构问题即指的是是否存在可逆矩阵C,使得

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

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

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

在数字签名方案中,重要的参数可以包括签名长度、公钥长度、以及产生密钥、产生签名和验证签名的运行时间。根据协议中的主要参数(比如,n为对称张量的维数即对称张量规模,p为域的大小即数域规模,r为轮数即签名长度参数,λ为安全性参数,s为哈希树深度,令t=2s,其为哈希树叶子节点个数,也是产生公钥涉及的对称张量数),以及对对称张量同构问题的最好算法运行时间的理解,可以进行合适的参数选择以达到所需的数字签名的安全性,比如,达到128bit或256bit的安全性。同时,可以对协议进行原型实现,测试产生密钥、生成签名及验证签名的实际运行时间。

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

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

所述私钥以由第一电子设备预先生成并存储在数据库中为例,所述第一电子设备可以随机生成至少一个第一可逆矩阵,如随机生成t-1个第一可逆矩阵,用Ci∈GL(n,p),i∈{1,2,...,t-1}表示,其中,t可以根据实际情况进行设定,且t大于或等于2。所述第一电子设备的私钥可以包括多个可逆矩阵,分别可以为C0,C1,...,Ct-1,其中,C0为大小为n的单位矩阵。

所述第一压缩数据可以为第一对称张量的压缩数据,以采用三阶矩阵的对称张量同构问题来进行数字签名方案的设计为例,在构造第一电子设备的私钥和公钥时,可以随机生成一个第一对称张量,可以用A0表示,第一对称张量A0=(aijk),i,j,k∈{1,2,...,n},aijk∈GF(p),该第一对称张量可以作为初始对称张量进行对称张量同构。其中,第一对称张量中的数据存在对称关系aijk=aikj=ajik=ajki=akij=akji

可以对第一对称张量进行压缩,得到第一压缩数据,其中,第一压缩数据中的数据量小于第一对称张量中的数据量。即对第一对称张量进行压缩指的是剔除第一对称张量中的部分或全部冗余数据,得到第一压缩数据,且基于该第一压缩数据可以准确地还原出第一对称张量。

在一可选实施方式中,由于第一对称张量的对称性,可以将满足i≤j≤k的aijk的值进行剔除,或者,将满足i>j或j>k的aijk的值进行剔除,即保留存在对称关系的一半数据,另一半数据可以依据对称关系得到。

比如,当保留aijk(i≤j≤k)的数据时,若需要调用ajki的值,可以对jki重新排序得到ijk,基于aijk=ajki的对称关系,即可以从第一压缩数据中得到ajki的值。举个例子来说,若i=1,j=2,k=3,当需要调用a231的值时,可以重新排序,且基于a123=a231的对称关系,即可以从第一压缩数据中得到a231的值。

该第一压缩数据的全体可以称之为第一对称张量的压缩表示,可以采用一种特定的数据结构来存储第一对称张量的压缩表示,如键值key-内容value的数据结构,key用于存储数据的下标,即ijk,value用于存储下标对应的值,这样可以避免重复储存那些本应相同的值,从而可以大大减少第一电子设备的存储空间。

步骤S102:基于所述第一可逆矩阵和所述第一压缩数据,生成L个第二对称张量的L个第二压缩数据,所述L个第二对称张量包括所述第一对称张量,以及还包括与所述第一对称张量同构的对称张量,L为大于1的正整数。

第一电子设备可以基于第一压缩数据和私钥中的所述第一可逆矩阵,生成与第一对称张量同构的对称张量的压缩数据,其构造的公式可以为:对于i∈{1,...,t-1},最终得到L个第二对称张量的L个第二压缩数据,所述L个第二对称张量中可以包括第一对称张量,以及还包括与第一对称张量同构的对称张量。

具体的,可以基于第一压缩数据,构造出第一对称张量中除所述第一压缩数据之外的其他数据,第一压缩数据和其他数据可以构造出第一对称张量,之后,可以对第一可逆矩阵和第一对称张量进行矩阵相乘,得到第二对称张量的第二压缩数据,即只计算第二对称张量的一部分数据,如只计算满足i≤j≤k的aijk的值,这样可以减少计算量,提升数字签名的处理速度。

也可以对第一可逆矩阵和第一对称张量进行矩阵相乘,在需要调用第一对称张量中其他数据的情况下,可以基于其他数据与第一压缩数据的对称关系,从第一压缩数据中获取相应的数据代入计算,最终得到第二对称张量的第二压缩数据。

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

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

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

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

实际应用中,对于i∈{1,...,r},r可以为正整数,第一电子设备可以随机生成至少一个第二可逆矩阵,这至少一个第二可逆矩阵可以用Di∈GL(n,p)表示。也就是说,可以基于随机生成的第二可逆矩阵和第一压缩数据,构造第一签字数据,该第一签字数据可以为与第一对称张量同构的至少一个第三对称张量,或至少一个第三对称张量的第三压缩数据,其构造的公式可以为其构造方式与第二压缩数据的构造方式类似,这里不进行赘述。

之后,可以使用哈希函数(用H表示),对所述待发送文件(用M表示)进行数字签名,具体的,可以将待发送文件M与第一签字数据作为字符串串联,对串联后的字符串进行哈希运算,得到第一字符串。

在第一签字数据为第三对称张量的情况下,可以将待发送文件M与第三对称张量B1,…,Br作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第一字符串,用H(M|B1|...|Br)表示,M|B1|...|Br表示待发送文件M与第二对称张量B1,…,Br作为字符串串联。其中,将待发送文件M与第三对称张量B1,…,Br作为字符串串联之后进行哈希运算,可以增加数据量,从而可以提升哈希函数产生的第一字符串的安全性。

在第一签字数据为第三压缩数据的情况下,可以将待发送文件M与第三压缩数据作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第一字符串。其中,将待发送文件M与第三压缩数据作为字符串串联之后进行哈希运算,其计算速度快。

第一字符串可以为二进制字符串,即01字符串,其长度可以为r*s,参数s也为身份认证协议的参数,其与参数t满足t=2s。而H为一个哈希函数,其输入可以为任意长度的字符串,而输出的字符串长度为r*s,且输出01字符串。

步骤S104:基于L个构建数据,构建哈希树的根节点的哈希值,所述L个构建数据为所述L个第二压缩数据或所述L个第二对称张量。

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

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

其中,一个构建数据可以为一个第二对称张量,也可以为一个第二压缩数据,这里不进行具体限定。需要说明的是,在构建哈希树时,需要统一构建数据的类型,即要么是基于第二对称张量来直接构建哈希树的所有叶子节点的哈希值,要么是基于第二压缩数据来直接构建哈希树的所有叶子节点的哈希值。

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

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

可以基于L个构建数据构造哈希树的叶子节点,具体可以使用哈希函数H构建哈希树的第s层即叶子节点对应的层,当构建数据为第二对称张量时,可以采用公式hs,i=H(Ai|(2s+i)|MerkleKey)来计算哈希树的第s层中叶子节点的哈希值,其中,0≤i≤t-1,hs,i为叶子节点对应的层即第s层的第i个叶子节点的哈希值,符号|表示字符串的连接。这样,可以增加数据量,从而可以提升哈希函数产生的第一字符串的安全性。

而当构建数据为第二压缩数据时,公式hs,i=H(Ai|(2s+i)|MerkleKey)中的Ai可以替换为第二压缩数据,这样其计算速度相对较快。

继续使用哈希函数H构建哈希树的其他内部节点,用公式hk,i=H(hk+1,2i|hk+1,2i+1|(2k+i)|MerkleKey),其中,0≤k<s,0≤i<2k,hk,i为第k层的第i个节点的哈希值,而hk+1,2i和hk+1,2i+1分别为该节点的两个子节点的哈希值,该节点可以称之为这两个子节点的父节点。由此可以构造哈希树的全部元素,包括所述哈希树的根节点,用h0,0表示,而h0,0的哈希值可以作为公钥的一部分。

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

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

在一可选实施方式中,签名信息可以包括由第一字符串切分成的多个字符串、由这多个字符串、第一可逆矩阵和第二可逆矩阵生成的目标矩阵、N个第二压缩数据和每个第二压缩数据对应的认证路径。

本实施例中,通过对称张量同构问题并结合哈希树进行数字签名,若其他电子设备需要伪造第一电子设备针对待发送文件的签名信息,需要根据公钥(可以包括同构的对称张量的压缩数据或基于同构的对称张量的压缩数据生成的哈希值)去破解得到私钥,这就相当于其他电子设备需要求解一个哈希树的解密问题和对称张量同构问题,使得其他设备在不知道私钥的情况下,通过公钥伪造私钥非常困难,从而使得伪造数字签名非常困难,进而可以提高数字签名的安全性。

并且,采用格罗布纳基等算法对张量同构问题和对称张量同构问题分别进行求解时,一方面由于对称张量的数据对称性和关系性相对于其他张量更好,另一方面由于攻击算法精度的问题,求解两个对称张量是否为同构张量,且在两个对称张量为同构的张量的情况下,求解这两个对称张量相互变换的可逆矩阵,对称张量同构问题相对于张量同构问题而言,其运算时的收敛速度更慢。因此,所基于的算法问题采用对称张量同构问题进行数字签名的设计,相对于采用张量同构问题进行数字签名的设计,其数字签名的安全性更高。

表1是采用格罗布纳基攻击不同数字签名方案的破解时间表,数字签名方案所基于的算法分别为对称张量同构问题和张量同构问题,其中,表1中N/A表示无法破解。如下表1所示,在协议中的不同参数下,对称张量同构问题相对于张量同构问题的求解,难度更高。

表1采用格罗布纳基攻击不同数字签名方案的破解时间表

协议中参数 (n=4,p=5) (n=5,p=5)
张量同构问题 0.076s 94.448s
对称张量同构问题 N/A N/A

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

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

基于所述P个字符串,将所述第一可逆矩阵的逆矩阵和所述第二可逆矩阵进行矩阵相乘处理,以生成目标矩阵;

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

针对所述N个第二压缩数据中每个第二压缩数据,基于所述哈希树的根节点的哈希值和所述第二压缩数据,确定所述第二压缩数据对应的认证路径,所述认证路径为所述构建数据相对所述哈希树的根节点的认证路径;

其中,所述签名信息包括所述P个字符串、所述目标矩阵、所述N个第二压缩数据、以及所述N个第二压缩数据对应的认证路径。

本实施方式中,可以将第一字符串进行切分,得到多个字符串,比如,得到r个长度为s的01字符串,这r个字符串分别可以用f1,...,fr表示,此时r大于1,且这r个字符串的十进制值均在0至t-1之间,P的值等于r。

可以基于P个字符串、第一可逆矩阵和第二可逆矩阵,生成目标矩阵,具体的,对于i∈{1,...,r},可以从第一可逆矩阵中获取下标为fi的第一可逆矩阵,之后第一电子设备可以采用公式计算目标矩阵。其中,Ei为目标矩阵,其数量可以为多个,表示私钥中第fi个第一可逆矩阵的逆矩阵,比如,当01字符串fi为1时,则为私钥中第一可逆矩阵C1的逆矩阵,也就是说,目标矩阵可以基于第二可逆矩阵Di与私钥中第一可逆矩阵的逆矩阵进行矩阵相乘得到。

之后,可以基于P个字符串,从L个第二压缩数据中选取N个第二压缩数据,具体可以从第二对称张量A0,A1,...,At-1的第二压缩数据中选取N个第二压缩数据,分别为的第二压缩数据,N等于r。

针对i∈{1,...,r},分别基于第二对称张量的第二压缩数据和所述哈希树的根节点的哈希值,计算第二压缩数据对应的认证路径,用pathi表示,该认证路径可以为构建数据(该构建数据为第二压缩数据或第二对称张量)相对所述哈希树的根节点的认证路径。其包括一系列哈希值,即从构建数据开始计算至所述哈希值的根节点的哈希值所需要的全部信息。

也就是说,基于构建数据计算得到的pathi,当构建数据为第二对称张量时,能够使得其中,上述公式是从计算至h0,0的过程的简写,表示基于和认证路径中的哈希值,反复调用哈希函数,直到得到所述哈希树的根节点的哈希值。换句话说,其实质是基于认证路径pathi游历哈希树,使之能够基于第二对称张量得到哈希树中对应的叶子节点并能够从叶子节点游历至哈希树的根节点h0,0,以得到哈希树的根节点的哈希值。而当构建数据为第二压缩数据时,将中的替换为第二压缩数据即可。

最终,可以基于这r个字符串、多个目标矩阵、N个第二压缩数据和每个第二压缩数据对应的认证路径,确定第一电子设备针对待发送文件的签名信息,签名信息即为其中,分别为第二对称张量的第二压缩数据,即为第二对称张量的压缩表示。

若有另一电子设备如第三电子设备希望假扮第一电子设备,希望对待发送文件M产生签名,由于第三电子设备没有私钥,因此,其无法基于私钥生成目标矩阵,即无法采用公式生成目标矩阵E1,...,Er,而破解私钥需要求解一个对称张量同构问题,从而第三电子设备很难拿到第一电子设备的私钥。同时,由于所述第三电子设备拿到的公钥是基于同构的对称张量结合哈希树来生成的,其包括哈希树的根节点的哈希值,这样,若第三电子设备希望伪造签名,这使得其需要破解哈希树,而根据哈希函数原像的设计困难性,导致第三电子设备伪造签名信息非常困难。

另外,第三电子设备对协议直接的攻击方法都会归结于这样的问题:其需要找到一种方法产生多个01字符串,用g1,...,gr∈{0,1,...,t-1}表示,使得在计算后,从计算H(M|B1|...|Br)所得到f1,...,fr满足,对所有的i∈{1,...,r},使得fi=gi。而根据哈希函数的性质,这样的攻击成功的概率不会显著超过1/2rs

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

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

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

n p r s 公钥长度 签名长度
组合1 9 8191 128 1 32 55280
组合2 9 8191 16 8 32 10508
组合3 9 8191 10 12 32 7852

其中,上表2中,公钥长度和签名长度的单位为Bytes。

本实施方式中,将所述第一字符串进行切分,得到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可以为正整数,第一电子设备可以随机生成至少一个第二可逆矩阵,这至少一个第二可逆矩阵可以用Di∈GL(n,p)表示。也就是说,可以基于随机生成的第二可逆矩阵和第一压缩数据,构造第一签字数据,该第一签字数据可以为与第一对称张量同构的至少一个第三对称张量,或至少一个第三对称张量的第三压缩数据,其构造的公式可以为其构造方式与第二压缩数据的构造方式类似,这里不进行赘述。

之后,可以使用哈希函数(用H表示),对所述待发送文件(用M表示)进行数字签名,具体的,可以将待发送文件M与第一签字数据作为字符串串联,对串联后的字符串进行哈希运算,得到第一字符串。

在第一签字数据为第三对称张量的情况下,可以将待发送文件M与第三对称张量B1,…,Br作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第一字符串,用H(M|B1|...|Br)表示,M|B1|...|Br表示待发送文件M与第二对称张量B1,…,Br作为字符串串联。其中,将待发送文件M与第三对称张量B1,…,Br作为字符串串联之后进行哈希运算,可以增加数据量,从而可以提升哈希函数产生的第一字符串的安全性。

在第一签字数据为第三压缩数据的情况下,可以将待发送文件M与第三压缩数据作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第一字符串。其中,将待发送文件M与第三压缩数据作为字符串串联之后进行哈希运算,其计算速度快。

第一字符串可以为二进制字符串,即01字符串,其长度可以为r*s,参数s也为身份认证协议的参数,其与参数t满足t=2s。而H为一个哈希函数,其输入可以为任意长度的字符串,而输出的字符串长度为r*s,且输出01字符串。

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

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

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

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

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

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

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

可以基于L个构建数据构造哈希树的叶子节点,具体可以使用哈希函数H构建哈希树的第s层即叶子节点对应的层,当构建数据为第二对称张量时,可以采用公式hs,i=H(Ai|(2s+i)|MerkleKey)来计算哈希树的第s层中叶子节点的哈希值,其中,0≤i≤t-1,hs,i为叶子节点对应的层即第s层的第i个叶子节点的哈希值,符号|表示字符串的连接。

而当构建数据为第二压缩数据时,公式hs,i=H(Ai|(2s+i)|MerkleKey)中的Ai可以替换为第二压缩数据。

继续使用哈希函数H构建哈希树的其他内部节点,用公式hk,i=H(hk+1,2i|hk+1,2i+1|(2k+i)|MerkleKey),其中,0≤k<s,0≤i<2k,hk,i为第k层的第i个节点的哈希值,而hk+1,2i和hk+1,2i+1分别为该节点的两个子节点的哈希值,该节点可以称之为这两个子节点的父节点。由此可以构造哈希树的全部元素,包括所述哈希树的根节点,用h0,0表示,而h0,0的哈希值可以作为公钥的一部分。

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

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

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

将所述公钥进行公布。

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

所述私钥包括第一可逆矩阵Ci∈GL(n,p),i∈{1,2,...,t-1}以及大小为n的单位矩阵C0,可以基于所述第一可逆矩阵和所述第一压缩数据,生成所述第一对称张量同构的对称张量的压缩数据,最终得到L个第二压缩数据,L可以等于t,相应可以用Vi,i∈{0,...,t-1}表示。

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

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

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

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

第二实施例

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

步骤S301:获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括哈希树的根节点的哈希值,所述签名信息包括N个第二对称张量的N个第二压缩数据和N个构建数据相对所述哈希树的根节点的认证路径,一个构建数据为一个第二压缩数据或一个第二压缩数据对应的第二对称张量;

步骤S302:基于所述N个第二压缩数据和所述认证路径,生成Q个第二目标字符串,Q为正整数;

步骤S303:在所述哈希树的根节点的哈希值与每个第二目标字符串均相同的情况下,基于所述N个第二压缩数据,将所述签名信息与所述N个第二对称张量进行矩阵相乘处理,以生成第二签字数据,所述第二签字数据为与所述N个第二对称张量同构的第四对称张量或所述第四对称张量的第四压缩数据;

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

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

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

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

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

签名信息可以包括N个第二对称张量的N个第二压缩数据和N个构建数据相对所述哈希树的根节点的认证路径,一个构建数据为一个第二压缩数据或一个第二压缩数据对应的第二对称张量。其中,签名信息的验签过程和数字签名过程中,构造哈希树中节点的哈希值所用到的构建数据的类型应当一致。

也就是说,当数字签名过程中,采用第二压缩数据构造哈希树中节点的哈希值时,签名信息的验签过程也应当直接采用第二压缩数据来生成Q个第二目标字符串。而当数字签名过程中,采用第二对称张量构造哈希树中节点的哈希值时,签名信息的验签过程需要将第二压缩数据还原成第二对称张量,之后采用第二对称张量来生成Q个第二目标字符串。

具体的,以构建数据为第二对称张量来说明,对于i∈{1,...,r},可以将第二压缩数据还原成第二对称张量。基于第二对称张量和其认证路径pathi,采用公式即反复调用哈希函数,直到得到一个第二目标字符串。在签名信息不是伪造的情况下,可以基于第二对称张量和其认证路径pathi,得到哈希树的根节点的哈希值。因此,可以比对该第二目标字符串与哈希树的根节点的哈希值是否相同,来进行签名信息的第一重验证。

而当构建数据为第二压缩数据时,其计算方式类似,只是将中的直接替换为第二压缩数据,而pathi为第二压缩数据相对所述哈希树的根节点的认证路径。

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

当每个第二目标字符串与公钥中所述哈希树的根节点的哈希值均相同时,第一重验证通过,在第一重验证通过的情况下,才进行第二重验证,否则,在存在至少有一个第二目标字符串与哈希树的根节点的哈希值不相同的情况下,验证失败。

在第二重验证中,可以基于N个第二压缩数据,将签名信息与N个第二对称张量进行矩阵相乘处理,以生成第二签字数据。具体可以采用公式来生成第二签字数据,该第二签字数据可以为至少一个第四对称张量,或者,该至少一个第四对称张量的第四压缩数据,Bi'可以表示第四对称张量,Ei为目标矩阵。

具体的,可以基于N个第二压缩数据,将签名信息中目标矩阵与N个第二对称张量进行矩阵相乘处理,以生成第二签字数据。其中,第二签字数据与第一签字数据的生成方式类似,这里不进行具体赘述。

之后,可以基于第二签字数据,采用哈希函数对所述待发送文件进行数字签名,得到第二字符串。其中,第二字符串的生成方式与第一字符串的生成方式类似,这里不进行具体限定,且数字签名过程中进行数字签名的哈希函数与验签过程中进行数字签名的哈希函数相同。

第二字符串也可以为二进制字符串,即01字符串,其长度也可以为r*s。

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

本实施例中,第二电子设备在获取到第一电子设备公布的公钥的情况下,基于公钥以及接收到的待发送文件和所述待发送文件的签名信息,即可以非常方便地对签名信息进行验证,以验证待发送文件的发送方的身份。同时,对签名信息进行双重验证,进一步可以保证验证的准确性。

可选的,所述第二签字数据的类型与第一签字数据的类型对应,所述第一签字数据为与第一对称张量同构的第三对称张量或所述第三对称张量的第三压缩数据,所述第一签字数据用于对所述待发送文件进行数字签名。

本实施方式中,第二目标数据的类型与第一目标数据的类型对应可以理解为,当第一签字数据为对称张量的形式时,第二签字数据也应该为对称张量的形式,而当第一签字数据为对称张量的压缩表示时,第二签字数据也应该为对称张量的压缩表示,这样可以保证采用哈希函数进行数字签名和验签的一致性。

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

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

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

其中,所述第三目标字符串在所述P个字符串的位置与所述第四目标字符串在所述K个字符串的位置对应,所述第三目标字符串为所述P个字符串中任一字符串。

本实施方式中,可以将第二字符串进行切分,得到多个字符串,比如,得到r个长度为s的01字符串,这r个字符串分别可以用f1',...,fr'表示。

对于i∈{1,...,r},若均有fi=fi',则所述签名信息验证成功,否则所述签名信息验证失败。

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

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

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

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

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

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

第三实施例

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

第一获取模块401,用于获取待发送文件、所述第一电子设备用于数字签名的私钥和第一压缩数据,所述第一压缩数据基于随机生成的第一对称张量压缩得到,所述第一对称张量的阶数大于2,所述私钥包括第一可逆矩阵;

第一生成模块402,用于基于所述第一可逆矩阵和所述第一压缩数据,生成L个第二对称张量的L个第二压缩数据,所述L个第二对称张量包括所述第一对称张量,以及还包括与所述第一对称张量同构的对称张量,L为大于1的正整数;

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

构建模块404,用于基于L个构建数据,构建哈希树的根节点的哈希值,所述L个构建数据为所述L个第二压缩数据或所述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,用于获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括哈希树的根节点的哈希值,所述签名信息包括N个第二对称张量的N个第二压缩数据和N个构建数据相对所述哈希树的根节点的认证路径,一个构建数据为一个第二压缩数据或一个第二压缩数据对应的第二对称张量;

第四生成模块502,用于基于所述N个第二压缩数据和所述认证路径,生成Q个第二目标字符串,Q为正整数;

矩阵相乘处理模块503,用于在所述哈希树的根节点的哈希值与每个第二目标字符串均相同的情况下,基于所述N个第二压缩数据,将所述签名信息与所述N个第二对称张量进行矩阵相乘处理,以生成第二签字数据,所述第二签字数据为与所述N个第二对称张量同构的第四对称张量或所述第四对称张量的第四压缩数据;

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

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

可选的,所述第二签字数据的类型与第一签字数据的类型对应,所述第一签字数据为与第一对称张量同构的第三对称张量或所述第三对称张量的第三压缩数据,所述第一签字数据用于对所述待发送文件进行数字签名

可选的,所述签名信息包括P个字符串,P为大于1的正整数,所述验证模块505,具体用于:

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

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

其中,所述第三目标字符串在所述P个字符串的位置与所述第四目标字符串在所述K个字符串的位置对应,所述第三目标字符串为所述P个字符串中任一字符串。

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

本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。

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

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

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

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

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

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

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

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

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

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

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。

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

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

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:基于聚合签名的跨链扩展方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类