CN117914469A - 数字签名方法、装置及存储介质 - Google Patents

数字签名方法、装置及存储介质 Download PDF

Info

Publication number
CN117914469A
CN117914469A CN202410063530.4A CN202410063530A CN117914469A CN 117914469 A CN117914469 A CN 117914469A CN 202410063530 A CN202410063530 A CN 202410063530A CN 117914469 A CN117914469 A CN 117914469A
Authority
CN
China
Prior art keywords
target
signature
parameters
preset
signature data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410063530.4A
Other languages
English (en)
Inventor
丁津泰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN202410063530.4A priority Critical patent/CN117914469A/zh
Publication of CN117914469A publication Critical patent/CN117914469A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本公开涉及信息安全处理领域,尤其涉及一种数字签名方法、装置及存储介质。所述方法包括获取私钥和待签名的目标消息;根据所述私钥,对所述目标消息进行数字签名得到签名数据,所述数字签名是仅基于RLWE问题的后量子签名。本公开实施例提供了一种仅基于RLWE问题的数字签名方法,算法设计简单,实现不需要用到浮点运算,并且由于该算法的安全性仅依赖于RLWE问题的困难性,因此只要RLWE问题难以解决,这种数字签名方法就是安全的。此外,由于RLWE问题被认为是与量子计算无关的问题,因此这种方法也能够抵抗量子计算机的攻击。

Description

