CN116167093A - 数字签名门限方法和装置 - Google Patents

数字签名门限方法和装置 Download PDF

Info

Publication number
CN116167093A
CN116167093A CN202111401610.9A CN202111401610A CN116167093A CN 116167093 A CN116167093 A CN 116167093A CN 202111401610 A CN202111401610 A CN 202111401610A CN 116167093 A CN116167093 A CN 116167093A
Authority
CN
China
Prior art keywords
vector
matrix
computer device
computer
message
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
CN202111401610.9A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111401610.9A priority Critical patent/CN116167093A/zh
Priority to PCT/CN2022/121597 priority patent/WO2023093278A1/zh
Publication of CN116167093A publication Critical patent/CN116167093A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • G06F21/46Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例提供了一种数字签名门限方法,该方法包括:第一计算机设备获取第一矩阵;确定第一向量和第二向量;根据所述第一矩阵、所述第一向量和所述第二向量,确定第一密钥参数份;接收来自于a个计算机设备的a个密钥参数份;根据所述第一密钥参数份和所述a个密钥参数份,确定密钥参数的高位比特和低位比特;根据矩阵种子和所述密钥参数的高位比特,确定第一随机数;根据所述第一向量、所述第二向量、所述密钥参数的低位比特、所述第一随机数和所述矩阵种子,确定第一消息的签名信息;所述第一计算机设备向第二计算机设备发送所述第一消息和所述第一消息的签名信息。本申请的技术方案能够提高密钥管理的安全性,及抵抗侧信道攻击。

Description

