CN114371828A - 多项式乘法器及具有该乘法器的处理器 - Google Patents

多项式乘法器及具有该乘法器的处理器 Download PDF

Info

Publication number
CN114371828A
CN114371828A CN202210008507.6A CN202210008507A CN114371828A CN 114371828 A CN114371828 A CN 114371828A CN 202210008507 A CN202210008507 A CN 202210008507A CN 114371828 A CN114371828 A CN 114371828A
Authority
CN
China
Prior art keywords
polynomial
module
algorithm
multiplication
multiplier
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.)
Granted
Application number
CN202210008507.6A
Other languages
English (en)
Other versions
CN114371828B (zh
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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202210008507.6A priority Critical patent/CN114371828B/zh
Publication of CN114371828A publication Critical patent/CN114371828A/zh
Application granted granted Critical
Publication of CN114371828B publication Critical patent/CN114371828B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例公开了一种多项式乘法器及具有该乘法器的处理器。该多项式乘法器基于Karatsuba算法而设计并用于执行后量子密码中的多项式乘法操作。其包括:第一存储模块,用于存储系数b0至b255以及a0至a255;第一计算模块,用于计算‑B1、B0+B1、B0‑B1和A0+A1,B0包括b0至b127,B1包括b128至b255,A0包括a0至a127,A1包括a128至a255;含384个并行的乘法单元的多项式乘法模块,其中乘法单元每3个为一组,每组中的三个乘法单元分别用于计算:P1=‑B1*(A0+A1)、P2=(B0+B1)*A0和P3=(B0‑B1)*A1;第二计算模块,用于根据计算C0=P2+P1,C1=P3‑P1;以及第二存储模块,用于存储C0和C1,其中C0和C1为对第一和第二多项式系数执行多项式乘法操作所产生的结果数据。本实施例能够高效地实现后量子密码Saber算法中的多项式乘法运算。

Description

多项式乘法器及具有该乘法器的处理器
技术领域
本发明涉及信息安全技术领域,尤其涉及一种多项式乘法器及具有该乘法器的处理器。
背景技术
在信息安全技术领域中,为了保证信息的安全性,发送端在信息发送前需要对信息进行加密,接收端在接收到信息之后,需要使用相应的密钥对信息进行解密。
随着技术的发展,密码技术正在由传统的基于公钥的密码技术向PQC(Post-Quantum Cryptography,后量子密码)技术方向发展,所谓PQC技术是指可以抵抗量子计算机攻击的密码技术,因此也被称为“抗量子密码技术”。其中的“后”是指在大规模稳定的量子计算机出现后,现有的绝大多数公钥密码算法(诸如RSA、Diffie-Hellman、椭圆曲线等)将会被攻破,只有能抵抗这种攻击的密码算法才能够在进入量子计算时代之后存活。
在PQC技术中,后量子密码Saber算法是其中一种,其具有公钥长度短和易于实现等优点,该算法是由Jan-Pieter等人提出的基于MLWR(Machine Learning with Rounding)问题的密码学原语,其包含了公钥加密(Saber.PKE)和密钥封装(Saber.KEM)两种方案。其中,Saber.PKE是一种具有选择明文攻击下不可区分性(Indistinguishability underChosen Plaintext Attack,IND-CPA)的公钥加密方案。而Saber.KEM是一种具有选择密文攻击下不可区分性(Indistinguishability under Chosen Ciphertext Attack,IND-CCA)的密钥交换机制。其中,Saber.PKE到Saber.KEM的转换通过Fujisaki-Okamoto变换即可完成。
在针对后量子密码Saber算法的研究中,如何提高后量子密码Saber算法的效率,即高效性,是当前的主要研究方向,即当前研究主要关注于高效性问题上。其中一种方式是以硬件的方式来实现后量子密码Saber算法,例如设计协处理器来实现后量子密码Saber算法。在后量子密码Saber算法中,会涉及到多项式乘法运算,并且多项式乘法运算的效率高低是影响最终的协处理器的性能的关键因素,因此如何设计具有高运算性能的多项式乘法器是本领域技术人员需要着重考虑的问题。
发明内容
有鉴于此,本发明的目的在于提供一种多项式乘法器及具有该乘法器的处理器,其能够高效地实现后量子密码后量子密码Saber算法中的多项式乘法运算。
为了实现上述发明目的,本发明实施例提供了一种基于Karatsuba算法的多项式乘法器,用于执行后量子密码后量子密码Saber算法中的多项式乘法操作,包括:第一存储模块,用于存储第一多项式系数和第二多项式系数,其中所述第一多项式系数包括:第1至第256阶系数b0至b255,第二多项式系数包括:第1至第256阶系数a0至a255;第一计算模块,用于根据所述第一和第二多项式系数,计算-B1、B0+B1、B0-B1和A0+A1,其中,B0包括b0至b127,B1包括b128至b255,A0包括a0至a127,A1包括a128至a255;多项式乘法模块,包括:384个并行的乘法单元,其中所述乘法单元每3个为一组,每组中的三个乘法单元分别用于计算:P1=-B1*(A0+A1)、P2=(B0+B1)*A0和P3=(B0-B1)*A1;第二计算模块,用于根据所述多项式乘法模块的结果,计算C0=P2+P1,C1=P3-P1;以及第二存储模块,用于存储C0和C1,其中C0和C1为对所述第一和第二多项式系数执行多项式乘法操作所产生的结果数据。
在一种实施方式中,所述第一多项式系数中各系数的位宽为4位,所述第二多项式系数中各系数的位宽为13位,所述第一存储模块,具体用于从位宽为64位的存储器中读取所述第二多项式系数并缓存。
在一种实施方式中,所述第一存储模块,包括:第一寄存器,用于存储b0至b255;第二寄存器,用于存储a0至a127;以及第三寄存器,用于存储a128至a255。
在一种实施方式中,还包括:第一选择器和第二选择器,所述第一选择器和第二选择器分别与所述第二寄存器和第三寄存器连接,分别用于从所述第二寄存器和第三寄存器选择系数输出至所述第二计算模块。
在一种实施方式中,所述第二和第三寄存器均为676位。
在一种实施方式中,所述第一计算模块包括:第一加法器,用于计算B0+B1;第二加法器,用于计算A0+A1;第一减法器,用于计算-B1;以及第二减法器,用于计算B0-B1。
在一种实施方式中,所述第二计算模块包括:第一累加单元,用于计算C0=P2+P1;以及第二累加单元,用于计算C1=P3-P1。
在一种实施方式中,所述第二存储模块包括:第四寄存器,用于存储C0;和第五寄存器,用于存储C1。
在一种实施方式中,所述多项式乘法模块由数字信号处理电路实现。
本发明实施例还提供了一种用于实现后量子密码Saber算法的处理器,所述处理器由硬件实现,所述处理器包括:存储模块;功能模块,用于执行后量子密码Saber算法涉及的操作,且所述功能模块包括以下子模块:第三代安全散列算法SHA3子模块、二进制采样子模块、多项式乘法器、加解密子模块、验证子模块和数据位宽转换子模块;以及控制模块,用于根据所述存储模块中存储的指令,控制所述功能模块中的各子模块执行对应的操作,以实现所述后量子密码Saber算法中的密钥生成、密钥封装和密钥解封中的至少一个;其中,所述多项式乘法器为上述的多项式乘法器。
本发明的有益效果是:
本发明实施例的多项式乘法器,其多项式乘法模块采用384个并行的乘法单元,因此利用该384个并行的乘法单元可以在128个周期完成256阶多项式乘法运算,从而提高了多项式乘法器的乘法效率。
附图说明
图1是本发明的用于实现后量子密码Saber算法的处理器的实施例的结构示意图;
图2是本发明的用于实现后量子密码Saber算法的处理器的另一实施例的结构示意图;
图3是本发明的用于实现后量子密码Saber算法的处理器的另一实施例的结构示意图;
图4是本发明实施例的指令的结构示意图;
图5是本发明的多项式乘法器的实施例的结构示意图;
图6是本发明的多项式乘法器的另一实施例的结构示意图;以及
图7是本发明实施例的系数加载方案的示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
为了便于理解,首先介绍用于实现后量子密码后量子密码Saber算法的处理器,然后介绍该处理器中的多项式乘法器。在本发明实施例中,首先提供了一种处理器,用于执行后量子密码Saber算法。其中该处理器可以采用纯硬件的方式来实现后量子密码Saber算法,并且基于对处理器中功能模块的合理划分和采用自定义的精简指令集等方式,来实现高效地执行算法和节约资源开销的双重目标。在本发明实施例中的处理器中,包括多项式乘法器,并且通过分析发现,多项式乘法器的性能高低对处理器的性能高低产生主要影响,因此本发明实施例针对后量子密码Saber算法中的多项式乘法操作,设计专门的多项式乘法器来执行该乘法,并且对多项式乘法器的结构进行优化,例如采用多个并行的乘法器一次完成256阶的多项式乘法操作,从而提供高性能的用于执行后量子密码Saber算法中的多项式乘法的多项式乘法器。
具体地,如图1所示,是本发明的用于实现后量子密码Saber算法的处理器的实施例的结构示意图。该处理器1可以是用于实现后量子密码Saber算法的专用处理器,例如专用于实现后量子密码Saber算法的协/辅助处理器。当然处理器1除了能够实现后量子密码Saber算法,也可以实现其他的算法,例如图1所示结构的处理器1,可以进行简单的扩展而支持Kyber算法。处理器1在实现后量子密码Saber算法时,可以实现基于后量子密码Saber算法的密钥生成、密钥封装和密钥解封中的至少一个。在前述,已对后量子密码Saber算法做了简单介绍,下面再结合下述的算法1说明后量子密码Saber算法是如何实现密钥生成的,而对于后量子密码Saber算法如何实现密钥封装和密钥解封的,在此不赘述。
Figure BDA0003456467860000051
在算法1中,seedA为均匀分布的256位随机数种子。A为l×l的多项式矩阵,l的值根据算法安全等级的不同而不同。多项式矩阵中A的元素为256阶多项式,系数为13位。算法定义了矩阵A的生成方式:采用SHA3标准定义的输出可扩展函数SHAKE128生成多项式矩阵A的全部系数。r与seedA相似,为随机数种子,算法并没有严格定义其产生方式。s为长度为l的多项式向量,其多项式元素的系数需要满足二项分布。二项分布的系数可以通过对均匀分布的伪随机数序列进行简单的采样得到。b为多项式向量,是公钥的主要组成部分。所有计算完成之后,随机数种子seedA与向量b进行位拼接,作为公钥发送给客户端。在上述算法中,多项式乘法在第5步中执行,例如第5步中的ATs即表示多项式乘法操作。
在上述基础上,继续对图1的结构进行说明。如图1所示,处理器1包括:存储模块10、功能模块11和控制模块12,其中存储模块10用于存储数据和指令,功能模块11用于执行后量子密码Saber算法中涉及的操作,控制模块12介于存储模块10和控制模块12之间,用于根据存储模块10中的指令,控制功能模块11执行相应的操作,同时管理功能模块11对存储模块10进行的数据读和写,以实现后量子密码Saber算法。
具体地,存储模块10中可以存储有执行后量子密码Saber算法的程序(由指令组成),以及存储执行后量子密码Saber算法所需要使用的随机数种子和算法运行产生的中间数据和结果数据等等。在本实施例中,处理器1使用自定义的精简指令集,因此存储模块10中存储的指令是自定义的精简指令。所谓“自定义”是指本实施例的指令均是根据后量子密码Saber算法而设计的,其指令长度以及每一位(bit,也称为比特)的作用都是由本方案设定的,采用自定义的方式能够使指令有针对性从而能够提高效率和节约资源。所谓“精简”是相对于复杂而言的,在精简的指令集中,其对指令数目和寻址方式都做了精简,使其更容易实现,且指令并行执行程度更好,编译的效率也更高,透过使用精简的指令集能够提高后量子密码Saber算法的运行效率。
其中,功能模块11,用于执行后量子密码Saber算法中涉及的各个操作,例如多项式乘法、二进制采样和验证等。具体而言,本申请的发明人通过分析后量子密码Saber算法中涉及的操作以及各操作出现的频次,将功能模块11划分为6个子模块,如图1所示。需要说明的是,不同的技术人员对功能模块11的划分可能是不一样的,但是本申请的发明人认为图1的划分方式会是较优的方式,因为这样的划分是从节约资源开销的角度考量的,采用这样的划分方式能够在处理器1实现后量子密码Saber算法时,充分地复用各子模块从而节约资源开销。
具体地,如图1所示,功能模块11包括:SHA3(Secure Hash Algorithm 3,第三代安全散列算法)子模块111、二进制采样子模块112、多项式乘法器113、加解密子模块114、验证子模块115和数据位宽转换子模块116。其中,上述各子模块相互独立,在控制模块12的控制下,分别实现各自的功能。例如,SHA3子模块11能够生成Hash(哈希)散列,二进制采样子模块112能够生成满足二项分布的多项式,多项式乘法器113(例如,基于Schoolbook算法或Karatsuba算法来实现的多项式乘法器)能够实现多项式矩阵乘法,加解密子模块114能够实现信息的加密或解密,验证子模块115能够验证后量子密码Saber算法是否正确,以及数据位宽转换子模块116能够调整数据的位宽。需要说明的是,上述各子模块执行的均是后量子密码Saber算法中涉及的操作,由于后量子密码Saber算法是已知的算法,因此上述各模块如何执行上述操作对本领域技术人员而言是熟悉的,在此不赘述。另外,加解密子模块114也可以进一步包括:分别执行加密和解密操作的加密单元和解密单元。
其中,控制模块12用于根据存储模块10中存储的指令,控制功能模块11中的各子模块(即111~116)执行对应的操作,从而实现后量子密码Saber算法中的密钥生成、密钥封装和密钥解封中的至少一个。举例而言,存储模块10中存储有后量子密码Saber算法的运行程序(由多条指令构成),控制模块12按照指令的存储地址由低到高的顺序,先从存储模块10取出第一条指令(例如该第一条指令用于指示执行一次SHA3子模块11),然后控制模块101解析该指令,并基于解析的结果,控制SHA3子模块11执行一次;当SHA3执行一次之后,其向控制模块12输出完成的指示,接着控制模块12取出第二条指令,以此类推,完成所有指令的执行,从而实现后量子密码Saber算法。
本实施例的处理器,基于硬件而实现(硬件比软件更高效),因此天然具有高效性。同时,处理器使用自定义的精简指令集,由于自定义的精简指令是针对后量子密码Saber算法而开发,因此一方面具有高效性,另一方面可以减少控制逻辑,从而节约资源开销,因此可以同时兼顾高效性和节约资源。另外,通过分析后量子密码Saber算法中会涉及的操作,将主要执行后量子密码Saber算法的功能模块合理地划分为SHA3子模块、二进制采样子模块、多项式乘法器、加解密子模块、验证子模块和数据位宽转换子模块,并采用分别对这些功能模块进行控制的方式;一方面可以在实现后量子密码Saber算法时,充分复用这些子模块以减少资源消耗,另一方面在开发指令时,也只需要主要针对上述6个子模块来设计指令,从而保证指令的数量不会太多,长度也不会太长。综合上述各方面,本发明实施例的以硬件方式实现的用于执行后量子密码Saber算法的处理器,能够在具有高效性的同时,降低资源消耗。
如图2和3所示,是本发明的处理器的另一实施例的结构示意图。在图2中,其对图1中存储模块10和控制模块12做了进一步的举例说明。如图2所示,存储模块10可以包括:程序存储器101和数据存储器102。其中,程序存储器101用于存储程序(由指令构成),例如实现后量子密码Saber算法的程序。数据存储器102用于存储数据,例如随机数种子、后量子密码Saber算法在运行时的中间数据和结果数据等。在一种实施方式中,程序存储器101与处理器1的指令修改接口(未图示)连接,透过该指令修改接口可以修改程序存储器中存储的程序(即指令),以增加该处理器1的可扩展性。
继续如图2所示,控制模块12包括:指令读取单元121和指令解析与总线管理单元122。其中,指令读取单元121用于从程序存储器101中读取指令,例如按照地址由低到高的顺序读取。指令解析与总线管理单元122用于解析指令读取单元121读取的指令,并基于解析的结果启动对应的子模块(即111~116)来执行相关操作;同时,指令解析与总线管理单元122控制仅启动的子模块能够使用数据存储器,例如从数据存储器读取数据或向数据存储器写数据。在一种实施方式中,指令解析与总线管理单元122可以进一步分解为指令解析子单元和总线管理子单元,在此不赘述。
如图3所示,其不仅示出了处理器1的主要模块,还示出了处理器1的主要外部接口,其中DI即为上述的指令修改接口,其用于接收输入的指令并将其存储至程序存储器101。CTR为控制信号接口,用于接收外部对处理器的控制信号。DIO为数据输入/输出接口。RST为复位接口,用于接收复位信号。CLK为时钟接口。FLAG为状态信号接口,用于输出处理器状态信号。
透过上述图1~3,已经对本发明实施例的处理器的具体结构进行了详细说明。下面对上述提及的自定义的精简指令集做更进一步的说明。
如图4所示,是本发明实施例的自定义的精简指令的格式示意图。如图所示,本发明的实施例的精简指令的长度固定,例中均为图示的37位,且每条指令包括:
控制部分41,用于指示欲启动的子模块(即图1中的111~116)及其工作模式,在本实施列中,只有SHA3子模块和多项式乘法器具有多个工作模式,因此此两个模块需要特别指明其工作模式。举例而言,M0位作为SHA3子模块启动标志位,可以用于指示是否启动SHA3子模块,例如其为“1”时,表示启动SHA3子模块,其为“0”时,表示不启动SHA3子模块。M1位作为多项式乘法器的启动标志位,用于指示是否启动多项式乘法器,例如其为“1”时,表示启动多项式乘法器,其为“0”时,表示不启动多项式乘法器。剩余的M2~M6为剩余的子模块启动标志位和模式控制位,用于指示剩余的子模块中哪一个启动或者SHA3子模块和多项式乘法器的工作模式。例如,M1和M0均为0,M6~M2为“00001”时,表示启动二进制采样子模块;又例如,当M1为“0”,M0为“1”时,M6~M2为“00001”时,可以表示启动SHA3子模块,且SHA3子模块工作于“执行SHAKE128函数,输出256位消息”的模式。
在本实施例中,SHA3子模块的工作模式可以包括:执行SHAKE128函数并输出256位消息的模式,执行SHAKE128函数并输出29925位消息的模式,执行SHAKE128函数并输出6144位消息的模式,执行SHA3-256函数并吸收8704位消息的模式,执行SHA3-256函数并吸收512位消息的模式,执行SHA3-256函数并吸收256位消息的模式,执行SHA3-256函数并吸收7936位消息的模式,和执行SHA3-512函数的模式。多项式乘法器的工作模式可以包括:执行一次AT·s中的多项式矢量乘法的模式,执行一次A·s′中的多项式矢量乘法的模式,和执行一次b·s中的多项式矢量乘法的模式。
其中,读地址部分42,用于指示输入数据的存储地址。在图示中,读地址部分42包括第一读地址部分421和第二读地址部分422,分别用于指示两个输入数据的存储地址。具体而言,读地址部分42由指令的第7~26位实现,即A0~A9和B0~B9;其中,A0~A9用于实现第一读地址部分421,其存放第一输入数据的存储地址,例如第一输入数据的起始地址;B0~B9用于实现第二读地址部分422,其存放第二输入数据的存储地址,例如第二输入数据的起始地址。在本实施例中,由于读地址部分42包括:两个输入数据的存储地址,因此有助于加速多项式乘法器的工作效率,因为其通过一条指令就可以取到两个输入数据。但是,在实际应用中,读地址部分42仅包括一个输入数据的存储地址也是可以的,但这会影响多项式乘法器的工作效率。当读地址部分42仅包括一个输入数据的存储地址时,本实施例的指令由27位构成。
其中,写地址部分43,用于指示输出数据将要写入的存储地址。在图示中,其由R0~R9实现;需要说明的是,此处的输出数据并不一定是执行后量子密码Saber算法最终的输出数据,也可以是执行上述各子模块时生成的数据。
综上,本发明实施例透过一条指令可以指示如下内容:要启动的子模块;若要启动的子模块有多个工作模式,还指示其工作模式;从哪取输入数据;运算后得到的输出数据存入哪里。由此可见,上述指令格式简单,而且位数合理(37位),因此在运行时,能够高效地控制各子模块的工作,从而实现后量子密码Saber算法。
在图4中,对本发明实施例的自定义的精简指令的格式进行了说明。下面对本发明实施例的指令集进行说明。在本发明实施例中,为了能够实现后量子密码Saber算法,基于对功能模块的划分方式,本发明实施例的指令可以包括17条,例如分别为:用于程序结束的指令;用于启动二进制采样子模块的指令;用于启动加密子模块的指令;用于启动解密子模块的指令;用于启动验证子模块的指令;用于启动数据位宽转换子模块的指令;用于启动多项式乘法器且指示执行一次AT·s中的多项式矢量乘法的指令;用于启动多项式乘法器且指示执行一次A·s′中的多项式矢量乘法的指令;用于启动多项式乘法器且指示执行一次b·s中的多项式矢量乘法的指令;用于启动SHA3子模块且指示执行SHAKE128函数并输出256位消息的指令;用于启动SHA3子模块且指示执行SHAKE128函数并输出29925位消息的指令;用于启动SHA3子模块且指示执行SHAKE128函数并输出6144位消息的指令;用于启动SHA3子模块且指示执行SHA3-256函数并吸收8704位消息的指令;用于启动SHA3子模块且指示执行SHA3-256函数并吸收512位消息的指令;用于启动SHA3子模块且指示执行SHA3-256函数并吸收256位消息的指令;用于启动SHA3子模块且指示执行SHA3-256函数并吸收7936位消息的指令;以及用于启动SHA3子模块且指示执行SHA3-512函数的指令。利用这17条指令的组合,本发明实施例可以实现后量子密码Saber算法。
需要说明的是,由上述指令可知,SHA3子模块实现了SHA3-256函数、SHA3-512函数和SHAKE128函数。一般而言,SHA3算法中共涉及6种函数,本发明实施例基于后量子密码Saber算法实际只用到其中三种,因此将SHA3子模块设计为仅支持SHA3-256函数、SHA3-512函数和SHAKE128函数,从而可以简化SHA3子模块的结构。另外,SHA3-256函数、SHA3-512函数和SHAKE128函数均基于轮函数而实现,则在本发明实施例的SHA3子模块采用展开系数为1,不插入流水线的方式来实现轮函数,从而可以节约资源开销。一般而言,展开系数越高,SHA3子模块的效能越好,即越高效;但是,决定系统整体性能的并不是其中性能最高的模块,而是性能最低的模块。SHA3算法硬件实现的高效性使其即使不进行专门的优化,理论上也不会成为制约密钥交换系统性能的瓶颈,而在后量子密码系统中制约系统性能的模块大部分都是多项式乘法器。因此,本方案在设计SHA3子模块时,主要是从节省资源开销的角度确定设计方案,即采用展开系数为1,不插入流水线的方式实现轮函数。
如上所述,在处理器1中包含多项式乘法器113,用于实现后量子密码Saber算法中的多项式乘法操作。并且,本申请的发明人意识到,多项式乘法器113的性能高低将主要决定处理器1的性能高低,因此根据后量子密码Saber算法中的多项式乘法,设计专门的多项式乘法器113来提高多项式乘法的执行效率。具体的,先对后量子密码Saber算法涉及的多项式乘法进行说明,如下:
对于在环
Figure BDA0003456467860000121
内的多项式
Figure BDA0003456467860000122
Figure BDA0003456467860000123
Figure BDA0003456467860000124
c(x)的系数可以通过如下方式计算:
Figure BDA0003456467860000125
计算式(1-1)所示的矩阵乘法的方法有很多,其中最为简单的是传统的逐项相乘再累加的方法,该方法也被称为Schoolbook算法。硬件实现Schoolbook算法的过程并不复杂:首先将多项式b(x)的系数全部取出,依次存放在寄存器b中。再设置一个足够长的寄存器c,初始化为零,用于存储c(x)的系数,之后按照算法5,每次取出一个多项式a(x)的系数与b(x)系数相乘并累加,即可得到c(x)。
Figure BDA0003456467860000126
虽然采用Schoolbook算法也能实现多项式乘法运算,但存在计算效率低等问题。因此,本申请的发明人经过分析,决定采用Karatsuba算法的思想简化上述环内多项式乘法运算的过程。需要说明的是,Karatsuba算法是一种快速乘法,是由Anaolii AlexeevitchKaratsuba在1960年提出,并于1962年得以发表。虽然Karatsuba算法是已有的内容,但是运用这个算法设计的乘法器并不是,尤其针对不同阶数而设计的乘法器在结构上是不相同的,而本发明实施例是针对256阶多项式的乘法而专门设计的基于Karatsuba算法的多项式乘法器。
具体而言,式(1-1)中的矩阵具有一定的对称性。该矩阵主对角线上的元素均相等,且平行于主对角线的线上的元素也相等,矩阵中的元素关于次对角线对称。这样的矩阵被称为拓普利兹矩阵(Toeplitz Matrix),简称T矩阵。根据T矩阵的特点,可以将式(1-1)表示如下:
Figure BDA0003456467860000131
令C0=P2+P1,C1=P3-P1,根据(1-2),则有:
P1=-B1(Ao+A1) (1-3)
P2=(B0+B1)Ao (1-4)
P3=(B0-B1)A1 (1-5)
经过上述变换,256阶多项式的乘法运算转换为了3次128阶多项式的运算,执行乘法运算的次数从65536次减少为了49152次,多项式乘法运算的复杂度得到了降低,效率得到了提高。
在上述基础上,本发明实施例提供了一种多项式乘法器,能够实现上述基于Karatsuba算法的多项式乘法操作。具体地,如图5所示,是本发明的多项式乘法器的实施例的结构示意图。该多项式乘法器5包括:第一存储模块50、第一计算模块51、多项式乘法模块52、第二计算模块53和第二存储模块54。
其中,第一存储模块50例如可以为寄存器,其用于存储多项式系数。例如,该多项式系数可以由SHA3功能模块提供。其中,第一存储模块50存储的多项系数包括:第一多项式系数和第二多项式系数,其中第一多项式系数包括:第1至第256阶系数b0至b255,例如对应上述的多项式b(x)的系数。第二多项式系数包括:第1至第256阶系数a0至a255,例如对应上述的多项式a(x)的系数。
其中,第一计算模块51,例如可以为加法器和/或减法器,其用于根据第一和第二多项式系数,计算-B1、B0+B1、B0-B1和A0+A1,其中,B0包括b0至b127,B1包括b128至b255,A0包括a0至a127,A1包括a128至a255。其中,B0+B1表示b0至b127中的第i个系数和b128至b255中的第i个系数相加,类似地,B0-B1表示b0至b127中的第i个系数和b128至b255中的第i个系数相减,A0+A1表示a0至a127中的第i个系数和a128至a255中的第i个系数相加。在本实施例中,将256阶的运算拆分为两个128阶的运算,即采用两级流水线的方式提高运算效率。
其中,多项式乘法模块52,例如可以为乘法器,其包括:384个并行的乘法单元,其中这些乘法单元中每3个为一组,即多项式乘法模块可以划分为128组,每组中的三个乘法单元分别用于计算:P1=-B1*(A0+A1)、P2=(B0+B1)*A0和P3=(B0-B1)*A1,其中B0、B1、A0和A1均为128阶。因此透过在多项式乘法模块中设置384个并行的乘法单元,将256阶多项式的乘法运算转换为了3次128阶多项式的运算,执行乘法运算的次数可以减少至49152(128*3*128)次,从而大大地降低了多项式乘法运算的复杂度,提高了多项式乘法操作的效率。
其中,第二计算模块53,例如可以包括:累加单元,用于根据多项式乘法模块52的结果,计算C0=P2+P1,C1=P3-P1。其中累加单元可以由加法器和/或减法器实现。
其中,第二存储模块54,例如可以为寄存器,用于存储C0和C1,其中C0和C1为对第一和第二多项式系数执行多项式乘法操作所产生的结果数据,即第二存储模块54用于存储多项式乘法器5的乘法结果。
本实施例,采用384个并行的乘法单元,完成256阶多项式乘法运算,从而提高了多项式乘法器的乘法效率。
下面结合图6,对图5结构的具体实现进行举例说明。需要说明的是,图6仅是图5结构的一种举例说明,而不是限制。如图6所示,首先,将例如图1中的SHA3子模块11生成的多项式系数存入图6中的BRAM(Block Random Access Memory,块随机存取存储器)中,其中BRAM的位宽为64位(bit)。在本实施例中,多项式系数包括两类,一类为上述的a(x)系数,这类系数的位宽为13位,因此利用64位的随机存取存储器来存储这类多项式系数时,会存在跨地址存储的现象,因为64不是13的整数倍,会导致一些数据被分在两个数据地址存储。另一类为上述的b(x)系数,其具有4位的位宽。
在图6中,当多项式乘法器工作时,先将BRAM中存储的多项式系数存入第一存储模块50(由寄存器501、502和503实现)中。其中,寄存器501用于存储位宽较小的多项式系数的第0~255阶系数,即多项式系数b0~b255。其中,系数b0~b255中各系数的位宽均为4位,因此寄存器501的大小为1024位。寄存器502和503用于存储位宽较大的多项式系数的第0~255阶系数,例如寄存器502用于存储系数a0至a127,寄存器503用于存储系数a128至a256,其中a0至a256中各系数的位宽均为13位。其中,b0~b255可以一次性读取至寄存器501中,而寄存器502和503可以为缓存,a0至a127和a128至a256可以依次读入寄存器502和503中。如此设计的原因在于:在多项式乘法中,在每次的操作时,会从a0至a127和a128至a256中读取两个系数与b0~b255进行多项式乘法并累加,而a0至a127和a128至a256中的系数被读取之后,则不再使用可以丢弃,因此对a0至a127和a128至a256的寄存操作采用缓存的策略。另外,需要说明的是,由于BRAM的位宽为64位,而a0至a256中的每一位均为13位,因此a0至a256在BRAM中的存储会存在跨地址存储的问题,为了解决此问题,寄存器502和503的大小可以设置为832位(64和13的最小公倍数),以实现数据位宽的转换。除此之外,本发明实施例还可以对数据的加载方式进行改进,即采用同步读取和计算的方式,即a0至a127和a128至a256中的第一个系数(如a0、a128)被加载之后即可开始计算,这样的方式,寄存器502和503仅需要676位即可,如此可以节约资源开销;同时也不需要将寄存器填满才开始计算,也可以提高计算效率。关于同步读取和计算的方式在后续会更详细的说明,请参考后续内容。
在图6中,可以由加法器511和514,以及减法器512和513实现图5中的第一计算模块51。其中,加法器511用于实现B0+B1,加法器514用于实现a0+a1,减法器512用于实现B0-B1,减法器513用于实现-B1。
在图6中,可以由乘法单元521、522和523实现图5中的多项式乘法模块52,需要说明的是,乘法单元521、522和523构成一组乘法单元,在图6实施例中,可以有128组类似的乘法单元,为了简化,在图中未如此示出。需要说明的是,每一组乘法单元521~523均可以搭配一组加法器511、532,减法器512、513和531,以实现128组384个乘法单元并行工作的目的,即加法器511、532,减法器512、513和531也有128组。对于加法器514,由于每个周期只读取多项式A中的两个系数,因此加法器514可以只设置一个即满足要求。
如图6所示,一组乘法单元521用于实现a0*(B0+B1)、一组乘法单元522用于实现a1*(B0-B1),一组乘法单元523用于实现-B1*(a1+a0)。
如图6所示,可以由累加单元531和累加单元532实现图5中的第二计算模块53的功能。例如,累加单元器531用于实现P3-P1,累加单元532用于实现P2+P1,其中,P1为乘法单元523的输出结果,P2为乘法单元521的输出结果,P3为乘法单元522的输出结果。需要说明的是,累加单元531可以包括:128个减法单元,用于分别完成128阶的减法操作;以及一个加法单元,用于对128个减法单元的相减操作进行累加。类似地,累加单元532也可以包括:128个加法单元,用于分别完成128阶的加法操作;以及另一个加法单元,用于对128个加法单元的相加结果进行累加
如图6所示,可以由寄存器541和542来实现图5实施例的第二存储模块54的功能,例如将加法器532和减法器531的运算结果存入寄存器541和542中。
在图6中,还可以包括:选择器551和552,用于从寄存器502和503中选择系数参与后续的计算。在同步读取和计算的说明中,会对选择器551和552做更具体的说明,在此不赘述。
下面对图6的工作过程做简单概括说明:在第一个周期中:首先,将系数b0至b255全部加载至501中,将系数a0加载至寄存器502中,将系数a128加载至寄存器503中;接着,利用128个加法器511分别实现(b0+b128)、(b1+b129)、……、直至(b127+b255),利用128个减法器512分别实现(b0-b128)、(b1-b129)、……、直至(b127-b255),利用128个减法器实现-b127、-b128、……、直至-b255,利用加法器514实现a0+a128;再接着,利用128个乘法单元521分别完成a0*(b0+b128)、a0*(b1+b129)、……、直至a0*(b127+b255),利用128个乘法单元522分别完成a128*(b0-b128)、a128*(b1-b129)、……、直至a128*(b127-b255),利用128个乘法单元523分别完成-b127*(a0+a128)、-b128*(a0+a128)、……、直至-b255*(a0+a128);最后,利用累加单元531中的128个减法器对乘法单元521和乘法单元523的结果进行相减,并利用累加单元531中的加法器对128个相减结果进行累加,将将累加的结果c128存入寄存器542中;同时,利用累加单元532中的128个加法器对乘法单元522和523的结果进行相加,以及利用累加单元532中的另一加法器将128个相加的结果进行累加,并将累加的结果c0存入寄存器541中。接着,进入第二个周期,在第二个周期内,其他不变,但将系数a1和a129分别加载至寄存器502和503中,并且选择器551和552选择a1和a129参与后续的计算,以此类推,直至完成128个周期。
在图5和6实施例的多项式乘法器中,通过采用384个并行的乘法单元,完成256阶多项式乘法运算,从而提高了多项式乘法器的乘法效率。并且,在一些实施方式中,还可以采用同步读取和计算的方式,以节约资源开销。另外,作为多项式乘法器的核心的乘法单元522可以由DSP(数字信号处理器)来实现,如此通过DSP实现乘法的好处之一是可以避免了大量LUT(Look-Up-Table,查找表)和寄存器的使用,另一好处是在EDA(Electronic designautomation,电子设计自动化)工具进行布局布线时,DSP作为一个整体进行布局,可以减少关键路径长度,提高系统性能。
在上述实施例中,在多项式乘法器中,可以采用同步读取和计算的方式,下面结合图7对同步读取和计算的过程进行说明。
如图7所示,其中的寄存器为676位寄存器,其可以为图6中的寄存器502,相应地选择器也可以为图6中的选择器551;至于寄存器503和选择器552的工作情况类似,在此不赘述。
具体地,在周期1,将起始地址的数据存入寄存器,此时第一个系数a0位于寄存器[624:612]的位置。在周期2,第二个系数a1则移动到了寄存器[573:561]的位置,以此类推。在数据加载过程中,将12个固定位置(如,[624:612]、[573:561])的数据输入选择器,再根据当前执行周期数选择对应的系数输出到后续的单元中,例如,在周期1,将[624:612]位置上的a0输出,在周期2,将[573:561]位置上的a1输出,从而便可以实现数据加载与系数处理同步进行。在第13个周期,寄存器已填满,之后停止从存储器中读取数据,固定从寄存器的最低13位读系数,直到当前寄存器中的系数全部处理完毕,开始下一轮数据的读取。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于Karatsuba算法的多项式乘法器,用于执行后量子密码Saber算法中的多项式乘法操作,其特征在于,包括:
第一存储模块,用于存储第一多项式系数和第二多项式系数,其中所述第一多项式系数包括:第1至第256阶系数b0至b255,第二多项式系数包括:第1至第256阶系数a0至a255;
第一计算模块,用于根据所述第一和第二多项式系数,计算-B1、B0+B1、B0-B1和A0+A1,其中,B0包括b0至b127,B1包括b128至b255,A0包括a0至a127,A1包括a128至a255;
多项式乘法模块,包括:384个并行的乘法单元,其中所述乘法单元每3个为一组,每组中的三个乘法单元分别用于计算:P1=-B1*(A0+A1)、P2=(B0+B1)*A0和P3=(B0-B1)*A1;
第二计算模块,用于根据所述多项式乘法模块的结果,计算C0=P2+P1,C1=P3-P1;以及
第二存储模块,用于存储C0和C1,其中C0和C1为对所述第一和第二多项式系数执行多项式乘法操作所产生的结果数据。
2.如权利要求1所述的多项式乘法器,其特征在于,所述第一多项式系数中各系数的位宽为4位,所述第二多项式系数中各系数的位宽为13位,所述第一存储模块,具体用于从位宽为64位的存储器中读取所述第二多项式系数并缓存。
3.如权利要求2所述的多项式乘法器,其特征在于,所述第一存储模块,包括:第一寄存器,用于存储b0至b255;第二寄存器,用于存储a0至a127;
以及第三寄存器,用于存储a128至a255。
4.如权利要求3所述的多项式乘法器,其特征在于,还包括:第一选择器和第二选择器,所述第一选择器和第二选择器分别与所述第二寄存器和第三寄存器连接,分别用于从所述第二寄存器和第三寄存器选择系数输出至所述第二计算模块。
5.如权利要求4所述的多项式乘法器,其特征在于,所述第二和第三寄存器均为676位。
6.如权利要求1所述的多项式乘法器,其特征在于,所述第一计算模块包括:第一加法器,用于计算B0+B1;第二加法器,用于计算A0+A1;第一减法器,用于计算-B1;以及第二减法器,用于计算B0-B1。
7.如权利要求1所述的多项式乘法器,其特征在于,所述第二计算模块包括:第一累加单元,用于计算C0=P2+P1;以及第二累加单元,用于计算C1=P3-P1。
8.如权利要求1所述的多项式乘法器,其特征在于,所述第二存储模块包括:第四寄存器,用于存储C0;和第五寄存器,用于存储C1。
9.如权利要求1所述的多项式乘法器,其特征在于,所述多项式乘法模块由数字信号处理电路实现。
10.一种用于实现后量子密码Saber算法的处理器,所述处理器由硬件实现,其特征在于,所述处理器包括:
存储模块;
功能模块,用于执行后量子密码Saber算法涉及的操作,且所述功能模块包括以下子模块:第三代安全散列算法SHA3子模块、二进制采样子模块、多项式乘法器、加解密子模块、验证子模块和数据位宽转换子模块;以及
控制模块,用于根据所述存储模块中存储的指令,控制所述功能模块中的各子模块执行对应的操作,以实现所述后量子密码Saber算法中的密钥生成、密钥封装和密钥解封中的至少一个;
其中,所述多项式乘法器为权利要求1至9中任一项所述的多项式乘法器。
CN202210008507.6A 2022-01-05 2022-01-05 多项式乘法器及具有该乘法器的处理器 Active CN114371828B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210008507.6A CN114371828B (zh) 2022-01-05 2022-01-05 多项式乘法器及具有该乘法器的处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210008507.6A CN114371828B (zh) 2022-01-05 2022-01-05 多项式乘法器及具有该乘法器的处理器

Publications (2)

Publication Number Publication Date
CN114371828A true CN114371828A (zh) 2022-04-19
CN114371828B CN114371828B (zh) 2024-07-26

Family

ID=81142868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210008507.6A Active CN114371828B (zh) 2022-01-05 2022-01-05 多项式乘法器及具有该乘法器的处理器

Country Status (1)

Country Link
CN (1) CN114371828B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115412241A (zh) * 2022-07-25 2022-11-29 华中科技大学 实现后量子密码算法Kyber和Saber的融合密码安全处理器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110106872A1 (en) * 2008-06-06 2011-05-05 William Hasenplaugh Method and apparatus for providing an area-efficient large unsigned integer multiplier
CN110224829A (zh) * 2019-06-14 2019-09-10 深圳职业技术学院 基于矩阵的后量子加密方法及装置
CN110647309A (zh) * 2019-09-29 2020-01-03 浙江大学 一种高速大位宽乘法器
EP3843321A1 (en) * 2019-12-24 2021-06-30 Koninklijke Philips N.V. Public/private key system with increased security
CN113179151A (zh) * 2021-03-24 2021-07-27 中国科学院信息工程研究所 一种后量子密码构造中环上舍入学习的通用软件实现方法
CN113472525A (zh) * 2021-06-24 2021-10-01 南京航空航天大学 基于后量子密码Saber算法的低内存占用实现技术

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110106872A1 (en) * 2008-06-06 2011-05-05 William Hasenplaugh Method and apparatus for providing an area-efficient large unsigned integer multiplier
CN110224829A (zh) * 2019-06-14 2019-09-10 深圳职业技术学院 基于矩阵的后量子加密方法及装置
CN110647309A (zh) * 2019-09-29 2020-01-03 浙江大学 一种高速大位宽乘法器
EP3843321A1 (en) * 2019-12-24 2021-06-30 Koninklijke Philips N.V. Public/private key system with increased security
CN113179151A (zh) * 2021-03-24 2021-07-27 中国科学院信息工程研究所 一种后量子密码构造中环上舍入学习的通用软件实现方法
CN113472525A (zh) * 2021-06-24 2021-10-01 南京航空航天大学 基于后量子密码Saber算法的低内存占用实现技术

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
羊红光;黄世中;张利民;: "基于Karatsuba递归思想的Montgomery模乘算法", 微型机与应用, no. 16, 25 August 2010 (2010-08-25) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115412241A (zh) * 2022-07-25 2022-11-29 华中科技大学 实现后量子密码算法Kyber和Saber的融合密码安全处理器
CN115412241B (zh) * 2022-07-25 2024-02-06 华中科技大学 实现后量子密码算法Kyber和Saber的融合密码安全处理器

Also Published As

Publication number Publication date
CN114371828B (zh) 2024-07-26

Similar Documents

Publication Publication Date Title
Liu et al. IoT-NUMS: evaluating NUMS elliptic curve cryptography for IoT platforms
CN102231102B (zh) 基于余数系统的rsa密码处理方法及协处理器
WO2020172234A1 (en) Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques
CN111512292A (zh) 用于可配置空间加速器中的非结构化数据流的装置、方法和系统
CN114371829B (zh) 多项式乘法器中的数据处理方法、多项式乘法器及处理器
US8020142B2 (en) Hardware accelerator
Yang et al. Poseidon: Practical homomorphic encryption accelerator
US20060059221A1 (en) Multiply instructions for modular exponentiation
JP2009282992A (ja) 多項式演算オペレーション
CN114154640A (zh) 用于实现后量子密码Saber算法的处理器
CN110704109B (zh) 一种椭圆曲线密码协处理器
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
CN114371828B (zh) 多项式乘法器及具有该乘法器的处理器
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
Cheng et al. A High-Performance, Conflict-Free Memory-Access Architecture for Modular Polynomial Multiplication
Bie et al. An energy-efficient reconfigurable asymmetric modular cryptographic operation unit for RSA and ECC
KR100481586B1 (ko) 모듈러 곱셈 장치
JP2000207387A (ja) 演算装置及び暗号処理装置
US5948051A (en) Device improving the processing speed of a modular arithmetic coprocessor
Zhu et al. Compact GF (2) systemizer and optimized constant-time hardware sorters for key generation in Classic Mceliece
Großschädl et al. Architectural enhancements to support digital signal processing and public-key cryptography
Fischer et al. Scalable rsa processor in reconfigurable hardware-A soc building block
CN118394351B (zh) 智能合约的编译方法、装置、终端设备及存储介质
CN115037485B (zh) 轻量级认证加密算法的实现方法、装置及设备
US20240223367A1 (en) Loop array mapping method of shared balance operator based on reconfigurable cryptographic algorithm

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
GR01 Patent grant
GR01 Patent grant