数字签名方法、装置及存储介质
技术领域
本公开涉及信息安全处理领域,尤其涉及一种数字签名方法、装置及存储介质。
背景技术
数字签名技术可以用来保证数字信息真实完整、不可抵赖,是现代互联网安全通信所依赖的关键性技术。然而目前被广泛使用的第一代公钥密码系统中,基于椭圆曲线上离散对数问题困难性的签名算法正面临量子计算机的威胁。针对此问题,正在寻找能抵抗量子计算机攻击的替代方案,也就是所谓的后量子签名方案。
目前用于构造后量子签名算法的困难问题主要包括:随机格/理想格中的近似最短向量问题(Approximate Shortest Vector Problem,SVP),有限域上随机二次方程求解问题即多元二次多项式(Multivariate Quadratic polynomial,MQ)问题,随机码/循环码的解码问题以及一些基于哈希的困难问题。
其中,基于格的签名方案的构造签名和密钥尺寸都相对较小,而且签名和验签速度快,具有很好的安全性和效率,因此在后量子签名方案中得到了广泛的应用。目前基于格的签名方案,主要遵循的技术路线包括哈希和签名(英文:Hash and Sign)方法或者带有中止机制的Fiat-Shamir(英文:Fiat-Shamir with Aborts)方法。但是上述方法中,算法设计和实现复杂,并且容易受到量子计算机的攻击。
发明内容
有鉴于此,本公开提出了一种数字签名方法、装置及存储介质。本公开实施例提供了一种仅基于环上带误差学习(Ring Learning With Errors,RLWE)问题的数字签名方法,算法设计简单,实现不需要用到浮点运算,并且能够抵抗量子计算机的攻击。
根据本公开的一方面,提供了一种数字签名方法,所述方法包括:
获取私钥和待签名的目标消息;
根据所述私钥,对所述目标消息进行数字签名得到签名数据,所述数字签名是仅基于RLWE问题的后量子签名。
在一种可能的实现方式中,所述根据所述私钥,对所述目标消息进行数字签名得到签名数据,包括:
从预设的多项式环中随机选取第二随机数,并从预设的第二误差分布上随机选取m个第二误差向量,所述m为正整数;
根据所述第二随机数、所述m个第二误差向量和所述目标消息,采用预设的第一哈希函数得到第一目标值;
根据所述私钥和所述第一目标值,确定所述目标消息的目标签名;
根据所述目标签名和所述第一目标值,得到所述签名数据。
在另一种可能的实现方式中,所述根据所述第二随机数、所述m个第二误差向量和所述目标消息,采用预设的第一哈希函数得到第一目标值,包括:
根据所述第二随机数、所述m个第二误差向量和第一预设值,确定m个第三参数;
根据所述m个第三参数,采用预设的目标函数得到目标向量,所述目标函数包括信号函数和协调函数,所述信号函数用于指示生成随机的二进制向量,所述协调函数用于指示将所述二进制向量映射为整数向量;
根据所述目标向量和所述目标消息,采用所述第一哈希函数得到所述第一目标值。
在另一种可能的实现方式中,所述根据所述m个第三参数,采用预设的目标函数得到目标向量,包括:
根据所述m个第三参数,采用所述信号函数得到m个第四参数;
根据所述m个第三参数、所述m个第四参数和所述第一预设值,采用所述协调函数得到所述目标向量,所述协调函数还用于指示将所述m个第三参数和所述m个第四参数中的每个参数对所述第一预设值取模。
在另一种可能的实现方式中,所述签名数据包括所述目标签名、所述第一目标值和所述m个第四参数。
在另一种可能的实现方式中,所述方法还包括:
从预设的多项式环中随机选取m个第一参数和第一随机数,并从预设的第一误差分布上随机选取m个第一误差向量,所述m为正整数;
根据所述m个第一参数、所述第一随机数和所述m个第一误差向量,确定m个第二参数;
根据所述m个第一参数、所述第一随机数和所述m个第二参数确定密钥对,所述密钥对包括公钥和对应的所述私钥,所述公钥包括所述m个第一参数和所述m个第二参数。
在另一种可能的实现方式中,所述方法还包括:
对所述公钥进行压缩,存储压缩后的所述公钥。
在另一种可能的实现方式中,所述根据所述私钥,对所述目标消息进行数字签名得到签名数据之后,还包括:
当且仅当所述签名数据满足目标条件时,确定第一验证结果,所述第一验证结果用于指示所述签名数据合法;
当所述签名数据不满足所述目标条件时,确定第二验证结果,所述第二验证结果用于指示所述签名数据不合法;
其中,所述目标条件是基于所述公钥、所述目标消息和预设的第二哈希函数所确定的。
在另一种可能的实现方式中,所述方法还包括:
当验证得到所述第一验证结果时,输出所述签名数据;
当验证得到所述第二验证结果时,继续执行根据所述私钥,对所述目标消息进行数字签名得到签名数据的步骤。
在另一种可能的实现方式中,所述签名数据包括目标签名、第一目标值和m个第四参数,所述当且仅当所述签名数据满足目标条件时,输出第一验证结果,包括:
根据所述公钥、所述目标签名、所述第一目标值和所述m个第四参数,通过预设的协调函数得到m个第五参数,所述协调函数用于指示对第一预设值取模;
根据所述m个第五参数和所述目标消息,通过所述第二哈希函数确定第二目标值;
当且仅当所述第一目标值与所述第二目标值相等时,输出所述第一验证结果。
根据本公开的另一方面,提供了一种数字签名装置,所述装置包括:
获取模块,用于获取私钥和待签名的目标消息;
签名模块,用于根据所述私钥,对所述目标消息进行数字签名得到签名数据,所述数字签名是仅基于RLWE问题的后量子签名。
在一种可能的实现方式中,所述签名模块,还用于:
从预设的多项式环中随机选取第二随机数,并从预设的第二误差分布上随机选取m个第二误差向量,所述m为正整数;
根据所述第二随机数、所述m个第二误差向量和所述目标消息,采用预设的第一哈希函数得到第一目标值;
根据所述私钥和所述第一目标值,确定所述目标消息的目标签名;
根据所述目标签名和所述第一目标值,得到所述签名数据。
在另一种可能的实现方式中,所述签名模块,还用于:
根据所述第二随机数、所述m个第二误差向量和第一预设值,确定m个第三参数;
根据所述m个第三参数,采用预设的目标函数得到目标向量,所述目标函数包括信号函数和协调函数,所述信号函数用于指示生成随机的二进制向量,所述协调函数用于指示将所述二进制向量映射为整数向量;
根据所述目标向量和所述目标消息,采用所述第一哈希函数得到所述第一目标值。
在另一种可能的实现方式中,所述签名模块,还用于:
根据所述m个第三参数,采用所述信号函数得到m个第四参数;
根据所述m个第三参数、所述m个第四参数和所述第一预设值,采用所述协调函数得到所述目标向量,所述协调函数还用于指示将所述m个第三参数和所述m个第四参数中的每个参数对所述第一预设值取模。
在另一种可能的实现方式中,所述签名数据包括所述目标签名、所述第一目标值和所述m个第四参数。
在另一种可能的实现方式中,所述装置还包括:确定模块,用于:
从预设的多项式环中随机选取m个第一参数和第一随机数,并从预设的第一误差分布上随机选取m个第一误差向量,所述m为正整数;
根据所述m个第一参数、所述第一随机数和所述m个第一误差向量,确定m个第二参数;
根据所述m个第一参数、所述第一随机数和所述m个第二参数确定密钥对,所述密钥对包括公钥和对应的所述私钥,所述公钥包括所述m个第一参数和所述m个第二参数。
在另一种可能的实现方式中,所述装置还包括:存储模块,用于:
对所述公钥进行压缩,存储压缩后的所述公钥。
在另一种可能的实现方式中,所述装置还包括:验证模块,用于:
当且仅当所述签名数据满足目标条件时,确定第一验证结果,所述第一验证结果用于指示所述签名数据合法;
当所述签名数据不满足所述目标条件时,确定第二验证结果,所述第二验证结果用于指示所述签名数据不合法;
其中,所述目标条件是基于所述公钥、所述目标消息和预设的第二哈希函数所确定的。
在另一种可能的实现方式中,所述装置还包括:签名模块,还用于:
当验证得到所述第一验证结果时,输出所述签名数据;
当验证得到所述第二验证结果时,继续执行根据所述私钥,对所述目标消息进行数字签名得到签名数据的步骤。
在另一种可能的实现方式中,所述签名数据包括目标签名、第一目标值和m个第四参数,所述验证模块,还用于:
根据所述公钥、所述目标签名、所述第一目标值和所述m个第四参数,通过预设的协调函数得到m个第五参数,所述协调函数用于指示对第一预设值取模;
根据所述m个第五参数和所述目标消息,通过所述第二哈希函数确定第二目标值;
当且仅当所述第一目标值与所述第二目标值相等时,输出所述第一验证结果。
根据本公开的另一方面,提供了一种数字签名装置,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现第一方面或第一方面的任意一种可能的实现方式所提供的方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现第一方面或第一方面的任意一种可能的实现方式所提供的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当计算机可读代码在计算设备的处理器中运行时,计算设备中的处理器执行第一方面或第一方面的任意一种可能的实现方式所提供的方法。
本公开实施例提供了一种仅基于RLWE问题的数字签名方法,算法设计简单,实现不需要用到浮点运算,并且由于该算法的安全性仅依赖于RLWE问题的困难性,因此只要RLWE问题难以解决,这种数字签名方法就是安全的。此外,由于RLWE问题被认为是与量子计算无关的问题,因此这种方法也能够抵抗量子计算机的攻击。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了本公开一个示例性实施例提供的计算设备的结构示意图;
图2示出了本公开一个示例性实施例提供的数字签名方法的流程图;
图3示出了本公开一个示例性实施例提供的密钥生成阶段的流程图;。
图4示出了本公开一个示例性实施例提供的数字签名阶段的流程图;
图5示出了本公开一个示例性实施例提供的重复签名方式的流程图;
图6示出了本公开一个示例性实施例提供的签名验证阶段的流程图;
图7示出了本公开一个示例性实施例提供的数字签名方法的流程图;
图8示出了本公开一个示例性实施例提供的数字签名装置的结构示意图;
图9是根据一示例性实施例示出的一种用于数字签名的装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
相关技术中,基于哈希的签名方案是所有后量子签名中设计最为保守的,安全性被学界广泛认同,但签名的速度和签名的大小和别的方案有若干个数量级的差距,应用场景有限。基于随机码/循环码解码的签名方案在过去十几年里不断被提出然后破解,安全性没有理论上的保证,不宜实际应用。基于随机二次方程求解问题的签名方案目前主要有非平衡油醋(Unbalanced Oil and Vinegar,UOV)方案及其变种。UOV方案的签名大小比基于格的签名更小,但其公钥大小一般是基于格的签名公钥大小的几十倍,并不适用于所有应用场景。UOV方案有许多旨在减小公钥大小的变种,但这些变种都没有安全性证明,可靠性有待时间的考验。而且即使是这些减小了公钥大小的变种,公钥大小依然和基于格的签名公钥有显著差距。
基于格的签名方案中的哈希和签名方法在早期也经历了不断被破解再被改进的过程。在签名时,该算法要求签名者利用私钥的信息在格上进行某种采样,返回一个给定点附近的格点。早期设计的采样算法会暴露私钥的信息,从而攻击者可以从若干签名样本中恢复出私钥。现代的设计中多采用高斯采样算法,这一算法可以被证明不会泄漏私钥信息,但也带来了一些问题。比如高斯采样过程中需要浮点数运算,在很多设备上并不支持,限制了应用场景。更重要的问题是,高斯采样算法需要非常精细的实现来抵抗测信道攻击,对程序实现有很高的要求,同时对性能有一定影响。
由于这些问题之后又提出了一种基于拒绝采样的带有中止机制的Fiat-Shamir方法,其典型的代表为锂(英文:Dilithium)方案。该方法不再依赖于高斯采样,但又会带来一些新问题。比如Dilithium方案的公钥和签名大小在同样安全性要求下猎鹰(英文:Falcon)方案要大若干倍。而且这一类方案的安全性证明中往往要同时用到关于格的小整数解(Small Integer Solution,SIS)类假设和带误差学习(Learning With Errors,LWE)类假设。比如,Dilithium方案目前仅给出了到模数小整数解(Module Small IntegerSolution,MSIS)问题和模数带误差学习(Module Learning With Errors,MLWE)问题的不紧的归约。也即,Dilithium方案给出的合法签名是一个短向量,攻击者既可以通过密钥恢复(求解LWE问题)攻击,也可以在不知道密钥的情况下直接计算的短向量(求解SIS问题)来伪造签名,算法设计复杂,并且不容易抵抗量子计算机的攻击。
而本公开实施例提供了一种仅基于RLWE问题的数字签名方法,算法设计简单明了,实现不需要用到浮点运算,易于实现,并且由于该算法的安全性仅依赖于RLWE问题的困难性,因此只要RLWE问题难以解决,这种数字签名方法就是安全的。此外,由于RLWE问题被认为是与量子计算无关的问题,因此这种方法也能够抵抗量子计算机的攻击。
首先,对本公开实施例涉及的一些名词进行介绍。
1、多项式环与向量:记为固定的多项式环,其中/>φ为中一个n次多项式,/>为有限域,/>表示有限域/>上的一元多项式环,(φ)表示由中某个元素φ生成的理想,/>为一个由有限域上的多项式构成的环,其中每个元素都可以写成一个多项式的形式。在本公开实施例中,m、n、p均为正整数,q为奇素数。
比如,n的取值可以为一个2的幂。对于/>中的元素v,定义了一个新的向量(v[0],v[1],…,v[n-1]),其中每个元素与v的xi次项系数相对应,v[i]表示向量v的第i个分量,i为正整数。另外,对/>(模q的剩余类)中的任意元素x,记中唯一一个与x对应的元素为τq(x),即对于每个元素x,τq(x)是唯一的,并且满足关系τq(x)≡x(modq)。也就是说,对于向量v和元素x,对应有:v[i]是向量v的第i个分量;τq(x)是模q下与元素x对应的唯一元素。
2、随机性:对于任何有限集S,用x←S来表示:x是从S中均匀随机选取的。如果S是一个概率分布,则表示x是根据概率分布S随机选取的。在本公开实施例中,涉及上的三个误差分布,分别为第一误差分布χ1、第二误差分布χ2和第三误差分布η。
3、信号函数和协调函数:信号函数用于指示将输入元素转换为一个二进制向量。记信号函数Signal为:Signal(v)的第i个分量为0,当且仅当/>也就是说,信号函数是一个将/>中的元素映射到{0,1}n中的元素的函数,Signal(v)用于指示将输入v的每个分量v[i]的绝对值与/>进行比较,如果分量的绝对值小于或等于/>则Signal(v)对应的分量v[i]为0,否则为1。
协调函数用于指示将二进制向量映射为整数向量,即将二进制向量与输入元素进行某种操作,并将结果映射到有限域中的值。这些操作通常涉及到模p运算、加法、乘法等数学运算。记协调函数Modp为:也就是说,协调函数是一个将/>和{0,1}n中的元素组合起来,并映射到/>中的元素的函数,/>表示有限域ZP上的n维向量组成的集合,其中,/>τq表示模q下的求余运算,b是函数Modp输入的第二部分,是{0,1}n中的元素。
可选的,可以使用更一般的信号函数和协调函数让数字签名算法有更大容错能力。事实上,对任何一个分划和整数c1,c2,…,cl(其中L1,…,Ll是不交的集合,且这些集合的并集为/>可以定义一个对应的信号函数/>和一个协调函数/> 如下:
当且仅当v[i]∈Ls时;
其中,,Ls是一个由中的元素组成的集合,s是一个介于1和l之间的整数索引,l是正整数,c1,c2,…,cl是整数系数,τq表示模q下的求余运算。协调函数的定义允许对于每个元素v∈Rq和一个索引i,计算对应的/>这是一个在模p下的整数。这个操作是在多项式环中进行加法和乘法运算时使用的,确保了结果仍然落在模p的剩余类中。
应当理解的是,上述各个结构(比如多项式环、信号函数和协调函数)还可以通过其他方式实现,本公开实施例对此不加以限定。
然后,对本公开实施例涉及的应用场景进行介绍。
本公开实施例提供的数字签名方法可应用于计算设备中。请参考图1,其示出了本公开一个示例性实施例提供的计算设备的结构示意图。
该计算设备可以由服务器来执行,也可以由终端来执行,还可以是由服务器和终端共同执行。终端包括移动终端或者固定终端,比如终端可以是手机、平板电脑、膝上型便携计算机和台式计算机等等。服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。本公开实施例对此不加以限定。
计算设备包括处理器10、存储器20以及通信接口30。本领域技术人员可以理解,图1中示出的结构并不构成对该计算设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器10是计算设备的控制中心,利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器20内的软件程序和/或模块,以及调用存储在存储器20内的数据,执行计算设备的各种功能和处理数据,从而对计算设备进行整体控制。处理器10可以由中央处理器(Central Processing Unit,CPU)实现,也可以由图形处理器(GraphicsProcessing Unit,GPU)实现。
存储器20可用于存储软件程序以及模块。处理器10通过运行存储在存储器20的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统21、获取模块22、签名模块23和至少一个功能所需的应用程序24等;存储数据区可存储根据计算设备的使用所创建的数据等。存储器20可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable Read-Only Memory,PROM),只读存储器(Read Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。相应地,存储器20还可以包括存储器控制器,以提供处理器10对存储器20的访问。
其中,处理器10通过运行获取模块22执行以下功能:获取私钥和待签名的目标消息;处理器10通过运行签名模块23执行以下功能:根据私钥,对目标消息进行数字签名得到签名数据,数字签名是仅基于RLWE问题的后量子签名。
需要说明的是,本公开实施例提供的数字签名方法,可以应用于多种应用场景。在电子商务中,数字签名方法可以用于订单处理、付款认证以及物流环节的认证和验证,确保交易的真实性和完整性。此外,数字签名方法也在网络安全领域发挥了重要作用。例如,在安全套接层(Secure Socket Layer,SSL)/传输层安全(Transport Layer Security,TLS)协议中,服务器证书就是加上了数字签名的服务器公钥,以认证服务器身份的合法性。同时,客户端(用户)在与服务器进行交互时也会使用客户端证书进行认证,这同样也利用了数字签名技术来保障网络信息的完整性并对发送信息者进行身份认证。
可选的,本公开实施例提供的数字签名方法包括但不限于如下三个阶段:
第一阶段即密钥生成阶段,该阶段不需要输入参数,输出参数包括一对密钥对,密钥对包括公钥和对应的私钥,比如,公钥为pk,私钥为sk。
第二阶段即数字签名阶段,该阶段的输入参数包括待签名的目标消息和上述的私钥,输出参数包括该目标消息对应的签名数据,比如,目标消息为m,签名数据为sig。
第三阶段即签名验证阶段,该阶段的输入参数为上述的公钥、签名数据和对应的目标消息,输出参数包括验证结果,验证结果用于指示签名数据是否合法,比如,验证结果可以是用于指示签名数据合法的“yes”的验证结果,或者也可以是用于指示签名数据不合法的“no”的验证结果。
下面,采用示例性实施例对本公开实施例提供的数字签名方法进行介绍。
请参考图2,其示出了本公开一个示例性实施例提供的数字签名方法的流程图,本实施例以该方法用于图1所示的计算设备中来举例说明。该方法包括以下几个步骤。
步骤201,获取密钥对,密钥对包括公钥和对应的私钥。
其中,私钥用于对待签名的目标消息进行数字签名得到签名数据,公钥用于验证该签名数据。
可选的,计算设备获取密钥对的过程,可以包括如下几个步骤:随机选取m个第一参数、第一随机数和m个第一误差向量,m为正整数;根据m个第一参数、第一随机数和m个第一误差向量,确定m个第二参数;根据m个第一参数、第一随机数和m个第二参数确定密钥对,密钥对包括公钥和对应的私钥,公钥包括m个第一参数和m个第二参数。
其中,m为正整数,m可以是根据预先设置的数值确定的,比如m>3nlogp q。其中,n、p和q均是预先设置的数值,比如,n=256,m=7,p=4,q=10753;又比如,n=512,m=7,p=4,q=13313。可选的,选取m为最小的满足p{mn}>2{128}*qn的整数。本公开实施例不加以限定。
m个第一参数和第一随机数可以是从预设的多项式环中随机选取的,其中随机选取可以是均匀随机选取。或者,m个第一参数和第一随机数也可以是根据输入的种子数据,通过预设的伪随机函数生成的。比如,为了减小公钥的大小,通过伪随机函数从一个种子数据seedpk生成m个第一参数和第一随机数,即m个ai和s(s的数量可以是一个)。然后对基于m个第一参数和第一随机数生成的公钥进行压缩,仅存储压缩后的公钥cpk=(seedpk,(bi)i=1,…,m),压缩后的公钥大小只有原始的公钥的一半左右。
在密钥生成阶段中,只用生成m个RLWE样本即m个第一误差向量。m个第一误差向量是从预设的第一误差分布上随机选取的。该第一误差分布可以是预设的多项式环上的误差分布。
多项式环和第一误差分布的选择可以相当灵活,确保多项式环和第一误差分布对应的RLWE问题均是困难的即可。可选的,多项式环和第一误差分布对应的RLWE问题的难度阈值均大于预设难度阈值。其中,预设难度阈值可以是默认设置的,或者是自定设置的。本公开实施例对此不加以限定。
第一误差分布可以是具有较小标准差的高斯分布,比如第一误差分布是具有目标标准差的高斯分布,目标标准差的数值小于预设标准差阈值。其中,预设标准差阈值可以是默认设置的,或者是自定设置的。本公开实施例对此不加以限定。
可选的,根据m个第一参数、第一随机数和m个第一误差向量,确定m个第二参数,包括:对于m个索引中的每个索引,根据索引对应的第一参数、第一随机数、第一预设值和索引对应的第一误差向量,确定索引对应的第二参数,从而确定出m个第二参数。
可选的,根据m个第一参数、第一随机数和m个第二参数确定密钥对,包括:根据m个第一参数和m个第二参数确定公钥,公钥包括m个第一参数和m个第二参数;确定私钥,私钥包括公钥和第一随机数。
示意性的,密钥生成阶段的流程图如图3所示,pk表示公钥,sk表示私钥,密钥生成阶段包括但不限于几个步骤:1、对于i=1,...,m,从预设的多项式环中均匀随机选取m个第一参数ai;2、从多项式环/>中均匀随机选取第一随机数s;3、对于i=1,...,m,按照第一误差分布χ1随机选取m个第一误差向量ei;4、对于i=1,...,m,计算m个第二参数bi,比如根据m个第一参数ai、第一随机数s、第一预设值p和m个第一误差向量ei,确定m个第二参数bi,每个第二参数bi可以通过如下公式计算得到:bi=ai*s+p*ei;5、返回公钥pk=(a1,...,am,b1,...,bm),私钥sk=(pk,s)。
步骤202,根据私钥,对目标消息进行数字签名得到签名数据,数字签名是仅基于RLWE问题的后量子签名。
计算设备随机选取第二随机数和m个第二误差向量,m为正整数;根据第二随机数、m个第二误差向量和目标消息,采用预设的第一哈希函数得到第一目标值;根据私钥和第一目标值,确定目标消息的目标签名;根据目标签名和第一目标值,得到签名数据。
可选的,第二随机数可以是从预设的多项式环中随机选取的。m个第二误差向量可以是从预设的第二误差分布上随机选取的。其中,第二误差分布可以是多项式环上的误差分布。第二误差分布是与第一误差分布不同的误差分布。
多项式环和第二误差分布的选择也可以相当灵活,确保多项式环和第二误差分布对应的RLWE问题是困难的即可。可选的,多项式环和第二误差分布对应的RLWE问题的难度阈值均大于预设难度阈值。其中,预设难度阈值可以是默认设置的,或者是自定设置的。本公开实施例对此不加以限定。
第二误差分布可以是具有较小标准差的高斯分布,比如第二误差分布是具有目标标准差的高斯分布,目标标准差的数值小于预设标准差阈值。其中,预设标准差阈值可以是默认设置的,或者是自定设置的。本公开实施例对此不加以限定。
可选的,计算设备根据m个第一参数、第二随机数、m个第二误差向量和第一预设值,确定m个第三参数;根据m个第三参数,采用预设的目标函数得到目标向量;根据目标向量和目标消息,采用第一哈希函数得到第一目标值。
其中,目标函数包括信号函数和协调函数,信号函数用于指示生成随机的二进制向量,协调函数用于指示将二进制向量映射为整数向量。
为了保证签名数据不泄漏关于私钥的信息,在设计基于RLWE问题的签名数据时往往要加入一些小的误差。加了误差后,为了在保证验证时的一致性,相关技术中选择使用小误差,并且在签名验证阶段只比较高位的值(因为小的误差不影响高位的值,比如10001,10007,10004最高的3位都是100),而本公开实施例提供的方案与相关技术中的方案相比,采用了不同的技术路线,利用信号函数和协调函数来处理签名算法中RLWE带来的误差,即数字签名阶段中选取的误差(比如p*ei,p*ei′)均被第一预设值整除,在签名验证阶段只比较第一目标值与第二目标值,其中第二目标值是基于对第一预设值取模后的值所确定的(因为被第一预设值整除的误差不影响对第一预设值取模后的值,比如第一预设值为4,10041、10161,10173模4都等于1),从而能处理更大的误差。并且,对给定的在方案中使用更大的误差,可以提高方案的安全性。如果能有更大的误差处理能力,那就可以在减小参数(比如n,m)大小的同时增加误差,由于参数规模变小,使得计算速度提高,从而在保证安全性的前提下提高了签名效率。
可选的,计算设备根据m个第三参数,采用预设的目标函数得到目标向量,可以包括:根据m个第三参数,采用信号函数得到m个第四参数;根据m个第三参数、m个第四参数和第一预设值,采用协调函数得到目标向量,协调函数可以是多项式模运算,协调函数还用于指示将m个第三参数和m个第四参数中的每个参数对第一预设值取模。在该情况下,计算设备根据私钥中的第一随机数、第二随机数和第一目标值,确定目标消息的目标签名;根据目标签名、第一目标值和m个第四参数,得到签名数据,签名数据包括目标签名、第一目标值和m个第四参数。
示意性的,数字签名阶段的流程图如图4所示,多项式环可以是与多项式环相同的多项式环,M表示待签名的目标消息,数字签名阶段包括但不限于几个步骤:1、从预设的多项式环中均匀随机选取第二随机数k;2、对于i=1,...,m,按照第二误差分布χ2随机选取m个第二误差向量ei';3、对于i=1,...,m,计算m个第三参数ri,比如根据m个第一参数ai、第二随机数k、m个第二误差向量ei'和第一预设值p,确定m个第三参数ri,每个第三参数ri可以通过如下公式计算得到:ri=ai*k+p*ei';4、对于i=1,...,m,采用信号函数计算得到m个第四参数rib,比如每个第四参数rib采用如下的信号函数计算得到:rib=Signal(ri);5、根据m个第三参数ri、m个第四参数rib和第一预设值p,采用协调函数得到目标向量Modp(ri,rib))i=1,…,m,根据目标向量Modp(ri,rib))i=1,…,m和目标消息M,采用第一哈希函数得到第一目标值e,比如第一目标值e可以通过如下公式计算得到:e=H((Modp(ri,rib))i=1,…,m,M);6、返回签名数据sig,签名数据sig可以包括目标签名σ,第一目标值e和m个第四参数rib,其中签名数据sig可以如下公式计算得到:sig=(σ=k-s*e,e,(rib)i=1,…,m)。
可选的,上述的H是一个确定的哈希函数,对于任意的输入字符串,它输出一个来自第三误差分布η的样本。
步骤203,根据公钥和目标消息,对签名数据进行验证得到验证结果,验证结果用于指示签名数据是否合法。
验证结果可以是第一验证结果或第二验证结果,第一验证结果用于指示签名数据合法,第二验证结果用于指示签名数据不合法。比如,第一验证结果为“True”的验证结果,第二验证结果为“Flase”的验证结果。
对于某些参数,输出的签名数据可能并不总是能通过签名验证。在这种情况下,签名者可以多次重复进行数字签名。即在进行数字签名得到签名数据之后,可以对签名数据进行验证,直到验证通过后才输出签名数据。也就是说,当验证通过即验证得到第一验证结果时,输出签名数据;当验证未通过即验证得到第二验证结果时,继续执行根据私钥,对目标消息进行数字签名得到签名数据的步骤。
示意性的,重复签名方式的流程图如图5所示,重复签名方式包括但不限于几个步骤:在执行如图4所述的数字签名的步骤之后,根据公钥pk、目标消息M和签名数据sig,采用预设的验证函数Verify进行验证得到验证结果,当验证未通过即验证得到“Flase”的验证结果时,重复执行执行如图4所述的数字签名的步骤,直到当验证通过即验证得到“True”的验证结果时,输出签名数据sig。
在一种可能的实现方式中,当且仅当签名数据满足目标条件时,输出第一验证结果;当签名数据不满足目标条件时,输出第二验证结果;其中,目标条件是基于公钥、目标消息和预设的第二哈希函数所确定的。
可选的,目标条件包括基于公钥、目标消息和预设的第二哈希函数所确定的等式。示意性的,计算设备根据公钥、目标签名、第一目标值和m个第四参数,通过预设的协调函数得到m个第五参数,协调函数用于指示对第一预设值取模;根据m个第五参数和目标消息,通过第二哈希函数确定第二目标值;当且仅当第一目标值与第二目标值相等时,输出第一验证结果。
其中,计算设备根据公钥、目标签名、第一目标值和m个第四参数,通过预设的协调函数得到m个第五参数,可以包括:根据所述公钥中的第一参数、第二参数、目标签名和第一目标值确定m个第六参数,根据m个第六参数和m个第四参数,通过预设的协调函数得到m个第五参数,协调函数用于指示对m个第六参数和m个第四参数中的每个参数对第一预设值取模,即对于m个索引中的每个索引,协调函数用于指示对该索引对应的第六参数和第四参数对第一预设值取模,得到该索引对应的第五参数。
示意性的,签名验证阶段的流程图如图6所示,签名验证阶段包括但不限于几个步骤:1、对于i=1,...,m,根据公钥中的第一参数ai、第二参数bi、目标签名σ、第一目标值e和m个第四参数rib,通过预设的协调函数得到m个第五参数每个第五参数/>通过如下公式计算得到:/>2、根据m个第五参数/>和目标消息M,通过如下的第二哈希函数计算得到第二目标值/> 3、当且仅当第一目标值e与第二目标值/>相等时,确定验证通过即返回“True”的验证结果,否则确定验证未通过即返回“Flase”的验证结果。
在签名验证阶段,只需要检查从计算出的第二目标值/>是否与第一目标值e相同。可选的,在该阶段还可以做一些额外的检查。实际上,如果σ是按照Sign(sk,m)中的步骤生成的,那么aiσ+bie=ri-pe′i+peie。因此如果参数选取恰当,可以进一步检查Signal(aiσ+bie)与rib是否在至少预设数量的位数(比如7/8n)位上相同。而且如果这两者在第i0个分量上不同,τq((aiσ+bie)[i0])应该与/>之一很近,所以当大于预设验证阈值时,确定验证未通过,验证者同样可以拒绝这个签名数据。也就是说,在一种可能的实现方式中,当且仅当以下两个条件(条件一和条件二)都满足时,确定验证通过:条件一为:上述的验证步骤输出“True”的验证结果;条件二为:对每个指标/>小于或等于预设验证阈值,或,Signal(aiσ+bie)[i0]=rib[i0]。
可选的,计算设备在输出签名数据之后,将公钥、目标消息和签名数据发送至其他设备,其他设备可以根据接收到的签名数据、公钥和对应的目标消息,对签名数据进行验证得到验证结果,验证结果用于指示签名数据是否合法。需要说明的是,其他设备根据公钥、目标消息,对签名数据进行验证的过程可类比参考上述的根据公钥、目标消息,对签名数据进行验证的步骤的相关描述,在此不再赘述。
可选的,计算设备也可以接收到其他设备发送的其他公钥、其他签名数据和其他签名数据对应的消息,对其他签名数据进行验证,相关细节也可以类比参考上述的根据公钥、目标消息,对签名数据进行验证的步骤的相关描述,在此不再赘述。
综上所述,本公开实施例提供了一种仅基于RLWE问题的数字签名方法,一方面,提高了数字签名方法的安全性,本公开实施例中由于签名的合法性取决于签名数据是否满足一个关于哈希函数的等式,即当且仅当签名数据满足一个关于哈希函数的等式时该签名数据是合法的,该算法的安全性仅依赖于RLWE问题的困难性,目前普遍认为即使有量子计算机,RLWE问题也不能在多项式时间内求解。因此,只要求解RLWE问题是困难的,该算法就是安全的,能抵抗量子计算机的攻击。另一方面,保证了数字签名方法的易实现,后量子签名算法设计简单,实现不需要用到浮点运算,并且容易抵抗侧信道攻击。另一方面,提高了数字签名方法的性能,签名尺寸和相关技术中基于格的签名方案相当,且本公开实施例提供的算法简单、步骤少,所以编程实现后运行速度会很快,签名速度有一个数量级的提升(比如大于目前方案的10倍),从而可以提高效率和性能,更好地满足用户需求。另一方面,提高了数字签名方法的可扩展性,算法中的参数选择多样化,容易根据应用场景的需求更换相应的部分。比如,对于性能优先的场景,上述的n的取值可以为2的幂(比如256),q的取值可以为模2n余1的素数(比如10753),这样对应的多项式环中元素的乘法可以高性能的实现。对于安全优先的场景,上述的n可以为较大的数值(比如512),以确保安全性。本公开实施例对此不加以限定。另一方面,为了保证签名数据不泄漏关于私钥的信息,在设计基于RLWE问题的签名数据时往往要加入一些小的误差。加了误差后,为了在保证验证时的一致性,相关技术中选择使用小误差,并且在签名验证阶段只比较高位的值(因为小的误差不影响高位的值,比如10001,10007,10004最高的3位都是100),而本公开实施例提供的方案与相关技术中的方案相比,采用了不同的技术路线,利用信号函数和协调函数来处理签名算法中RLWE带来的误差,即数字签名阶段中选取的误差均被第一预设值p整除,在签名验证阶段只比较第一预设值p对应的模值(因为被p整除的误差不影响p对应的模值,比如10013,10025,10041模4都等于1),从而能处理更大的误差,提高了签名效率。
请参考图7,其示出了本公开一个示例性实施例提供的数字签名方法的流程图,本实施例以该方法用于图1所示的计算设备中来举例说明。该方法包括以下几个步骤。
步骤701,获取私钥和待签名的目标消息。
步骤702,根据私钥,对目标消息进行数字签名得到签名数据,数字签名是仅基于RLWE问题的后量子签名。
需要说明的是,本实施例中各个步骤的相关细节可参考上述实施例中的相关描述,在此不再赘述。
以下为本公开实施例的装置实施例,对于装置实施例中未详细阐述的部分,可以参考上述方法实施例中公开的技术细节。
请参考图8,其示出了本公开一个示例性实施例提供的数字签名装置的结构示意图。该数字签名装置可以通过软件、硬件以及两者的组合实现成为计算设备的全部或一部分。该装置包括:获取模块22和签名模块23。
获取模块22,用于获取私钥和待签名的目标消息;
签名模块23,用于根据私钥,对目标消息进行数字签名得到签名数据,数字签名是仅基于RLWE问题的后量子签名。
在一种可能的实现方式中,签名模块23,还用于:
从预设的多项式环中随机选取第二随机数,并从预设的第二误差分布上随机选取m个第二误差向量,m为正整数;
根据第二随机数、m个第二误差向量和目标消息,采用预设的第一哈希函数得到第一目标值;
根据私钥和第一目标值,确定目标消息的目标签名;
根据目标签名和第一目标值,得到签名数据。
在另一种可能的实现方式中,签名模块23,还用于:
根据第二随机数、m个第二误差向量和第一预设值,确定m个第三参数;
根据m个第三参数,采用预设的目标函数得到目标向量,目标函数包括信号函数和协调函数,信号函数用于指示生成随机的二进制向量,协调函数用于指示将二进制向量映射为整数向量;
根据目标向量和目标消息,采用第一哈希函数得到第一目标值。
在另一种可能的实现方式中,签名模块23,还用于:
根据m个第三参数,采用信号函数得到m个第四参数;
根据m个第三参数、m个第四参数和第一预设值,采用协调函数得到目标向量,协调函数还用于指示将m个第三参数和m个第四参数中的每个参数对第一预设值取模。
在另一种可能的实现方式中,签名数据包括目标签名、第一目标值和m个第四参数。
在另一种可能的实现方式中,该装置还包括:确定模块,用于:
从预设的多项式环中随机选取m个第一参数和第一随机数,并从预设的第一误差分布上随机选取m个第一误差向量,m为正整数;
根据m个第一参数、第一随机数和m个第一误差向量,确定m个第二参数;
根据m个第一参数、第一随机数和m个第二参数确定密钥对,密钥对包括公钥和对应的私钥,公钥包括m个第一参数和m个第二参数。
在另一种可能的实现方式中,该装置还包括:存储模块,用于:
对公钥进行压缩,存储压缩后的公钥。
在另一种可能的实现方式中,该装置还包括:验证模块,用于:
当且仅当签名数据满足目标条件时,确定第一验证结果,第一验证结果用于指示签名数据合法;
当签名数据不满足目标条件时,确定第二验证结果,第二验证结果用于指示签名数据不合法;
其中,目标条件是基于公钥、目标消息和预设的第二哈希函数所确定的。
在另一种可能的实现方式中,该装置还包括:签名模块23,还用于:
当验证得到第一验证结果时,输出签名数据;
当验证得到第二验证结果时,继续执行根据私钥,对目标消息进行数字签名得到签名数据的步骤。
在另一种可能的实现方式中,签名数据包括目标签名、第一目标值和m个第四参数,验证模块,还用于:
根据公钥、目标签名、第一目标值和m个第四参数,通过预设的协调函数得到m个第五参数,协调函数用于指示对第一预设值取模;
根据m个第五参数和目标消息,通过第二哈希函数确定第二目标值;
当且仅当第一目标值与第二目标值相等时,输出第一验证结果。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各个功能模块的划分进行举例说明,实际应用中,可以根据实际需要而将上述功能分配由不同的功能模块完成,即将设备的内容结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种数字签名装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当计算机可读代码在计算设备的处理器中运行时,所计算设备中的处理器执行上述方法。
图9是根据一示例性实施例示出的一种用于数字签名的装置900的框图。例如,装置900可以被提供为一服务器或终端设备。参照图9,装置900包括处理组件922,其进一步包括一个或多个处理器,以及由存储器932所代表的存储器资源,用于存储可由处理组件922的执行的指令,例如应用程序。存储器932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件922被配置为执行指令,以执行上述方法。
装置900还可以包括一个电源组件926被配置为执行装置900的电源管理,一个有线或无线网络接口950被配置为将装置900连接到网络,和一个输入输出接口958(I/O接口)。装置900可以操作基于存储在存储器932的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器932,上述计算机程序指令可由装置900的处理组件922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (13)

1.一种数字签名方法,其特征在于,所述方法包括:
获取私钥和待签名的目标消息;
根据所述私钥,对所述目标消息进行数字签名得到签名数据,所述数字签名是仅基于环上带误差学习RLWE问题的后量子签名。
2.根据权利要求1所述的方法,其特征在于,所述根据所述私钥,对所述目标消息进行数字签名得到签名数据,包括:
从预设的多项式环中随机选取第二随机数,并从预设的第二误差分布上随机选取m个第二误差向量,所述m为正整数;
根据所述第二随机数、所述m个第二误差向量和所述目标消息,采用预设的第一哈希函数得到第一目标值;
根据所述私钥和所述第一目标值,确定所述目标消息的目标签名;
根据所述目标签名和所述第一目标值,得到所述签名数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第二随机数、所述m个第二误差向量和所述目标消息,采用预设的第一哈希函数得到第一目标值,包括:
根据所述第二随机数、所述m个第二误差向量和第一预设值,确定m个第三参数;
根据所述m个第三参数,采用预设的目标函数得到目标向量,所述目标函数包括信号函数和协调函数,所述信号函数用于指示生成随机的二进制向量,所述协调函数用于指示将所述二进制向量映射为整数向量;
根据所述目标向量和所述目标消息,采用所述第一哈希函数得到所述第一目标值。
4.根据权利要求3所述的方法,其特征在于,所述根据所述m个第三参数,采用预设的目标函数得到目标向量,包括:
根据所述m个第三参数,采用所述信号函数得到m个第四参数;
根据所述m个第三参数、所述m个第四参数和所述第一预设值,采用所述协调函数得到所述目标向量,所述协调函数还用于指示对所述第一预设值取模。
5.根据权利要求4所述的方法,其特征在于,所述签名数据包括所述目标签名、所述第一目标值和所述m个第四参数。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
从预设的多项式环中随机选取m个第一参数和第一随机数,并从预设的第一误差分布上随机选取m个第一误差向量,所述m为正整数;
根据所述m个第一参数、所述第一随机数和所述m个第一误差向量,确定m个第二参数;
根据所述m个第一参数、所述第一随机数和所述m个第二参数确定密钥对,所述密钥对包括公钥和对应的所述私钥,所述公钥包括所述m个第一参数和所述m个第二参数。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
对所述公钥进行压缩,存储压缩后的所述公钥。
8.根据权利要求1至5任一所述的方法,其特征在于,所述根据所述私钥,对所述目标消息进行数字签名得到签名数据之后,还包括:
当且仅当所述签名数据满足目标条件时,确定第一验证结果,所述第一验证结果用于指示所述签名数据合法;
当所述签名数据不满足所述目标条件时,确定第二验证结果,所述第二验证结果用于指示所述签名数据不合法;
其中,所述目标条件是基于所述公钥、所述目标消息和预设的第二哈希函数所确定的。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当验证得到所述第一验证结果时,输出所述签名数据;
当验证得到所述第二验证结果时,继续执行根据所述私钥,对所述目标消息进行数字签名得到签名数据的步骤。
10.根据权利要求8所述的方法,其特征在于,所述签名数据包括目标签名、第一目标值和m个第四参数,所述当且仅当所述签名数据满足目标条件时,输出第一验证结果,包括:
根据所述公钥、所述目标签名、所述第一目标值和所述m个第四参数,通过预设的协调函数得到m个第五参数,所述协调函数用于指示对第一预设值取模;
根据所述m个第五参数和所述目标消息,通过所述第二哈希函数确定第二目标值;
当且仅当所述第一目标值与所述第二目标值相等时,输出所述第一验证结果。
11.一种数字签名装置,其特征在于,所述装置包括:
获取模块,用于获取私钥和待签名的目标消息;
签名模块,用于根据所述私钥,对所述目标消息进行数字签名得到签名数据,所述数字签名是仅基于RLWE问题的后量子签名。
12.一种数字签名装置,其特征在于,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至10中任意一项所述的方法。
13.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至10中任意一项所述的方法。
CN202410063530.4A 2024-01-16 2024-01-16 数字签名方法、装置及存储介质 Pending CN117914469A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410063530.4A CN117914469A (zh) 2024-01-16 2024-01-16 数字签名方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410063530.4A CN117914469A (zh) 2024-01-16 2024-01-16 数字签名方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN117914469A true CN117914469A (zh) 2024-04-19

Family

ID=90683349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410063530.4A Pending CN117914469A (zh) 2024-01-16 2024-01-16 数字签名方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN117914469A (zh)

Similar Documents

Publication Publication Date Title
US10015007B2 (en) Performing efficient comparison operations on encrypted data
US11283608B2 (en) Executing a cryptographic operation
CA2792267C (en) Verifying implicit certificates and digital signatures
US10693659B2 (en) Generating pseudo random numbers for quantum computing secure authentication
CN112560091B (zh) 数字签名方法、签名信息的验证方法、相关装置及电子设备
US20160149708A1 (en) Electronic signature system
CN113098691B (zh) 数字签名方法、签名信息的验证方法、相关装置及电子设备
US20210367772A1 (en) Computer implemented system and method for sharing a common secret
CN112865973A (zh) 基于格的加密密钥和数字签名的生成方法
WO2021248226A1 (en) Methods and systems for encryption, decryption, signing, verification and hashing of digital messages
US11728977B2 (en) Method for efficient and practical key distribution in network coding systems
US10505719B2 (en) Method and system for rateless and pollution-attack-resilient network coding
US10652217B2 (en) Method and system for rateless and pollution-attack-resilient network coding including decoder(s)
WO2023159849A1 (zh) 一种数字签名方法、计算机设备及介质
CN117914469A (zh) 数字签名方法、装置及存储介质
CN113242133B (zh) 一种数字证书管理方法和装置
KR102019558B1 (ko) 내재적 인증서를 사용하는 전자서명에 대한 효율적인 서명 검증 방법
US11190343B2 (en) Multivariate quadratic signature scheme based on central map with oil-oil quadratic terms secure against quantum computers
US8150030B2 (en) Cryptographic hashing device and method
US11683171B2 (en) Acceleration of elliptic curve-based isogeny cryptosystems
KR101870042B1 (ko) 내재적 인증서에서 효율적인 공개키 추출 방법
US20220376892A1 (en) Speeding up hash-chain computations
US20230388134A1 (en) Systems and methods of improved modular inversion with digital signatures
CN115134093B (zh) 数字签名方法及计算设备
US11641347B2 (en) Quantum-safe cryptographic methods and systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination