数字签名方法、签名信息的验证方法、相关装置及电子设备
技术领域
本公开涉及量子计算
技术领域
,尤其涉及量子计算中的信息安全领域,具体涉及一种数字签名方法、签名信息的验证方法、相关装置及电子设备。背景技术
数字签名是一个基本的公钥密码学任务,公钥密码学是指密码方案中包含公钥和私钥,公钥可以公开,从而可以使两个用户在未建立通讯的前提下进行加密解密和身份验证。而数字签名的目标是对文件的发送者进行身份验证,从而确保文件的发送者是真实的,这在电子商务和互联网协议中具有基础的重要性。
目前,在互联网通讯中,通常使用的数字签名方案是基于大数分解和离散对数的困难性,如基于迪菲-赫尔曼密钥交换的非对称加密算法。
发明内容
本公开提供了一种数字签名方法、签名信息的验证方法、相关装置及电子设备。
根据本公开的第一方面,提供了一种数字签名方法,所述方法应用于第一电子设备,包括:
获取待发送文件、所述第一电子设备用于数字签名的私钥和第一压缩数据,所述第一压缩数据基于随机生成的第一对称张量压缩得到,所述第一对称张量的阶数大于2,所述私钥包括第一可逆矩阵;
基于所述第一压缩数据和随机生成的第二可逆矩阵,生成第一目标数据,所述第一目标数据为:与所述第一对称张量同构的第二对称张量,或,所述第二对称张量的第二压缩数据;
基于所述第一目标数据,对所述待发送文件进行数字签名,得到第一字符串;
基于所述第一字符串,将所述第一可逆矩阵的逆矩阵和所述第二可逆矩阵进行矩阵相乘处理,以生成所述第一电子设备针对所述待发送文件的签名信息。
根据本公开的第二方面,提供了一种签名信息的验证方法,所述方法应用于第二电子设备,包括:
获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括第一对称张量的第一压缩数据和第三对称张量的第三压缩数据;
基于所述第一压缩数据和所述第三压缩数据,将所述签名信息与所述第一对称张量和所述第三对称张量进行矩阵相乘处理,以生成第二目标数据,所述第二目标数据为第四对称张量或所述第四对称张量的第四压缩数据;
基于所述第二目标数据,对所述待发送文件进行数字签名,得到第二字符串;
基于所述第二字符串对所述签名信息进行验证;
其中,所述第二目标数据的类型与第一目标数据的类型对应,所述第一目标数据为与所述第一对称张量同构的第二对称张量或所述第二对称张量的第二压缩数据,所述第一目标数据用于对所述待发送文件进行数字签名。
根据本公开的第三方面,提供了一种数字签名装置,所述装置应用于第一电子设备,包括:
第一获取模块,用于获取待发送文件、所述第一电子设备用于数字签名的私钥和第一压缩数据,所述第一压缩数据基于随机生成的第一对称张量压缩得到,所述第一对称张量的阶数大于2,所述私钥包括第一可逆矩阵;
第一生成模块,用于基于所述第一压缩数据和随机生成的第二可逆矩阵,生成第一目标数据,所述第一目标数据为:与所述第一对称张量同构的第二对称张量,或,所述第二对称张量的第二压缩数据;
第一数字签名模块,用于基于所述第一目标数据,对所述待发送文件进行数字签名,得到第一字符串;
第一相乘处理模块,用于基于所述第一字符串,将所述第一可逆矩阵的逆矩阵和所述第二可逆矩阵进行矩阵相乘处理,以生成所述第一电子设备针对所述待发送文件的签名信息。
根据本公开的第四方面,提供了一种签名信息的验证装置,所述装置应用于第二电子设备,包括:
第二获取模块,用于获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括第一对称张量的第一压缩数据和第三对称张量的第三压缩数据;
第二相乘处理模块,用于基于所述第一压缩数据和所述第三压缩数据,将所述签名信息与所述第一对称张量和所述第三对称张量进行矩阵相乘处理,以生成第二目标数据,所述第二目标数据为第四对称张量或所述第四对称张量的第四压缩数据;
第二数字签名模块,用于基于所述第二目标数据,对所述待发送文件进行数字签名,得到第二字符串;
验证模块,用于基于所述第二字符串对所述签名信息进行验证;
其中,所述第二目标数据的类型与第一目标数据的类型对应,所述第一目标数据为与所述第一对称张量同构的第二对称张量或所述第二对称张量的第二压缩数据,所述第一目标数据用于对所述待发送文件进行数字签名。
根据本公开的第五方面,提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够执行第一方面中的任一项方法,或者执行第二方面中的任一项方法。
根据本公开的第六方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行第一方面中的任一项方法,或者执行第二方面中的任一项方法。
根据本公开的第七方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现第一方面中的任一项方法,或者执行第二方面中的任一项方法。
根据本公开的技术解决了数字签名安全性比较低的问题,提高了数字签名的安全性。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的数字签名方法的流程示意图;
图2是根据本公开第二实施例的签名信息的验证方法的流程示意图;
图3是根据本公开第三实施例的数字签名装置的结构示意图;
图4是根据本公开第四实施例的签名信息的验证装置的结构示意图;
图5是用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
第一实施例
如图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)表示,使得A=(C,C,C)°B。也就是说,张量同构问题即是确定两个张量是否为同构张量,且在两个张量为同构的张量的情况下,求解这两个张量相互变换的可逆矩阵。
其中,公式(C,C,C)°B中的“°”表示的是三个矩阵分别从张量的三个方向去相乘,也就是说,同时可以用三个矩阵乘在张量的三个方向上,三个矩阵可以为相同的可逆矩阵C。其相乘后的结果也是一个张量,可以用B'表示,其中,B'=(bi'jk),而bi'jk为张量B'中下标对应位置的一个数,
而对称张量同构问题延续对张量同构问题的定义,与张量同构问题不同的是,同构的张量为对称张量,即A=(C,C,C)°B中,张量A和张量B均为对称张量,而对称张量的定义为:设一张量A,其满足aijk=aikj=ajik=ajki=akij=akji。
从量子计算的角度,由于张量同构问题的求解困难性,采用张量同构问题设计的数字签名在量子算法角度的安全性提供了保障。采用格罗布纳基等算法对这两种问题分别进行求解时,一方面由于对称张量的数据对称性和关系性相对于其他张量更好,另一方面由于攻击算法精度的问题,求解两个对称张量是否为同构张量,且在两个对称张量为同构的张量的情况下,求解这两个对称张量相互变换的可逆矩阵,对称张量同构问题相对于张量同构问题而言,其运算时的收敛速度更慢。
这就说明,所基于的算法问题采用对称张量同构问题进行数字签名的设计,相对于采用张量同构问题进行数字签名的设计,其数字签名的安全性更高。因此,本公开实施例中,所基于的算法问题可以采用对称张量同构问题,利用对称张量同构问题对大部分计算机(包括量子计算机)的角度的求解困难性,来进行数字签名的设计。
需要说明的是,在对称张量为更高阶矩阵的情况下,对称张量同构问题还可以推广至为更高阶矩阵的对称张量上,也就是说,更高阶矩阵的对称张量同构问题可以依据三阶矩阵的对称张量同构问题进行类推。比如,针对两个为四阶矩阵的对称张量,分别可以用A=(aijkl)和B=(bijkl)来表示,对称张量同构问题即指的是是否存在可逆矩阵C,使得A=(C,C,C,C)°B。
在对称张量同构问题的前提下,由于即使知道两个对称张量为同构的张量,也很难求解这两个对称张量之间变换的可逆矩阵,因此,为了保证数字签名的安全性,所述第一电子设备用于数字签名的私钥可以设置为矩阵形式,以保证私钥被破解的困难性。
具体的,所述私钥可以包括第一可逆矩阵,而公钥可以设置为对称张量的压缩形式,并将公钥进行公布。这样,若其他电子设备需要伪造第一电子设备针对待发送文件的签名信息,需要根据公钥去破解得到私钥,这就相当于其他电子设备需要求解一个对称张量同构问题。由于对称张量同构问题的求解困难性,因此,其他电子设备很难根据公钥破解得到第一电子设备的私钥,如此,其他电子设备是很难伪造第一电子设备的签名,从而可以保证数字签名的安全性。
在实际应用中,可以基于对称张量同构问题,采用经典的图同构问题的零知识交互协议构造身份认证协议。根据所需的安全性,可以将该协议进行若干轮,且每一轮中产生多个对称张量。基于该身份认证协议,可以使用经典的身份识别协议Fiat-Shamir转换过程构造数字签名方案。
根据协议中的主要参数(比如,n为对称张量的维数,p为域的大小,r为轮数,t为每一轮产生的对称张量数),以及对对称张量同构问题的最好算法运行时间的理解,可以进行合适的参数选择以达到所需的数字签名的安全性,比如,达到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:基于所述第一压缩数据和随机生成的第二可逆矩阵,生成第一目标数据,所述第一目标数据为:与所述第一对称张量同构的第二对称张量,或,所述第二对称张量的第二压缩数据。
对于i∈{1,...,r},r可以为正整数,第一电子设备可以随机生成至少一个第二可逆矩阵,这至少一个第二可逆矩阵可以用Di∈GL(n,p)表示。也就是说,可以基于随机生成的第二可逆矩阵和第一压缩数据,生成第一目标数据。
该第一目标数据可以为与所述第一对称张量同构的至少一个第二对称张量,或者,可以为该至少一个第二对称张量的第二压缩数据,其中,每个第二对称张量可以对应一个第二压缩数据。
具体的,其构造的公式可以为Bi=(Di,Di,Di)°A0,i∈{1,...,r},其中,第二对称张量为Bi。可以基于第一压缩数据,构造出第一对称张量中除所述第一压缩数据之外的其他数据,第一压缩数据和其他数据可以构造出第一对称张量,之后,可以对第二可逆矩阵和第一对称张量进行矩阵相乘,得到第二对称张量,或者第二对称张量的第二压缩数据,即只计算第二对称张量的一部分数据,如只计算满足i≤j≤k的bijk的值,这样可以减少计算量,提升数字签名的处理速度。
也可以对第二可逆矩阵和第一对称张量进行矩阵相乘,在需要调用第一对称张量中其他数据的情况下,可以基于其他数据与第一压缩数据的对称关系,从第一压缩数据中获取相应的数据代入计算,最终得到第二对称张量,或者第二对称张量的第二压缩数据。
步骤S103:基于所述第一目标数据,对所述待发送文件进行数字签名,得到第一字符串。
可以使用哈希函数(用H表示),对所述待发送文件(用M表示)进行数字签名,具体的,可以将待发送文件M与第一目标数据作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第一字符串。
在第一目标数据为第二对称张量的情况下,可以将待发送文件M与第二对称张量B1,…,Br作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第一字符串,用H(M|B1|...Br)表示,MB1|...Br表示待发送文件M与第二对称张量B1,…,Br作为字符串串联。其中,将待发送文件M与第二对称张量B1,…,Br作为字符串串联之后进行哈希运算,可以增加数据量,从而可以提升哈希函数产生的第一字符串的安全性。
在第一目标数据为第二压缩数据的情况下,可以将待发送文件M与第二压缩数据作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第一字符串。其中,将待发送文件M与第二压缩数据作为字符串串联之后进行哈希运算,其计算速度快。
第一字符串可以为二进制字符串,即01字符串,其长度可以为r*s,参数s也为身份认证协议的参数,其与参数t满足t=2s。而H为一个哈希函数,其输入可以为任意长度的字符串,而输出的字符串长度为r*s,且输出01字符串。
步骤S104:基于所述第一字符串,将所述第一可逆矩阵的逆矩阵和所述第二可逆矩阵进行矩阵相乘处理,以生成所述第一电子设备针对所述待发送文件的签名信息。
可以基于所述第一字符串、第一可逆矩阵和第二可逆矩阵,生成所述第一电子设备针对所述待发送文件的签名信息。所述签名信息可以包括第一字符串以及由第一字符串、第一可逆矩阵和第二可逆矩阵生成的目标矩阵,在一可选实施方式中,所述签名信息可以包括由第一字符串切分成的多个字符串以及由这多个字符串、第一可逆矩阵和第二可逆矩阵生成的目标矩阵。
该步骤S104具体包括:
将所述第一字符串进行切分,得到P个字符串,P为大于1的正整数;
基于所述P个字符串,将第一可逆矩阵的逆矩阵和第二可逆矩阵进行矩阵相乘处理,得到目标矩阵;
其中,所述签名信息包括所述P个字符串和所述目标矩阵。
具体的,可以将第一字符串进行切分,得到多个字符串,比如,得到r个长度为s的01字符串,这r个字符串分别可以用f1,...,fr表示,此时r大于1。
可以基于P个字符串、第一可逆矩阵和第二可逆矩阵,生成目标矩阵,具体的,对于i∈{1,...,r},可以从第一可逆矩阵中获取下标为fi的第一可逆矩阵,之后第一电子设备可以采用公式计算目标矩阵。其中,Ei为目标矩阵,其数量可以为多个,表示私钥中第fi个第一可逆矩阵的逆矩阵,比如,当01字符串fi为1时,则为私钥中第一可逆矩阵C1的逆矩阵,也就是说,目标矩阵可以基于第二可逆矩阵Di与私钥中第一可逆矩阵的逆矩阵进行矩阵相乘得到。
最终,可以基于这r个字符串和多个目标矩阵,确定第一电子设备针对所述待发送文件的签名信息,该签名信息即为(f1,...,fr,E1,...,Er)。
若有另一电子设备如第三电子设备希望假扮第一电子设备,希望对待发送文件M产生签名,由于第三电子设备没有私钥,因此,其无法基于私钥生成目标矩阵,即无法采用公式生成目标矩阵E1,...,Er,而破解私钥需要求解一个对称张量同构问题,从而第三电子设备很难拿到第一电子设备的私钥。
另外,第三电子设备对协议直接的攻击方法都会归结于这样的问题:其需要找到一种方法产生多个01字符串,用g1,...,gr∈{0,1,...,t-1}表示,使得在计算i∈{1,...,r}后,从计算H(M|B1|...Br)所得到的f1,...,fr满足,对所有的i∈{1,...,r},存在fi=gi。而根据哈希函数的性质,这样的攻击成功的概率不会显著超过1/2rs。
因此,基于上述两点,第三电子设备伪造第一电子设备的签名信息非常困难。
进一步的,协议中的参数组合可以做如下设置,以达到128bit的安全性,如下表1所示。
表1对达到128bit安全性的一些参数组合
n
p
r
s
公钥长度(Bytes)
签名长度(Bytes)
组合1
9
8191
128
1
536
16864
组合2
9
8191
16
8
68639
2122
组合3
9
8191
21
6
17160
2780
如此,通过使用随机生成的第二可逆矩阵以及公私钥生成签名,这使得其他电子设备在不知道私钥的情况下,通过可知的公钥(该公钥可以为多个对称张量或多个对称张量的压缩表示)伪造其之间的可逆矩阵即伪造私钥非常困难,从而使得伪造数字签名非常困难,进而可以提高数字签名的安全性。
本实施例中,通过将第一电子设备的私钥设置成可逆矩阵的形式,并通过随机生成的第二可逆矩阵和初始对称张量构造第一目标数据,该第一目标数据为与初始对称张量同构的第二对称张量或第二对称张量的第二压缩数据,基于第一目标数据采用哈希函数对所述待发送文件进行数字签名。这样,若其他电子设备需要伪造第一电子设备针对待发送文件的签名信息,需要根据公钥去破解得到私钥,这就相当于其他电子设备需要求解一个对称张量同构问题。由于对称张量同构问题的求解困难性,因此,其他电子设备很难根据公钥破解得到第一电子设备的私钥,如此,其他电子设备是很难伪造第一电子设备的签名,从而可以保证数字签名的安全性。
并且,采用格罗布纳基等算法对这两种问题分别进行求解时,一方面由于对称张量的数据对称性和关系性相对于其他张量更好,另一方面由于攻击算法精度的问题,求解两个对称张量是否为同构张量,且在两个对称张量为同构的张量的情况下,求解这两个对称张量相互变换的可逆矩阵,对称张量同构问题相对于张量同构问题而言,其运算时的收敛速度更慢。因此,所基于的算法问题采用对称张量同构问题进行数字签名的设计,相对于采用张量同构问题进行数字签名的设计,其数字签名的安全性更高。
表2是采用格罗布纳基攻击不同数字签名方案的破解时间表,数字签名方案所基于的算法分别为对称张量同构问题和张量同构问题,其中,表2中N/A表示无法破解。如下表2所示,在协议中的不同参数下,对称张量同构问题相对于张量同构问题的求解,难度更高。并且,采用对称张量同构问题设计数字签名方案,在有限域下,储存一个对称张量的压缩表示只需要个域元素,大大降低了公钥长度。
表2采用格罗布纳基攻击不同数字签名方案的破解时间表
协议中参数
(n=4,p=5)
(n=5,p=5)
张量同构问题
0.076s
94.448s
对称张量同构问题
N/A
N/A
另外,可以基于编程语言Python原型实现数字签名方案,各个方案的运行时间表如下表3所示。
表3各个方案的运行时间表
从上表3可以看出,相较于其他方案,本方案在运行时间上有明显改善。
可选的,所述方法还包括:
基于所述第一可逆矩阵和所述第一压缩数据,生成与所述第一对称张量同构的第三对称张量的第三压缩数据;
生成包括所述第一压缩数据和所述第三压缩数据的公钥,所述公钥与所述私钥对应;
将所述公钥进行公布。
本实施方式是基于私钥生成公钥的过程,且为了使其他电子设备在接收到所述第一电子设备发送的签名信息和待发送文件的情况下,可以对待发送文件的发送方即第一电子设备进行身份验证,需要将私钥对应的公钥进行公布。
第一电子设备的私钥包括第一可逆矩阵Ci∈GL(n,p),i∈{1,2,...,t-1}以及大小为n的单位矩阵C0,可以基于所述第一可逆矩阵和第一压缩数据,生成第一对称张量同构的第三对称张量的第三压缩数据,该公钥可以包括第一压缩数据和第三压缩数据。
具体的,可以基于第一可逆矩阵和第一压缩数据,采用公式Ai=(Ci,Ci,Ci)°A0,i∈{1,...,t-1},生成第一对称张量同构的第三对称张量的第三压缩数据,第三对称张量可以用Ai,i∈{1,...,t-1}表示。其生成第三压缩数据的方式与生成第二压缩数据的方式类似,这里不进行赘述。
之后,可以将生成的所述公钥进行公布,相应的,其他电子设备即可以得到所述第一电子设备的公钥。
本实施方式中,通过私钥和第一压缩数据去构造与该初始对称张量同构的第三对称张量的第三压缩数据,并将第一压缩数据和第三压缩数据作为第一电子设备的公钥进行公布。如此,通过将公钥设置成同构对称张量的压缩数据的形式,其他电子设备只能基于第一电子设备公布的公钥对第一电子设备的签名信息进行解签,以验证第一电子设备的身份,而很难基于公钥对应的同构对称张量去破解同构对称张量之间的可逆矩阵即私钥,这相当于求解一个对称张量同构问题,因而可以提高数字签名的安全性,有效抵御量子计算机的攻击。
并且,通过将公钥设置为对称张量的压缩表示,可以减少公钥长度,从而可以减少电子设备之间的数据交互量。
可选的,所述第一对称张量包括所述第一压缩数据,所述基于所述第一压缩数据和随机生成的第二可逆矩阵,生成第一目标数据,包括:
基于所述第一压缩数据,获取所述第一对称张量中除所述第一压缩数据之外的其他数据;
基于所述第一压缩数据和所述其他数据,对所述第二可逆矩阵与所述第一对称张量进行矩阵相乘处理,得到第一目标数据。
本实施方式中,在计算与第一对称张量同构的对称张量或对称张量的压缩表示时,可以基于第一压缩数据还原出第一对称张量,之后,对可逆矩阵与第一对称张量进行矩阵相乘处理,得到与第一对称张量同构的对称张量或对称张量的压缩表示。
如此,一方面可以减少第一电子设备的数据存储量,另一方面还可以减少数据计算量。
第二实施例
如图2所示,本公开提供一种签名信息的验证方法,所述方法应用于第二电子设备,包括如下步骤:
步骤S201:获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括第一对称张量的第一压缩数据和第三对称张量的第三压缩数据;
步骤S202:基于所述第一压缩数据和所述第三压缩数据,将所述签名信息与所述第一对称张量和所述第三对称张量进行矩阵相乘处理,以生成第二目标数据,所述第二目标数据为第四对称张量或所述第四对称张量的第四压缩数据;
步骤S203:基于所述第二目标数据,对所述待发送文件进行数字签名,得到第二字符串;
步骤S204:基于所述第二字符串对所述签名信息进行验证;
其中,所述第二目标数据的类型与第一目标数据的类型对应,所述第一目标数据为与所述第一对称张量同构的第二对称张量或所述第二对称张量的第二压缩数据,所述第一目标数据用于对所述待发送文件进行数字签名。
本实施例中,第二电子设备为接收待发送文件的电子设备,第一电子设备可以将待发送文件和待发送文件的签名信息发送给第二电子设备,相应的,第二电子设备可以接收待发送文件和待发送文件的签名信息。
且第一电子设备在发送待发送文件和待发送文件的签名信息之前,会将用于验证其身份的公钥进行公布,相应的,第二电子设备可以获取第一电子设备公布的公钥。
公钥与签名信息关联的私钥对应,即公钥与生成签名信息的私钥为一密钥对,公钥中可以包括第三对称张量的第三压缩数据以及第一电子设备随机生成的初始对称张量的第一压缩数据。
可以基于第一压缩数据和第三压缩数据,将签名信息中的目标矩阵与第一对称张量和第三对称张量进行矩阵相乘处理,以生成第二目标数据,第二目标数据为至少一个第四对称张量或该至少一个第四对称张量的第四压缩数据,第四对称张量可以用Bi'表示。
具体的,对i∈{1,...,r},第二电子设备可以采用公式来生成至少一个第四对称张量或第四对称张量的第四压缩数据。当时,为第一对称张量,其余为第三对称张量。
之后,可以基于第二目标数据,采用哈希函数对待发送文件进行数字签名,得到第二字符串。具体的,可以将待发送文件M与第二目标数据作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第二字符串。
其中,当第二目标数据为第四对称张量时,可以将待发送文件M与第四对称张量B1',…,Br'作为字符串串联,之后,对串联后的字符串进行哈希运算,得到第二字符串,用H(M|B1'|...|Br')表示。其中,M|B1'|...|Br'表示待发送文件M与第四对称张量B1',…,Br'作为字符串串联,第二字符串也可以为二进制字符串,即01字符串,其长度也可以为r*s。
第二目标数据的类型可以与第一目标数据的类型对应,即当第一目标数据为对称张量的形式时,第二目标数据也应该为对称张量的形式,而当第一目标数据为对称张量的压缩表示时,第二目标数据也应该为对称张量的压缩表示,这样可以保证采用哈希函数进行数字签名和验签的一致性。
最后,可以基于第二字符串对签名信息进行验证,在第二字符串与签名信息中的字符串全部相同的情况下,签名信息验证成功,即确定待发送文件确实是第一电子设备发送的。在第二字符串与签名信息中的字符串不完全相同的情况下,签名信息验证失败,即确定待发送文件是其他电子设备而非第一电子设备发送的。其中,第二字符串与签名信息中的字符串不完全相同指的是至少有一个字符串不完全相同。
本实施例中,通过基于公钥中对称张量的压缩表示和签名信息,生成第二目标数据,基于第二目标数据,采用哈希函数对待发送文件进行数字签名,得到第二字符串;并基于第二字符串对签名信息进行验证。如此,第二电子设备在获取到第一电子设备公布的公钥的情况下,基于公钥以及接收到的待发送文件和待发送文件的签名信息,即可以非常方便地对签名信息进行验证,以验证待发送文件的发送方的身份。
可选的,所述签名信息包括P个字符串,P为大于1的正整数,所述步骤S204具体包括:
将所述第二字符串进行切分,得到M个字符串,P等于M;
在所述P个字符串与所述M个字符串一一相同的情况下,确定所述签名信息验证成功;或者,在所述P个字符串中第一目标字符串与所述M个字符串中第二目标字符串不相同的情况下,确定所述签名信息验证失败;
其中,所述第一目标字符串在所述P个字符串的位置与所述第二目标字符串在所述M个字符串的位置对应,所述第一目标字符串为所述P个字符串中任一字符串。
本实施方式中,可以将第二字符串进行切分,得到多个字符串,比如,得到r个长度为s的01字符串,这r个字符串分别可以用f1',...,fr'表示。
对于i∈{1,...,r},若均存在fi=fi',则所述签名信息验证成功,否则所述签名信息验证失败。
本实施方式中,通过将第二字符串进行切分,得到多个字符串,并将这多个字符串与签名信息中的多个字符串进行一一比对,在均相同的情况下,签名信息验证成功,在存在任一字符串不相同的情况下,签名信息验证失败,如此,可以非常方便地对签名信息进行验证。
第三实施例
如图3所示,本公开提供一种数字签名装置300,所述装置应用于第一电子设备,包括:
第一获取模块301,用于获取待发送文件、所述第一电子设备用于数字签名的私钥和第一压缩数据,所述第一压缩数据基于随机生成的第一对称张量压缩得到,所述第一对称张量的阶数大于2,所述私钥包括第一可逆矩阵;
第一生成模块302,用于基于所述第一压缩数据和随机生成的第二可逆矩阵,生成第一目标数据,所述第一目标数据为:与所述第一对称张量同构的第二对称张量,或,所述第二对称张量的第二压缩数据;
第一数字签名模块303,用于基于所述第一目标数据,对所述待发送文件进行数字签名,得到第一字符串;
第一相乘处理模块304,用于基于所述第一字符串,将所述第一可逆矩阵的逆矩阵和所述第二可逆矩阵进行矩阵相乘处理,以生成所述第一电子设备针对所述待发送文件的签名信息。
可选的,所述装置还包括:
第二生成模块,用于基于所述第一可逆矩阵和所述第一压缩数据,生成与所述第一对称张量同构的第三对称张量的第三压缩数据;
第三生成模块,用于生成包括所述第一压缩数据和所述第三压缩数据的公钥,所述公钥与所述私钥对应;
公布模块,用于将所述公钥进行公布。
可选的,所述第一生成模块302,具体用于:
基于所述第一压缩数据,获取所述第一对称张量中除所述第一压缩数据之外的其他数据;基于所述第一压缩数据和所述其他数据,对所述第二可逆矩阵与所述第一对称张量进行矩阵相乘处理,得到第一目标数据。
本公开提供的数字签名装置300能够实现数字签名方法实施例实现的各个过程,且能够达到相同的有益效果,为避免重复,这里不再赘述。
第四实施例
如图4所示,本公开提供一种签名信息的验证装置400,所述装置应用于第二电子设备,包括:
第二获取模块401,用于获取待发送文件、所述待发送文件的签名信息和所述第二电子设备用于验证签名信息的公钥,所述公钥与所述签名信息关联的私钥对应,所述公钥包括第一对称张量的第一压缩数据和第三对称张量的第三压缩数据;
第二相乘处理模块402,用于基于所述第一压缩数据和所述第三压缩数据,将所述签名信息与所述第一对称张量和所述第三对称张量进行矩阵相乘处理,以生成第二目标数据,所述第二目标数据为第四对称张量或所述第四对称张量的第四压缩数据;
第二数字签名模块403,用于基于所述第二目标数据,对所述待发送文件进行数字签名,得到第二字符串;
验证模块404,用于基于所述第二字符串对所述签名信息进行验证;
其中,所述第二目标数据的类型与第一目标数据的类型对应,所述第一目标数据为与所述第一对称张量同构的第二对称张量或所述第二对称张量的第二压缩数据,所述第一目标数据用于对所述待发送文件进行数字签名。
可选的,所述签名信息包括P个字符串,P为大于1的正整数,所述验证模块404,具体用于:
将所述第二字符串进行切分,得到M个字符串,P等于M;
在所述P个字符串与所述M个字符串一一相同的情况下,确定所述签名信息验证成功;或者,在所述P个字符串中第一目标字符串与所述M个字符串中第二目标字符串不相同的情况下,确定所述签名信息验证失败;
其中,所述第一目标字符串在所述P个字符串的位置与所述第二目标字符串在所述M个字符串的位置对应,所述第一目标字符串为所述P个字符串中任一字符串。
本公开提供的签名信息的验证装置400能够实现签名信息的验证方法实施例实现的各个过程,且能够达到相同的有益效果,为避免重复,这里不再赘述。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如数字签名方法或签名信息的验证方法。例如,在一些实施例中,数字签名方法或签名信息的验证方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的数字签名方法或签名信息的验证方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数字签名方法或签名信息的验证方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。