数字签名门限方法和装置
技术领域
本申请涉及密码学领域,具体涉及一种数字签名门限方法和装置。
背景技术
门限密码的工作原理是将密钥通过秘密共享方案(t-out-of-n secret sharing)拆分成n份并分发给n方独立保管,其中任意的≥t方一起可在不恢复密钥的情况下行使密钥的功能,如解密或签名。而密钥的私密性对于任意小于t方来说是信息论意义的,即完全获取不到密钥的任何有效信息。随着量子计算机的发展,传统的数字签名算法面临着被破解的风险。后量子数字签名算法是能够抵抗量子计算机对现有密码算法攻击的新一代密码算法。虽然对于门限传统密码的研究已经相当充分,但现阶段对门限后量子签名算法的研究却很少。
因此,如何对后量子数字签名算法进行门限化从而保证后量子密钥的安全,是一个亟待解决的问题。
发明内容
本申请实施例提供一种数字签名门限方法和装置,能够提高密钥管理的安全性,及在一定程度上可以抵抗侧信道攻击。
第一方面,提供了一种数字签名门限方法,该方法包括:第一计算机设备获取第一矩阵,所述第一矩阵为k行l列的矩阵,k和l为大于等于1的正整数;所述第一计算机设备确定第一向量和第二向量;所述第一计算机设备根据所述第一矩阵、所述第一向量和所述第二向量,确定第一密钥参数份;所述第一计算机设备接收来自于a个计算机设备的a个密钥参数份,a为大于或等于p-1的正整数,p为秘密共享方案的最小计算机设备数目;所述第一计算机设备根据所述第一密钥参数份和所述a个密钥参数份,确定密钥参数的高位比特和低位比特;所述第一计算机设备根据矩阵种子和所述密钥参数的高位比特,确定第一随机数;所述第一计算机设备根据所述第一向量、所述第二向量、所述密钥参数的低位比特、所述第一随机数和所述矩阵种子,确定第一消息的签名信息;所述第一计算机设备向第二计算机设备发送所述第一消息和所述第一消息的签名信息,所述第二计算机设备为所述a个计算机设备中的一个。
应理解,系统中有m个计算机设备,p为秘密共享方案的最小计算机设备数目,p小于等于m。
示例性地,第一矩阵可以用矩阵A表示。可选地,矩阵A可以根据公式A∈Rq k×l:=ExpandA(ρ)确定。其中,矩阵A为k×l的矩阵,矩阵A中的每一个元素都是多项式,每一个多项式可以由公开种子ρ随机生成,且每一个多项式的系数都是小于q的整数,q是一个素数。
可选地,获取矩阵A的方式可以是第一计算机设备通过公开种子ρ随机生成矩阵A,也可以使用预设的矩阵A,或者矩阵A也可以由多个计算机设备共同生成。例如,k=5,l=6,则矩阵A为5行6列的矩阵。其中,第一计算机设备生成矩阵A的其中一行元素,第二计算机设备生成剩下四行元素。或者,第一计算机设备生成矩阵A的其中一列元素,第二计算机设备生成另一列元素,第三计算机设备生成剩下四列元素。矩阵A的具体生成方式本申请不作限定。
应理解,矩阵A对于系统中m个计算机设备来说是公开的,也就是每个计算机设备都可以获得矩阵A。生成矩阵A的计算机设备可以将得到的矩阵A分发给系统中m个计算机设备。m个计算机设备也可以直接使用预设的矩阵A。
应理解,本申请会用到下述重要标识:对于一个数值x,[x]表示按照所约定的秘密共享方案,x已拆分成秘密份(shares)且每份已传递到相应用户的手中,[x]也可以用xi表示,代表第i个用户得到的第i份x。
示例性地,第一向量可以是si1,第二向量可以是si2。第一向量也可以表示为[s1],第二向量也可以表示为[s2]。第一向量和第二向量可以称为随机密钥向量份,因为第一向量和第二向量参与密钥的生成且产生方式随机。第一计算机设备生成随机密钥向量份si1和si2,可选地,随机密钥向量份si1和si2可以由公式([s1],[s2])←Thr-RandNum(η)n×l+n×k确定。Thr-RandNum(η)算法用于生成一个绝对值≤η的随机数。其中,si1有l个多项式,si2有k个多项式,每个多项式包含n项,每一项的系数的绝对值都小于等于η。η为预设参数,n为正整数。
示例性地,第一密钥参数份可以用[t]表示。第一密钥参数份[t]可以根据公式[t]=A×[s1]+[s2]确定。应理解,在a1,b1均表示向量的前提下,a1·b1是两个向量的内积,a1×b1是两个向量的外积。
应理解,根据大于等于p个用户的[t]可以得到密钥参数t。因此第一计算机设备接收来自于a个计算机设备的a个密钥参数份可以得到密钥参数t,a为大于或等于p-1的正整数。
可选地,第一计算机设备可以根据所述第一密钥参数份和所述a个密钥参数份确定密钥参数t,然后根据公式(t1,t0)←Power2Roundq(t,d)得到密钥参数t的高位比特和低位比特。Power2Roundq函数可以将t分解为t=t1·2d+t0,d为大于0的整数,t1为密钥参数t的高位比特,t0为密钥参数t的低位比特。
示例性地,第一随机数可以用tr表示。可选地,tr可以根据公式tr∈{0,1}384←CRH(ρ||t1)确定。将公开种子ρ和密钥参数t的高位比特t1进行字符串连接,使用抗碰撞哈希函数(collision-resistant hashing,CRH)将公开种子ρ和密钥参数t的高位比特t1的连接值映射到{0,1}384域得到tr,即截取该连接值的前384个比特,若该连接值的比特不足384个,则随机产生指定的比特(±1或0)补齐,并将最终得到的值赋值给tr。
应理解,第一计算机设备的私钥份包括第一向量[s1]和第二向量[s2],可选的,第一计算机设备的私钥份还可以包括矩阵A或公开种子ρ,第一随机数tr,密钥参数t或密钥参数t的低位比特t0
在本申请实施例中,通过门限化数字签名方法,将密钥的功能拆分为由多个计算机设备共同行使,可以实现密钥的安全管理,并且在一定程度上抵抗侧信道攻击。
结合第一方面,在第一方面的某些实现方式中,所述第一消息的签名信息包括:挑战,应答和提示,所述第一计算机设备所述根据所述第一向量、所述第二向量、所述密钥参数的低位比特、所述第一随机数和所述矩阵种子,确定第一消息的签名信息,包括:所述第一计算机设备根据所述第一随机数和所述第一消息,确定挑战参数;所述第一计算机设备根据第一预设参数、所述第一矩阵和所述挑战参数,确定所述挑战;所述第一计算机设备根据所述第一预设参数、所述挑战和所述第一向量,确定所述应答;所述第一计算机设备根据所述挑战、所述密钥参数的低位比特、所述第一矩阵、所述第一预设参数和所述第二向量,确定所述提示。
可选地,根据所述第一随机数和所述第一消息,确定挑战参数可以用公式μ∈{0,1}384:=CRH(tr||M)表示。将第一随机数tr和消息M进行字符串连接,使用抗碰撞哈希函数将第一随机数tr和消息M的连接值映射到{0,1}384域得到挑战参数μ,即截取该连接值的前384个比特,若该连接值的比特不足384个,则随机产生指定的比特(±1或0)补齐,并将最终得到的值赋值给μ。
在本申请实施例中,通过门限化数字签名方法,将密钥的功能拆分为由多个计算机设备共同行使,可以实现密钥的安全管理,并且在一定程度上抵抗侧信道攻击。
结合第一方面,在第一方面的某些实现方式中,所述所述第一计算机设备根据第一预设参数、所述第一矩阵和所述第一消息的签名,确定所述挑战,包括:所述第一计算机设备根据所述第一预设参数,生成屏蔽向量,其中所述屏蔽向量包括l个多项式,所述l个多项式中的每个多项式的系数小于或等于所述第一预设参数;所述第一计算机设备根据所述第一矩阵和所述屏蔽向量,确定第一许诺中间份;所述第一计算机设备获取来自于所述a个计算机设备的a个许诺中间份的高位比特;所述第一计算机设备根据所述第一许诺中间份的高位比特和所述a个许诺中间份的高位比特,确定许诺;所述第一计算机设备根据所述许诺和所述第一消息的签名,确定所述挑战。
示例性地,屏蔽向量可以用[y]表示,第一预设参数可以用γ1表示。可选地,屏蔽向量[y]可以根据公式[y]←Thr-RandNum(γ1)n×l确定。屏蔽向量[y]包括l个多项式,每个多项式都有n个项,每一项的系数通过Thr-RandNum(γ1)函数生成且绝对值都不超过γ1
示例性地,第一许诺中间份可以用[w]表示。可选地,第一许诺中间份[w]可以根据公式[w]←A×[y]确定,即[w]为矩阵A和屏蔽向量[y]的叉积。
示例性地,许诺中间份的高位比特可以用[w1]表示。可选地,许诺中间份的高位比特[w1]可以根据公式[w1]←Thr-HighBitsq([w],2γ2)确定。其中,许诺中间份[w]的每一个系数可以用[w]=[w1]·2γ2+[w0]表示,γ2为预设参数,[w1]为许诺中间份[w]的高位比特,[w0]为许诺中间份[w]的低位比特。Thr-HighBitsq函数用于提取第一许诺中间份[w]的高位比特[w1]。
可选地,获取来自于所述a个计算机设备的a个许诺中间份的高比特位,可以是a个计算机设备中的每个计算机设备先确定自己的许诺中间份以及自己的许诺中间份的高比特位,再将自己的许诺中间份和自己的许诺中间份的高比特位发送给第一计算机设备。或者,还可以是每个用户只确定和发送自己的许诺中间份,由第一计算机设备自行从接收到的许诺中间份中提取出高比特位。
应理解,根据所述第一许诺中间份的高位比特[w1]和所述a个许诺中间份的高位比特,可以得到许诺w1
示例性地,挑战可以用
Figure BDA0003371146990000031
表示。可选地,挑战/>
Figure BDA0003371146990000032
可以根据公式/>
Figure BDA0003371146990000033
确定。将第一消息的签名μ和许诺w1进行字符串连接,使用哈希函数将第一消息的签名μ和许诺w1的连接值映射到{0,1}256域得到挑战/>
Figure BDA0003371146990000041
即截取该连接值的前256个比特,若该连接值的比特不足256个,则随机产生指定的比特(±1或0)补齐,并将最终得到的值赋值给挑战/>
Figure BDA0003371146990000042
在本申请实施例中,通过门限化数字签名方法,将密钥的功能拆分为由多个计算机设备共同行使,可以实现密钥的安全管理,并且在一定程度上抵抗侧信道攻击。
结合第一方面,在第一方面的某些实现方式中,所述所述第一计算机设备根据所述第一预设参数、所述挑战和所述第一向量,确定所述应答,包括:所述第一计算机设备根据所述屏蔽向量、所述挑战和所述第一向量,确定第一应答份;所述第一计算机设备获取来自于所述a个计算机设备的a个应答份;所述第一计算机设备根据所述第一应答份和所述a个应答份,确定所述应答。
示例性地,挑战可以用
Figure BDA0003371146990000043
表示。可选地,为了方便确定挑战/>
Figure BDA0003371146990000044
的范围,可以指定挑战
Figure BDA0003371146990000045
中有τ个项的系数为±1,256-τ个项的系数为0。若指定了挑战/>
Figure BDA0003371146990000046
中系数为±1的数量,可以将此时的挑战/>
Figure BDA0003371146990000047
定义为挑战c。
示例性地,第一应答份可以用[z]表示。可选地,第一应答份[z]可以根据公式[z]←[y]+c×[s1]确定。应理解,第一应答份[z]为多项式。
示例性地,获取来自于所述a个计算机设备的a个应答份,可以是a个计算机设备根据屏蔽向量份[y]、挑战c和第一向量si1来计算各自的应答份并发送给第一计算机设备。也可以是a个计算机设备中部分或全部计算机设备将各自的应答份发送给至少一个中间者,由至少一个中间者转发给第一计算机设备。
应理解,根据所述第一应答份[z]和所述a个计算机设备的应答份,可以得到应答z。
在本申请实施例中,通过门限化数字签名方法,将密钥的功能拆分为由多个计算机设备共同行使,可以实现密钥的安全管理,并且在一定程度上抵抗侧信道攻击。
结合第一方面,在第一方面的某些实现方式中,所述所述第一计算机设备根据所述挑战、所述密钥参数的低位比特、所述第一矩阵、所述第一预设参数和所述第二向量,确定所述提示,包括:所述第一计算机设备根据所述挑战、所述密钥参数的低位比特、所述第一许诺中间份和所述第二向量确定第一提示份;所述第一计算机设备获取来自于所述a个计算机设备的a个提示份;所述第一计算机设备根据所述第一提示份和所述a个提示份,确定所述提示。
示例性地,第一提示份可以用[h]表示。可选地,第一提示份[h]可以根据公式[h]←Thr-MakeHint(-c×t0,[w]-c×[s2]+c×t0,2γ2)确定。其中,Thr-MakeHint用于产生一比特的提示份[h]。一一比较比较[w]-c×[s2]+c×t0和[w]-c×[s2]对应比特位的大小,若二者相等则[h]对应的比特位为1,否则[h]对应的比特位为0,[h]为由0和1组成的序列。
示例性地,获取来自于所述a个计算机设备的a个提示份,可以是a个计算机设备计算各自的提示份并发送给第一计算机设备。也可以是a个计算机设备中部分或全部计算机设备将各自的提示份发送给至少一个中间者,由至少一个中间者转发给第一计算机设备。
应理解,根据所述第一提示份[h]和所述a个计算机设备的提示份,可以得到提示h。
在本申请实施例中,通过门限化数字签名方法,将密钥的功能拆分为由多个计算机设备共同行使,可以实现密钥的安全管理,并且在一定程度上抵抗侧信道攻击。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述第一计算机设备接收来自于所述第二计算机设备的第二消息和所述第二消息的签名信息;所述第一计算机设备根据所述矩阵种子、所述密钥参数的高位比特对所述第二消息的签名信息进行验证。
应理解,第一计算机设备不仅可以对消息M进行签名,还可以接收其他计算机设备发送的第二消息和所述第二消息的签名信息,然后对其进行验证。
在本申请实施例中,通过门限化数字签名方法,将密钥的功能拆分为由多个计算机设备共同行使,可以实现密钥的安全管理,并且在一定程度上抵抗侧信道攻击。
第二方面,本申请实施例提供一种计算机装置,该计算机装置包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
第三方面,本申请实施例提供一种计算机装置,该计算机装置包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式。
第四方面,本申请实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。
第六方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。
附图说明
图1是本申请实施例提供的一种密钥生成算法场景示意图。
图2是本申请实施例提供的一种联合签名算法场景示意图。
图3是本申请实施例提供的一种数字签名门限方法的示意性流程图。
图4是本申请实施例提供的一种验证消息签名信息的示意性流程图。
图5是本申请实施例提供的一种计算机装置的结构示例图。
图6是本申请实施例提供的另一种计算机装置的结构示例图。
图7是本申请实施例提供的一种计算机程序产品的示例图。
具体实施方式
门限密码的主要目的是为了密钥的安全管理:为了解决密钥管理的单点失窃/失效问题,门限密码将密钥通过秘密共享方案(t-out-of-n secret sharing)拆分成n份并分发给n方独立保管,其中任意的≥t方一起可在不恢复密钥的情况下行使密钥的功能,如解密或签名。而密钥的私密性对于任意小于t方来说是信息论意义的。除了密钥安全管理,门限密码还可以作为抵抗一定程度的侧信道攻击(first-order side channel attacks)的一种手段。虽然对于门限传统密码的研究已经相当充分,但现阶段对门限后量子签名算法的研究却很少。因此,对后量子签名算法进行门限化研究,无论从技术卡位角度还是实际应用角度来看,都有一定的现实意义。
本申请以Crystals-Dilithium(简称Dilithium)以及其之前的演进算法GLP12和BG14为例,对后量子数字签名算法进行门限化研究。设计基于格的后量子数字签名方案的技术路线有两条,即哈希&签名(hash&sign)路线和菲亚特-沙米尔(Fiat-Shamir)路线。Dilithium属于Fiat-Shamir路线。Fiat-Shamir路线的计算流程可概括为三个步骤:“许诺”(commitment),利用随机预言(random oracle,RO)由许诺和被签名的消息生成“挑战”(challenge),由许诺中的随机数和签名密钥生成“应答”(response)。Dilithium的发展路程大致历经了L09→L12→GLP12→BG14→Dilithium。
Dilithium主要包括密钥生成算法Gen,签名算法Sign,和签名验证算法Verify。Fiat-Shamir路线的“许诺”、“挑战”和“应答”包含在Dilithium的签名算法Sign中。
为便于理解本申请实施例,首先对本申请中涉及的一些定义做简单说明。
1.Rq=Zq[x]/(xn+1),R为实数,Z为整数。Zq代表小于q的整数的集合。Zq[x]代表关于x的多项式,且多项式的每一项的系数都为小于q的整数。Rq代表最高项小于xn的关于x的多项式,其系数也为小于q的整数。其中q是一个素数,n是2的指数。例如,q=223-213+1,n=256。
2.Sk是R=Z[x]/(xn+1)的一个子集,且多项式Sk的每一项的系数取值范围为[-k,k],Z[x]/(xn+1)代表系数为整数且最高项小于xn的关于x的多项式。
3.哈希函数
Figure BDA0003371146990000064
,其中/>
Figure BDA0003371146990000065
是阶数最高为n-1且最多有32个系数为-1或1(其余系数为0)的全体多项式。次数最高的项的次数叫多项式的阶数,阶数最高为n-1的全体多项式就是所有的多项式的阶数小于或者等于n-1的集合,即由常数,一次式,二次式,……,n-1次式组成的集合。例如,/>
Figure BDA0003371146990000066
为有5个项的系数为-1或1,有27个项的系数为0的多项式。
4.哈希函数H:{0,1}*→Bτ,Bτ表示多项式中,有τ个系数的值为1或-1,余下的系数为0。
5.
Figure BDA0003371146990000061
代表返回值为true或是false的判断式。
6.哈希函数是一种将长的输入压缩为短的输出的函数,当哈希函数具有抗碰撞性时就变成了抗碰撞哈希函数。本申请的签名方案中使用一个映射到{0,1}384的抗碰撞哈希函数。抗碰撞性指的是,对于一个哈希函数,无法找到两个不同的输入拥有相同的输出,即对于满足x≠x’的x和x’,难以找到H(x)=H(x’)。
7.floor(x)函数,也可以用
Figure BDA0003371146990000062
表示。其功能是“向下取整”,或者说“向下舍入”、“向零取舍”,即取不大于x的最大整数。
8.
Figure BDA0003371146990000063
其功能是“向上取整”,即取不小于x的最大整数。
9.mod为取模运算,求两个数相除的余数。
10.屏蔽向量(masking vector),为了避免某些需要保护的秘密向量暴露而生成用于掩盖秘密向量的随机向量。例如,私钥中的第一向量和第二向量为秘密向量。秘密向量是参与计算机设备私钥组成的向量,需要进行保密。
11.γ1和γ2为预设参数,γ1和γ2要足够大直到最终签名不会显示密钥,也要足够小直到签名不容易被伪造。
12.||||代表多项式中系数的绝对值中最大的值。
13.在非对称密码学中,加密和解密用的钥匙不同:通常一个是公开的,称为公钥(public key,pk)。另一个是保密的,称为私钥(secret key,sk)。
14.函数ExpandA用于将种子ρ∈{0,1}256映射到数论变换(number theorytransform,NTT)域表示的矩阵A∈Rq k×l中。数论转换是一种计算折积的快速算法。计算折积的快速算法中最常用的一种是使用快速傅里叶变换,然而快速傅立叶变换必须做复数而且是浮点数的运算,因此计算量会比较大,而且浮点数运算产生的误差会比较大。使用数论转换只进行整数的运算,可以降低计算折积的复杂度。
15.对于一个正整数α,定义r'=r mod±α为独一无二的元素r',满足-α/2<r'≤α/2(当α为偶数),及(α-1)/2≤r'≤(α-1)/2(当α为奇数)。
16.对于一个正整数α,定义r'=r mod+α为独一无二的元素r',满足0<r'≤α。
17.在a,b均表示向量的前提下,a·b是两个向量的内积,a×b是两个向量的外积。
18.若字符串a为01,字符串b为10,则将a和b两个字符串进行连接可以得到0110。
为了更好的理解本申请中对后量子数字签名算法进行门限化的方案,本申请先介绍GLP12和BG14,它们很好地呈现了Fiat-Shamir路线:
GLP12的密钥生成算法Gen的基本代码如下:
Figure BDA0003371146990000071
GLP12方案的缺点是由于需分别证明s1,s2,因此需产生相应的z1,z2,导致签名的尺寸较大。BG14解决了这个问题,仅仅证明s1,因而只需产生z1,大大减少了签名的尺寸。但是这同时会导致另一个问题,即因为签名中不包括z2,因此无法验证t。BG14的解决思路是采用凑整(rounding)的方法,即签名验证算法只验证t中对应于s1的部分。下面介绍这个基于GLP12发展而来BG14。
BG14的密钥生成算法Gen的基本代码如下:
Figure BDA0003371146990000081
BG14的签名算法Sign的基本代码如下:
Figure BDA0003371146990000082
其中,HighBits用于提取高位比特位,LowBits用于提取低位比特。
A×y中的每个系数w可表示为w=w1·2γ2+w0,|w0|≤γ2,这样HighBits(A×y,2γ2)则返回由所有w1组成的向量,即A×y的高位比特。c是Rq中的一个多项式,其系数中有τ个系数的值为1或-1,余下的系数为0。如果第一步计算z:=y+c×s1就输出应答z是不安全的,因为密钥会被泄露,因此BG14使用拒绝采样的方法来避免z可能存在的密钥暴露风险。将参数β设置为多项式c×si的最大可能系数,si包括s1和s2,c×si的最大可能系数为多项式向量c×s1和c×s2中系数绝对值中最大的值。由于c有τ个系数的值为1或-1并且si中的最大系数为η,因此β≤τ·η。如果应答z有任意一个系数大于等于γ1-β,或者A×y-c×s2有任意一个低位比特的系数大于等于γ2-β,就拒绝采样并重新启动签名过程。对||z||≥γ1-β进行检查是为了安全性,对||LowBits(A×y-c×s2,2γ2)||≥γ2-β进行检查是为了安全性和正确性。签名过程不断循环重复,直到不满足这两个条件为止。
BG14的签名验证算法Verify的基本代码如下:
Figure BDA0003371146990000091
验证者首先计算A×z-c×t的高位比特w'1,如果||z||<γ1-β并且c是由消息M和w'1得到的哈希值,则签名验证通过。验证者验证的主要工作是验证HighBits(A×y,2γ2)=HighBits(A×z-c×t,2γ2),由于z=y+c×s1,t=A×s1+s2,因此A×z-c×t=A×y-c×s2,也就是验证HighBits(A×y,2γ2)=HighBits(A×y-c×s2,2γ2)。理由是A×y-c×s2的低位比特系数的最大值||LowBits(A×y-c×s2,2γ2)||小于γ2-β,且c×s2的系数值小于β,因此加上c×s2到A×y-c×s2的低位比特不足以导致进位进而影响A×y-c×s2的高位比特(也就是A×y的高位比特)。
Dilithium经由优化上述BG14的基本方案而成,其优化思路如下:
BG14的基本方案的最突出问题是公钥pk的尺寸很大,其包括一个由k×l个多项式组成的矩阵A,每个多项式有多达256个23比特的系数。Dilithium采用的解决方案是使用一个公开种子ρ来生成矩阵A。
Dilithium采用了额外的压缩技术来压缩公钥元素t的size。理由是当验证者计算w'1(签名验证函数Verify的第1行),A×z-c×t的高位比特实际上并不太多依赖t的低位比特,因为t会与一个权重很低的多项式c相乘。在真正的Dilithium方案中,t的一些低位比特会被舍弃,因此验签者可能无法计算A×z-c×t的一些高位比特。为了弥补对t低位比特的舍弃,数字签名生成算法会添补一些提示(hints)比特作为签名的一部分,这些“hints”比特实际上是在加上c×t的那些舍弃的低位比特而得到的进位。
为了压缩公钥的尺寸,Dilithium需要提取Zq元素的高位比特和低位比特。其目的如下:当给定一个任意元素r∈Zq和另一个小元素z∈Zq,Dilithium想在不保存z的情况下恢复r+z的高位比特。为此需要定义这样的算法,以r、z为输入并产生一个比特的“hint”h,以后只需r和h即可计算r+z的高位比特。这个一比特h实际上使计算r+z过程中产生的进位。Power2Roundq和Decomposeq算法可用于提取高位比特和低位比特。
Power2Roundq:直观地在Zq元素的比特表现形式上将元素r分解为r=r1×2d+r0,其中r0=r mod±2d,r1=(r-r0)/2d。对于一个正整数α,定义r0=r mod±α为独一无二的元素r0,满足-α/2<r0≤α/2(当α为偶数),及(α-1)/2≤r0≤(α-1)/2(当α为奇数)。
Decomposeq:Power2Roundq的问题是对于边界情况floor(q/2d)与q之间的距离可能会很小。原因是如果选择r1为0到
Figure BDA0003371146990000092
之间的非负整数,任意r1·2d与r′1·2d之间的距离mod q通常≥2d(因为|r1-r1'|≥1)。除了边界情况,特别是,/>
Figure BDA0003371146990000093
与0之间的距离modq将会非常小。因此r加上一个小元素可能会引起r的高位比特变化超过1。这与Dilithium只想产生一比特“hint”的想法相抵触。
解决方法是选取α作为q-1的除数,q-1能够被α整除,及分解r=r1·α+r0。此时选择r1为0到
Figure BDA0003371146990000101
之间的非负整数,可能的r1·α's是{0,α,2α,...,q-1},两两之间等距,此时的r1·α's代表r1·α的可能值。由于q-1和0之间的距离是1(因为(q-1+1)mod q=0),因此把q-1在集合中移除,且简单地将相对应的r1当作0。因为q-1和0只相差1,因此只需将r0减1。
Dilithium会用到下列支撑算法:
Power2Roundq的基本代码如下:
Figure BDA0003371146990000102
Decomposeq的基本代码如下:
Figure BDA0003371146990000103
HighBitsq用于从Decomposeq的输出中提取r的高位比特r1,LowBitsq从Decomposeq的输出中提取r的低位比特r0。应理解,r的高位比特r1和r的低位比特r0均为多项式。
HighBitsq和LowBitsq的基本代码如下:
Figure BDA0003371146990000104
设置r,z∈Zq,||z||≤α/2,则验证过程使用
UseHintq(MakeHintq(z,r,α),r,α)=HighBitsq(r+z,α)来对签名进行验证。MakeHintq用于产生一个比特的“hint”h,UseHintq将“hint”h用于恢复r+z的高位比特。
MakeHintq和UseHintq的基本代码如下:
Figure BDA0003371146990000105
Figure BDA0003371146990000111
SampleInball算法用于创建一个包含256个元素的多项式,其中有τ个项的系数为±1,剩余256-τ个项的系数为0。
Figure BDA0003371146990000112
Dilithium包括两个版本,随机签名方案(randomized signing)和确定签名方案(deterministic signing)。两者的差别在于签名算法用到的随机数的产生方式。前者是直接使用随机数,而后者的随机数是利用随机数生成器由被签名的消息和签名私钥生成的。
下面以随机签名方案为例,介绍一下Dilithium的基本方案。
其中,Dilithium的密钥生成算法Gen的基本代码如下:
Figure BDA0003371146990000113
Figure BDA0003371146990000121
密钥生成算法Gen使用一个公开种子ρ生成一个k×l矩阵A,矩阵中的每一个元素都是Rq=Zq[x]/(xn+1)中的一个多项式,每个多项式都有n个项。该算法对随机密钥向量s1和s2进行采样,即从Sη l中随机生成s1,从Sη k中随机生成s2。随机密钥向量s1和s2的每一项都是Rq的一个元素,且系数最大为η。最后,计算密钥的第二部分t1和t0。该方案中的所有代数运算都在多项式环Rq上。
Dilithium的签名算法Sign的基本代码如下:
Figure BDA0003371146990000122
Figure BDA0003371146990000131
Dilithium的签名验证算法Verify的基本代码如下:
Figure BDA0003371146990000132
本申请实施例是在完全遵循上述Dilithium算法规范中的参数情况下,利用安全多方计算技术(multiparty computation,MPC)来实现门限Dilithium方案。
本申请实施例所设计的门限Dilithium方案完全遵循原Dilithium规范中的参数。主要思路是使用特定的实用化的安全多方计算技术来门限化Dilithium。由于门限化Dilithium将不影响原方案的签名验证算法Verify,因此本申请只需门限化密钥生成函数和签名函数,而保持验证函数不变。
由于完全未改变Dilithium的规范,再辅以安全多方计算技术,其过程无泄露秘密信息,如密钥、中间状态等,因此门限Dilithium方案的安全性得以保证,从而无需重新证明门限方案的安全性。在保证安全的情况下,由于安全多方计算的效率较低,为了效率只在绝对必要的情况下使用安全多方计算。
下面将结合附图,对本申请实施例中的技术方案进行描述。
图1是本申请实施例提供的一种密钥生成算法场景示意图。
假设系统中有m个计算机设备,其中任意的≥p方一起可在不恢复密钥的情况下行使私钥sk的功能。m个用户通过秘密共享方案将私钥sk分为m份,从而每个计算机设备i得到私钥sk的一个私钥份ski
图2是本申请实施例提供的一种联合签名算法场景示意图。
应理解,在实际场景中仅需m个计算机设备各自生成自己的密钥份ski,在需要联合签名的时候由≥p个计算机设备共同签名即可完成私钥sk的功能。
示例性地,当m=5,p=3时,系统中有5个计算机设备A、B、C、D、E,他们分别对应私钥份sk1、sk2、sk3、sk4、sk5。一则信息M需要至少3个计算机设备使用各自的私钥份才能对该消息进行签名,即5个计算机设备A、B、C、D、E中任意的至少三个计算机设备的ski可以在不恢复私钥sk的情况下完成对消息M的签名。签名过程中任何一个计算机设备无法获取其他计算机设备的私钥份或与私钥sk有关的有用信息。
门限Dilithium方案包括两个算法,门限密钥生成算法和门限联合签名算法。
安全多方计算会用到下述重要标识:对于一个数值x,[x]表示按照所约定的秘密共享方案,x已拆分成秘密份(shares)且每份已传递到相应用户的手中,[x]也可以用xi表示,代表第i个用户得到的第i份x。作用于[x]的操作则表示≥p个用户使用各自的秘密份参与的相应的安全多方计算操作,如[x]+[y]表示≥p个用户分别使用其所拥有的x的秘密份和y的秘密份而参与计算x+y。常用的秘密共享方案为Shamir t-out-of-n秘密共享方案,n-out-of-n秘密共享方案,或其它的线性秘密共享方案。
图3是本申请实施例提供的一种数字签名门限方法的示意性流程图。
S310,获取第一矩阵。
示例性地,第一矩阵可以用矩阵A表示。可选地,矩阵A可以根据公式A∈Rq k×l:=ExpandA(ρ)确定。其中,矩阵A为k×l的矩阵,矩阵A中的每一个元素都是多项式,每一个多项式可以由公开种子ρ随机生成,且每一个多项式的系数都是小于q的整数,q是一个素数。
可选地,获取矩阵A的方式可以是第一计算机设备通过公开种子ρ随机生成矩阵A,也可以使用预设的矩阵A,或者矩阵A也可以由多个计算机设备共同生成。例如,k=5,l=6,则矩阵A为5行6列的矩阵。其中,第一计算机设备生成矩阵A的其中一行元素,第二计算机设备生成剩下四行元素。或者,第一计算机设备生成矩阵A的其中一列元素,第二计算机设备生成另一列元素,第三计算机设备生成剩下四列元素。矩阵A的具体生成方式本申请不作限定。
应理解,矩阵A对于系统中m个计算机设备来说是公开的,也就是每个计算机设备都可以获得矩阵A。生成矩阵A的计算机设备可以将得到的矩阵A分发给系统中m个计算机设备。m个计算机设备也可以直接使用预设的矩阵A。
S320,确定第一向量和第二向量。
示例性地,第一向量可以是si1,第二向量可以是si2。第一向量也可以表示为[s1],第二向量也可以表示为[s2]。第一向量和第二向量可以称为随机密钥向量份,因为第一向量和第二向量参与密钥的生成且产生方式随机。第一计算机设备生成随机密钥向量份si1和si2,可选地,随机密钥向量份si1和si2可以由公式([s1],[s2])←Thr-RandNum(η)n×l+n×k确定。Thr-RandNum(η)算法用于生成一个绝对值≤η的随机数。其中,si1有l个多项式,si2有k个多项式,每个多项式包含n项,每一项的系数的绝对值都小于等于η。η为预设参数,n为正整数。
S330,确定第一密钥参数份。
示例性地,第一密钥参数份可以用[t]表示。第一密钥参数份[t]可以根据公式[t]=A×[s1]+[s2]确定。应理解,在a1,b1均表示向量的前提下,a1·b1是两个向量的内积,a1×b1是两个向量的外积。
S340,接收来自于a个计算机设备的a个密钥参数份。
a为大于或等于p-1的正整数,p为秘密共享方案的最小用户数目。根据大于等于p个用户的密钥参数份[t]可以得到密钥参数t。因此第一计算机设备接收来自于a个计算机设备的a个密钥参数份可以得到密钥参数t。
应理解,s1和s2满足s1=MPC(s11,…,si1,…),s2=MPC(s12,…,si2,…)。即在选定安全多方计算方案后,可以根据大于等于p个计算机设备的参数份得到该参数。示例性地,可以选定线性秘密共享方案(linear secret sharing scheme,LSSS),即s1=LSSS(s11,…,si1,…),s2=LSSS(s12,…,si2,…),t=LSSS(t1,…,ti,…),i小于等于p。示例性地,若第一计算机设备接收到p-1个计算机设备的p-1个密钥参数份,则t=LSSS(t1,…,ti,…,tp)。
应理解,a个计算机设备仅需发送各自的密钥参数份[t]即可,也就是说密钥参数t的生成并没有暴露各个计算机设备的[s1]和[s2]。
S350,确定密钥参数的高位比特和低位比特。
示例性地,可以根据公式(t1,t0)←Power2Roundq(t,d)得到密钥参数t的高位比特和低位比特。Power2Roundq函数可以将t分解为t=t1·2d+t0,d为大于0的整数,t1为密钥参数t的高位比特,t0为密钥参数t的低位比特。
S360,确定第一随机数。
示例性地,第一随机数可以用tr表示。可选地,tr可以根据公式tr∈{0,1}384←CRH(ρ||t1)确定。将公开种子ρ和密钥参数t的高位比特t1进行字符串连接,使用抗碰撞哈希函数将公开种子ρ和密钥参数t的高位比特t1的连接值映射到{0,1}384域得到tr,即截取该连接值的前384个比特,若该连接值的比特不足384个,则随机产生指定的比特(±1或0)补齐,并将最终得到的值赋值给tr。
S370,确定第一消息的签名信息。
可以根据第一向量、第二向量、密钥参数的低位比特、第一随机数和矩阵种子,来确定第一消息的签名信息。示例性地,第一消息的签名信息可以表示为
Figure BDA0003371146990000151
。第一消息的签名信息包括应答z,提示h和挑战/>
Figure BDA0003371146990000152
S380,所述第一计算机设备向第二计算机设备发送所述第一消息和第一消息的签名信息。
第一计算机设备向验证者发送第一消息和第一消息的签名信息,验证者将会根据收到的第一计算机设备发来的信息,对消息进行验证。
图4是本申请实施例提供的一种验证消息签名信息的示意性流程图。
S410,接收来自于所述第二计算机设备的第二消息和所述第二消息的签名信息。
当第一计算机设备为签名消息的验证者时,接收来自于所述第二计算机设备的第二消息和所述第二消息的签名信息。
S410,对第二消息的签名信息进行验证。
第一计算机设备利用公钥对第二消息的签名信息进行验证。公钥可以包括生成矩阵的公开种子ρ,密钥参数的高位比特t1
本申请所需要的具体安全多方计算算法如下:
随机比特生成(random bit generation)[b]=MPCRb():该算法在≥p个用户中生成一个共享的随机比特[b],即每个用户得到一个关于该比特的秘密份。
小于比较(less than comparison)[b]=MPCLt([x],[y]):给定两个共享值[x]和[y]作为输入(即每个用户持有一个x的秘密份和一个y的秘密份),该算法输出一个共享比特[b](即每个用户得到一个关于该比特的秘密份):如果x<y,则b=1,否则b=0。
相等比较(equality comparison)[b]=MPCEq([x],[y]):给定两个共享值[x]和[y]作为输入,该算法输出一个共享比特[b]:如果x=y,则b=1,否则b=0。
取模规约(modulo reduction)[x’]=MPCMod([x],m):给定一个共享值[x]和一个公共模数m作为输入,该算法输出一个共享值[x’]:x’=x mod m。
本申请数字签名门限方法需要用到如下支撑算法,算法名的头部Thr代表门限(threshold):
Figure BDA0003371146990000161
/>
Figure BDA0003371146990000171
借助于上述支撑算法,门限Dilithium方案如下:
其中,门限Dilithium的密钥生成算法Thr-Gen的基本代码如下:
Figure BDA0003371146990000172
/>
Figure BDA0003371146990000181
门限Dilithium的联合签名算法Thr-Sign的基本代码如下:
Figure BDA0003371146990000182
/>
Figure BDA0003371146990000191
可选的,也可以在门限Dilithium的联合签名算法Thr-Sign的第15行,令二者相等时[h]对应的比特位为0,否则[h]对应的比特位为1,然后在第16行统计[h]中0的数量,在17行中将判断条件对应改为h中0的数量大于预设参数。
以上所述,仅为本申请的具体实施方式,本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的关于Dilithium和其演进及变形算法的门限方法,都应涵盖在本申请的保护范围之内。例如,也可以使用类似的秘密共享方法和相应的门限支撑算法对BG14和GLP12算法进行门限化。
以上描述了根据本申请实施例的数字签名门限方法,下面分别结合图5和图6描述根据本申请实施例的装置和设备。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,所述程序执行时可包括如图3、图4对应实施例中的数字签名门限方法的部分或全部步骤。
图5为本申请实施例提供的一种计算机装置的结构示例图。该计算机装置600包括获取模块610,处理模块620和发送模块630。
其中,获取模块610,用于获取第一矩阵和至少p-1个用户的密钥参数份,执行图3方法中的S310和S340。
获取模块610,还用于获取第二消息和第二消息的签名信息,执行图4方法中的S410。
处理模块620,用于根据第一矩阵、第一向量、第一密钥参数份、密钥参数和第一随机数确定第一消息的签名信息,执行图3的方法中的部分或全部步骤。
处理模块620,用于对第二消息的签名信息进行验证,执行图4的方法中的S420。
发送模块630,用于发送第一消息和第一消息的签名信息给第二计算机设备。
图6为本申请实施例提供的另一种计算机装置1300的结构示例图。计算机装置1300包括处理器1302、通信接口1303和存储器1304。计算机装置1300的一种示例为芯片。计算机装置1300的另一种示例为计算设备。
上述本发明实施例揭示的方法可以应用于处理器1302中,或者由处理器1302实现。处理器1302可以是中央处理器(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。在实现过程中,上述方法的各步骤可以通过处理器1302中的硬件的集成逻辑电路或者软件形式的指令完成。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。
存储器1304可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
处理器1302、存储器1304和通信接口1303之间可以通过总线通信。存储器1304中存储有可执行代码,处理器1302读取存储器1304中的可执行代码以执行对应的方法。存储器1304中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。
例如,存储器1304中的可执行代码用于实现图3、图4所示的方法,处理器1302读取存储器1304中的该可执行代码以执行图3、图4所示的方法。
在本申请的一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图7示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品1400是使用信号承载介质1401来提供的。所述信号承载介质1401可以包括一个或多个程序指令1402,其当被一个或多个处理器运行时可以提供以上针对图3、图4所示的方法中描述的功能或者部分功能。因此,例如,参考图3、图4中所示的实施例,其中的一个或多个特征可以由与信号承载介质1401相关联的一个或多个指令来承担。
在一些示例中,信号承载介质1401可以包含计算机可读介质1403,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等等。在一些实施方式中,信号承载介质1401可以包含计算机可记录介质1404,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质1401可以包含通信介质1405,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质1401可以由无线形式的通信介质1405(例如,遵守IEEE802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令1402可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,前述的计算设备可以被配置为,响应于通过计算机可读介质1403、计算机可记录介质1404、和/或通信介质1405中的一个或多个传达到计算设备的程序指令1402,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

1.一种数字签名门限方法,其特征在于,包括:
第一计算机设备获取第一矩阵,所述第一矩阵为k行l列的矩阵,k和l为大于等于1的正整数;
所述第一计算机设备确定第一向量和第二向量;
所述第一计算机设备根据所述第一矩阵、所述第一向量和所述第二向量,确定第一密钥参数份;
所述第一计算机设备接收来自于a个计算机设备的a个密钥参数份,a为大于或等于p-1的正整数,p为秘密共享方案的最小计算机设备数目;
所述第一计算机设备根据所述第一密钥参数份和所述a个密钥参数份,确定密钥参数的高位比特和低位比特;
所述第一计算机设备根据矩阵种子和所述密钥参数的高位比特,确定第一随机数;
所述第一计算机设备根据所述第一向量、所述第二向量、所述密钥参数的低位比特、所述第一随机数和所述矩阵种子,确定第一消息的签名信息;
所述第一计算机设备向第二计算机设备发送所述第一消息和所述第一消息的签名信息,所述第二计算机设备为所述a个计算机设备中的一个。
2.根据权利要求1所述的方法,其特征在于,所述第一消息的签名信息包括:挑战,应答和提示,
所述第一计算机设备所述根据所述第一向量、所述第二向量、所述密钥参数的低位比特、所述第一随机数和所述矩阵种子,确定第一消息的签名信息,包括:
所述第一计算机设备根据所述第一随机数和所述第一消息,确定挑战参数;
所述第一计算机设备根据第一预设参数、所述第一矩阵和所述挑战参数,确定所述挑战;
所述第一计算机设备根据所述第一预设参数、所述挑战和所述第一向量,确定所述应答;
所述第一计算机设备根据所述挑战、所述密钥参数的低位比特、所述第一矩阵、所述第一预设参数和所述第二向量,确定所述提示。
3.根据权利要求2所述的方法,其特征在于,所述所述第一计算机设备根据第一预设参数、所述第一矩阵和所述第一消息的签名,确定所述挑战,包括:
所述第一计算机设备根据所述第一预设参数,生成屏蔽向量,其中所述屏蔽向量包括l个多项式,所述l个多项式中的每个多项式的系数小于或等于所述第一预设参数;
所述第一计算机设备根据所述第一矩阵和所述屏蔽向量,确定第一许诺中间份;
所述第一计算机设备获取来自于所述a个计算机设备的a个许诺中间份的高位比特;
所述第一计算机设备根据所述第一许诺中间份的高位比特和所述a个许诺中间份的高位比特,确定许诺;
所述第一计算机设备根据所述许诺和所述第一消息的签名,确定所述挑战。
4.根据权利要求3所述的方法,其特征在于,所述所述第一计算机设备根据所述第一预设参数、所述挑战和所述第一向量,确定所述应答,包括:
所述第一计算机设备根据所述屏蔽向量、所述挑战和所述第一向量,确定第一应答份;
所述第一计算机设备获取来自于所述a个计算机设备的a个应答份;
所述第一计算机设备根据所述第一应答份和所述a个应答份,确定所述应答。
5.根据权利要求4所述的方法,其特征在于,所述所述第一计算机设备根据所述挑战、所述密钥参数的低位比特、所述第一矩阵、所述第一预设参数和所述第二向量,确定所述提示,包括:
所述第一计算机设备根据所述挑战、所述密钥参数的低位比特、所述第一许诺中间份和所述第二向量确定第一提示份;
所述第一计算机设备获取来自于所述a个计算机设备的a个提示份;
所述第一计算机设备根据所述第一提示份和所述a个提示份,确定所述提示。
6.根据权利要求2至5任一项所述的方法,其特征在于,所述方法还包括:
所述第一计算机设备接收来自于所述第二计算机设备的第二消息和所述第二消息的签名信息;
所述第一计算机设备根据所述矩阵种子、所述密钥参数的高位比特对所述第二消息的签名信息进行验证。
7.一种计算机装置,其特征在于,包括:
获取模块,用于获取第一矩阵,所述第一矩阵为m行l列的矩阵,k和l为大于等于1的正整数;
处理模块,用于确定第一向量和第二向量;
所述处理模块,还用于根据所述第一矩阵、所述第一向量和所述第二向量,确定第一密钥参数份;
所述获取模块,还用于接收来自于a个计算机设备的a个密钥参数份,a为大于或等于p-1的正整数,p为秘密共享方案的最小用户数目;
所述处理模块,还用于根据所述第一密钥参数份和所述a个密钥参数份,确定密钥参数的高位比特和低位比特;
所述处理模块,还用于根据矩阵种子和所述密钥参数的高位比特,确定第一随机数;
所述处理模块,还用于根据所述第一向量、所述第二向量、所述密钥参数的低位比特、所述第一随机数和所述矩阵种子,确定第一消息的签名信息;
发送模块,用于向另一计算机设备发送所述第一消息和所述第一消息的签名信息,所述另一计算机设备为所述a个计算机设备中的一个。
8.根据权利要求7所述的装置,其特征在于,所述处理模块,具体用于:
根据所述第一随机数和所述第一消息,确定挑战参数;
根据第一预设参数、所述第一矩阵和所述挑战参数,确定挑战;
根据所述第一预设参数、所述挑战和所述第一向量,确定应答;
根据所述挑战、所述密钥参数的低位比特、所述第一矩阵、所述第一预设参数和所述第二向量,确定提示。
9.根据权利要求8所述的装置,其特征在于,所述获取模块,还用于获取来自于所述a个计算机设备的a个许诺中间份的高位比特;
所述处理模块,具体用于:
根据所述第一预设参数,生成屏蔽向量,其中所述屏蔽向量包括l个多项式,所述l个多项式中的每个多项式的系数小于或等于所述第一预设参数;
根据所述第一矩阵和所述屏蔽向量,确定第一许诺中间份;
根据所述第一许诺中间份的高位比特和所述a个许诺中间份的高位比特,确定许诺;
根据所述许诺和所述第一消息的签名,确定所述挑战。
10.根据权利要求9所述的装置,其特征在于,所述获取模块,还用于获取来自于所述a个计算机设备的a个应答份;
所述处理模块,具体用于:
根据所述屏蔽向量、所述挑战和所述第一向量,确定第一应答份;
根据所述第一应答份和所述a个应答份,确定所述应答。
11.根据权利要求10所述的装置,其特征在于,所述获取模块,还用于获取来自于所述a个计算机设备的a个提示份;
所述处理模块,具体用于:
根据所述挑战、所述密钥参数的低位比特、所述第一许诺中间份和所述第二向量确定第一提示份;
根据所述第一提示份和所述k个提示份,确定所述提示。
12.根据权利要求8至11任一项所述的装置,其特征在于,所述获取模块,还用于接收来自于所述另一计算机设备的第二消息和所述第二消息的签名信息;
所述处理模块,还用于根据所述矩阵种子、所述密钥参数的高位比特对所述第二消息的签名信息进行验证。
13.一种计算机设备,其特征在于,包括:处理器,所述处理器用于与存储器耦合,读取并执行所述存储器中的指令和/或程序代码,以执行如权利要求1-6中任一项所述的方法。
14.一种芯片系统,其特征在于,包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行如权利要求1-6中任一项所述的方法。
15.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。
CN202111401610.9A 2021-11-24 2021-11-24 数字签名门限方法和装置 Pending CN116167093A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111401610.9A CN116167093A (zh) 2021-11-24 2021-11-24 数字签名门限方法和装置
PCT/CN2022/121597 WO2023093278A1 (zh) 2021-11-24 2022-09-27 数字签名门限方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111401610.9A CN116167093A (zh) 2021-11-24 2021-11-24 数字签名门限方法和装置

Publications (1)

Publication Number Publication Date
CN116167093A true CN116167093A (zh) 2023-05-26

Family

ID=86416852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111401610.9A Pending CN116167093A (zh) 2021-11-24 2021-11-24 数字签名门限方法和装置

Country Status (2)

Country Link
CN (1) CN116167093A (zh)
WO (1) WO2023093278A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116996237B (zh) * 2023-09-29 2023-12-08 山东高速建设管理集团有限公司 一种基于量子门限签名的分布式管理方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5134281B2 (ja) * 2007-04-12 2013-01-30 Kddi株式会社 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
CN101882992B (zh) * 2010-06-21 2012-12-12 中国农业大学 门限秘密信息分配、还原方法及装置
CN105406966B (zh) * 2015-12-30 2018-11-09 中国农业大学 一种门限秘密信息分配、还原、完整性验证方法及装置
CN111314084B (zh) * 2020-01-21 2023-02-28 南京如般量子科技有限公司 一种抗量子计算rfid认证方法和系统
CN113065145B (zh) * 2021-03-25 2023-11-24 上海海洋大学 一种基于秘密共享和随机扰动的隐私保护线性回归方法

Also Published As

Publication number Publication date
WO2023093278A1 (zh) 2023-06-01

Similar Documents

Publication Publication Date Title
US11757656B2 (en) Efficient post-quantum anonymous attestation with signature-based join protocol and unlimited signatures
US11792191B2 (en) MTS-based mutual-authenticated remote attestation
CN107483212A (zh) 一种双方协作生成数字签名的方法
US9219602B2 (en) Method and system for securely computing a base point in direct anonymous attestation
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
GB2487503A (en) Authentication of digital files and associated identities using biometric information
WO2020212796A1 (en) Computer implemented method and system for encrypting data
KR101942030B1 (ko) 메시지에 대한 무결성 검증이 지원되는 부호 기반의 암호화가 가능한 전자 장치 및 그 동작 방법
EP2991264B1 (en) Encrypted text matching system, method and program
CN111147245A (zh) 一种区块链中使用国家密码进行加密的算法
Teh et al. A Chaos‐Based Authenticated Cipher with Associated Data
CN106972924A (zh) 加密、解密、电子签章、验证签章的方法及装置
EP2991265B1 (en) Encrypted text matching system, method and program
WO2020240654A1 (ja) 匿名署名システム、署名生成装置、匿名署名生成装置、検証装置、匿名署名方法及びプログラム
CN116167093A (zh) 数字签名门限方法和装置
JP5427117B2 (ja) メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、およびプログラム
KR20240045231A (ko) 디지털 서명 셰어의 생성
US20220358203A1 (en) Puf-rake: a puf-based robust and lightweight authentication and key establishment protocol
US20220385954A1 (en) Embedding information in elliptic curve base point
Sailada et al. Crystal dilithium algorithm for post quantum cryptography: experimentation and Usecase for eSign
CN114070564A (zh) 数字签名的方法和装置
Omerasevic et al. CryptoStego—A novel approach for creating cryptographic keys and messages
JP2015154291A (ja) デバイス固有情報生成装置及びデバイス固有情報生成システムとデバイス固有情報生成方法
US20240220640A1 (en) Combined protection of symmetric-key primitives against side-channel and fault attacks
Cambou et al. Key Distribution for Post Quantum Cryptography using Physical Unclonable Functions

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