CN114895870A - 基于fpga实现的高效可重构sm2点乘方法及系统 - Google Patents

基于fpga实现的高效可重构sm2点乘方法及系统 Download PDF

Info

Publication number
CN114895870A
CN114895870A CN202210472722.1A CN202210472722A CN114895870A CN 114895870 A CN114895870 A CN 114895870A CN 202210472722 A CN202210472722 A CN 202210472722A CN 114895870 A CN114895870 A CN 114895870A
Authority
CN
China
Prior art keywords
register
result
multiplication
value
module
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
CN202210472722.1A
Other languages
English (en)
Other versions
CN114895870B (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.)
93216 Troops Of Chinese Pla
Hangzhou Dianzi University
Original Assignee
93216 Troops Of Chinese Pla
Hangzhou Dianzi 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 93216 Troops Of Chinese Pla, Hangzhou Dianzi University filed Critical 93216 Troops Of Chinese Pla
Priority to CN202210472722.1A priority Critical patent/CN114895870B/zh
Publication of CN114895870A publication Critical patent/CN114895870A/zh
Application granted granted Critical
Publication of CN114895870B publication Critical patent/CN114895870B/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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)

Abstract

本发明属于信息安全技术领域,具体涉及基于FPGA实现的高效可重构SM2点乘方法及系统。本发明设计了一种新的基于蒙哥马利方法的硬件模乘模块,所述模乘模块在具有较低的资源占用的同时,还能提供更快的执行速度和更高的系统安全性;本发明改进的点乘调度模块是基于所提出的硬件模乘模块,通过预计算和改变计算顺序,最大程度上压缩了数据的依赖路径,减少了运算资源不必要的空闲时钟,提高了执行速度。本发明具体在保证较低资源量的同时,还能提供更快的执行速度和更高的系统安全性的特点。

Description

基于FPGA实现的高效可重构SM2点乘方法及系统
技术领域
本发明属于信息安全技术领域,具体涉及基于FPGA实现的高效可重构SM2点乘方法及系统。
背景技术
近年来,随着计算机和网络技术的发展,电子商务、电子政务、移动支付等活动越来越多,网络的安全和保密性显得尤为重要,且这些网络活动必须保证通信过程中信息传输的真实性、机密性、完整性和不可否认性,从而实现信息的安全可靠传输,因此其安全问题也越来越受到人们的重视。
为实现信息的安全保密,核心手段是利用密码技术加密和保护重要信息。传统的对称密码体制采用相同的密钥对信息进行加解密,其安全性依赖于密钥保护和加密算法的强度,具有简单、高效和资源占用小的优点;但存在密钥分发和管理难、且无法实现某些特定环境下的加密应用。为解决传统对称密码体制的问题,1976年,迪菲(Diffe)和赫尔曼(Hellman)提出了公钥密码的概念。在该体制中,分别利用公钥和私钥对信息进行加密和解密。公钥密码算法相较于传统的对称密码算法,其优点是安全性高,并且可以被用于实现数字签名、密钥交换等场景。缺点是加密速度比分组密码慢很多,且资源占用往往很高,所以学者一直在研究如何提升公钥密码算法实现的性能。
目前,FPGA由于其硬件安全性高、执行速度快、灵活性高等特点,在作为公钥加密算法应用载体上越来越受欢迎。国际上,公钥密码算法主要有两种,一种是RSA,另外一种就是椭圆曲线密码ECC(Elliptic Curve Cryptography)。SM2公钥密码算法是我国对国际ECC公钥密码算法的继承与发展,于2010年发布,属于完全自主设计的加密算法。相较于同为公钥密码算法的ECC,在保证相同的安全性的情况下,SM2执行数学运算的位数更小,因此在资源占用上更具有优势。SM2即使降低了一定的资源占用,但相较于传统对称加密算法,在硬件上的资源增量依旧不可忽视。
因此,设计一种在保证较低资源量的同时,还能提供更快的执行速度和更高的系统安全性,可以被用于在FPGA上实现SM2数字签名、密钥交换实际应用的基于FPGA实现的高效可重构SM2点乘方法及系统,就显得十分重要。
例如,申请号为CN201710625981.2的中国专利文献描述的基于单向和公钥加密算法的密码加密方法与系统,包括:获取用户的登录密码,首先调用哈希算法进行加密,输出新的字符串;其次,调用公钥加密算法利用公钥对新的字符串进行加密,输出密码的密文,传送给后台,后台接受到该密文时,首先调用相同的公钥加密算法利用私钥对密文进行解密,输出一个字符串;最后,哈希算法生成一个随机盐值,并和输出的字符串进行组合,调用哈希加密算法进行哈希,输出新的密文,将该密文存储到数据库中。虽然能够保证用户的登录密码在传输和存储过程中的安全,但是其缺点在于,仍然存在加密速度缓慢且资源占用高的问题。
发明内容
本发明是为了克服现有技术中,传统对称加密算法存在加密速度缓慢且资源占用高的问题,提供了一种在保证较低资源量的同时,还能提供更快的执行速度和更高的系统安全性,可以被用于在FPGA上实现SM2数字签名、密钥交换实际应用的基于FPGA实现的高效可重构SM2点乘方法及系统。
为了达到上述发明目的,本发明采用以下技术方案:
基于FPGA实现的高效可重构SM2点乘方法,包括如下步骤:
S1,对设定的随机数K和椭圆曲线参数点分别进行扫描和转换处理,获得随机数K的比特信息以及将椭圆曲线参数点转换至蒙哥马利域并进行初始化运算;
S2,根据随机数K的比特信息,通过循环模乘和模加减的方式,对转换至蒙哥马利域并进行初始化运算后的椭圆曲线参数点执行倍点和点加减操作,并获得对应的椭圆曲线参数点计算结果;
S3,将步骤S2获得的椭圆曲线参数点计算结果,通过模乘和模加减的方式,变换至射影坐标系,同时再通过模逆方式转换至仿射坐标系,最后再通过模乘方式将椭圆曲线参数点从蒙哥马利域转换至普通域,并将结果输出。
步骤S1包括如下步骤:
S11,返回随机数K二进制形式,并获得首位非零比特数据位置信息;
S12,读取设定的椭圆曲线参数点信息,包括基本点Gx和Gy、曲线参数a和b;
S13,判断读取的椭圆曲线参数点信息是否更改,若否,则直接进入步骤S2;若是,则重新计算椭圆曲线参数点在射影坐标系下的值,并转化至蒙哥马利域后进行存放;
其中,所需初始化的椭圆曲线参数包括X1=4xy2、X2=(x2-a)2-8bx、M=4y2、M2=M2、A=aM2、B=4bM、G=Gx、U1=2X2、U2=4X2、Xt=X2 2
步骤S2包括如下步骤:
S21,计算X1与X1相乘以及计算X1与X2相减;待并行执行模块PEM1循环第一部分计算结束后,再计算X1与X2相减结果的平方,并将结果存放至T寄存器;计算Xt与A相加,并将结果存放至tp3寄存器;待并行执行模块PEM2循环第一部分计算结束后,再计算B与M2相乘,并将结果更新至B寄存器;计算Xt+Xt+Xt+A的值,并将结果存放至tp1寄存器;计算X1与X2相加,并将结果存放至tp2寄存器;计算tp3寄存器内的值与A相加的结果;
S22,待步骤S21中PEM1所有循环结束后,计算U2与tp3寄存器内的值相乘;待PEM1循环第一部分计算结束后,计算tp1寄存器内的值的平方,并将结果更新至tp1寄存器内;计算X1的平方+A+tp3寄存器内的值-T寄存器内的值的结果,并待PEM2循环第一部分计算结束后,计算tp2寄存器内的值与所述X1的平方+A+tp3寄存器内的值-T寄存器内的值的结果相乘,得到结果J1;
S23,待步骤S22中PEM1所有循环结束后,将所述U2与tp3寄存器内的值相乘结果与B相加,并将结果存放至S寄存器;将T寄存器内的值与S寄存器内的值相乘,获得结果K1,并将结果K1更新至M寄存器;待PEM1循环第一部分计算结束后,计算U1与S寄存器内的值相乘;待PEM2循环第一部分计算结束后,计算G寄存器内的值与M寄存器内的值相乘,并将结果更新至G寄存器内;计算B寄存器内的值与结果J1相加,得到结果J2;
S24,待步骤S23中PEM1所有循环结束后,计算M寄存器内的值的平方,并将结果更新至M2寄存器;待PEM1循环第一部分计算结束后,将S寄存器内的值与结果J2相乘,获得结果J3以及将tp1寄存器内的值与结果K1进行相减,获得结果K2;待PEM2循环第一部分计算结束后,计算T寄存器内的值与结果K2相乘,并将结果更新至X2寄存器;
S25,待步骤S24中PEM1所有循环结束后,计算曲线参数a与M2寄存器内的值相乘,并将结果更新至A寄存器;待PEM1循环第一部分计算结束后,计算B寄存器内的值与M寄存器内的值相乘,并将结果更新至B寄存器;将结果J3与G寄存器内的值相减,并将结果更新至X1寄存器;待PEM2循环第一部分计算结束后,判断随机数K的下一比特是否为1;若为1,则计算X1与X1相乘,并将结果更新至Xt寄存器,同时计算X1与X1相加,并将结果更新至U1寄存器,再计算2X1与2X1相加,并将结果更新至U2寄存器;若否,则计算X2与X2相乘,并将结果更新至Xt寄存器,同时计算X2与X2相加,并将结果更新至U1寄存器,再计算2X2与2X2相加,并将结果更新至U2寄存器。
作为优选,步骤S3包括如下步骤:
S31,读取步骤S2生成的椭圆曲线参数点信息,利用循环生成的最后一轮椭圆曲线参数点信息,通过模乘和模加减的方式,变换至射影坐标系,同时再通过模逆方式转换至仿射坐标系,最后再通过模乘方式将椭圆曲线参数点从蒙哥马利域转换至普通域,并发送至输出缓存区,完成一次点乘计算。
作为优选,步骤S2中所示循环模乘方式包括如下步骤:
S201,数据输入包括三次模乘法所需的三对输入A1和B1、A2和B2、A3和B3,基于模数所得的蒙哥马利参数q和模数p;
S202,数据输出为蒙哥马利模乘的结果OUT;
其中,内部计算参数包括C1、C2、C3、C4、bq1、bq2、bq3、t1、t2、t3、t4、z1、z2、z3
S203,设定处理数据位宽为256位,分组长度r为29bit,分组数m为9,数据输入在内部被分组为B1(b18,b17,b16,b15,b14,b13,b12,b11,b10)、A1(a18,a17,a16,a15,a14,a13,a12,a11,a10)、B2(b28,b27,b26,b25,b24,b23,b22,b21,b20)、A2(a28,a27,a26,a25,a24,a23,a22,a21,a20)、B3(b38,b37,b36,b35,b34,b33,b32,b31,b30)、A3(a38,a37,a36,a35,a34,a33,a32,a31,a30);
S204,采用PEM处理计算模乘的分步运算,包括如下运算过程:
分步1,计算bi0与q相乘,i=1,2,3;
分步2,计算ci0与q相乘、ai0与bqi相乘以及两者结果的和,i=1,2,3;
分步3,计算ai0与bij相乘,tk与pj相乘以及两者结果与ckj和zk的加法,i=1,2,3、j=0,1,2,3,4,5,6,7,8、k=1,2,3。
本发明还提供了基于FPGA实现的高效可重构SM2点乘系统,包括:
数据扫描模块,用于对设定的随机数K进行扫描,获得随机数K的比特信息;
数据转换模块,用于对椭圆曲线参数点进行转换处理,将椭圆曲线参数点转换至蒙哥马利域并进行初始化运算;
模乘模块,用于将两个参数点相乘;
模加减模块,用于将两个参数点相加和相减;
点乘调度模块,用于根据随机数K的比特信息,循环调用模乘模块和模加减模块执行倍点和点加减操作;
模逆模块,用于将射影坐标系的椭圆曲线参数点,转换至仿射坐标系的椭圆曲线参数点。
作为优选,所述模逆模块包括两个并行运算的模加减模块;其中一个模加减模块,与点乘调度模块共享。
作为优选,所述模乘模块包括3个并行执行模块PEM;所述PEM用于处理计算模乘的分步运算,采用多级流水线并行结构,包括乘法器并行阵列、压缩单元以及由超前进位链实现的行波进位加法器;所述乘法器包括数字信号处理DSP或查找表LUTs。
作为优选,所述模乘模块内部还设有寄存器组;所述寄存器组分为共享寄存器组和私有寄存器组;所述共享寄存器组供所有PEM访问;所述私有寄存器组供对应的PEM访问。
本发明与现有技术相比,有益效果是:(1)本发明设计了一种新的基于蒙哥马利方法的硬件模乘模块,所述模乘模块在具有较低的资源占用的同时,运行速度上也具有一定的优势;(2)本发明改进的点乘调度模块是基于所提出的硬件模乘模块,通过预计算和改变计算顺序,最大程度上压缩了数据的依赖路径,减少了运算资源不必要的空闲时钟,提高了执行速度;(3)本发明架构具有很高的可重构性,支持多种运算位长,如256位/384位/512位,同时,本发明是针对通用素数进行优化设计的,而非某些长度下的某一特定素数,因此在实际应用中对椭圆曲线参数选择上十分灵活。
附图说明
图1为本发明中基于FPGA实现的高效可重构SM2点乘系统的一种原理框图;
图2为本发明中点乘调度模块内部数据处理关系的一种示意图;
图3为本发明中模乘模块的一种结构示意图;
图4为本发明中模加减模块的一种执行流程图;
图5为本发明中模加减模块的一种结构示意图;
图6为本发明实施例所提供的模乘过程中单个PEM执行过程算法的一种程序代码图。
图中:数据扫描模块1、数据转换模块2、模乘模块3、模加减模块4、点乘调度模块5、模逆模块6。
具体实施方式
为了更清楚地说明本发明实施例,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
实施例:
本发明基于FPGA实现的高效可重构SM2点乘方法,包括如下步骤:
S1,对设定的随机数K和椭圆曲线参数点分别进行扫描和转换处理,获得随机数K的比特信息以及将椭圆曲线参数点转换至蒙哥马利域并进行初始化运算;
S2,根据随机数K的比特信息,通过循环模乘和模加减的方式,对转换至蒙哥马利域并进行初始化运算后的椭圆曲线参数点执行倍点和点加减操作,并获得对应的椭圆曲线参数点计算结果;
S3,将步骤S2获得的椭圆曲线参数点计算结果,通过模乘和模加减的方式,变换至射影坐标系,同时再通过模逆方式转换至仿射坐标系,最后再通过模乘方式将椭圆曲线参数点从蒙哥马利域转换至普通域,并将结果输出。
本发明所提出的基于FPGA实现的改进蒙哥马利模乘模块,其数据输入包括三次模乘法所需的三对输入A1和B1、A2和B2、A3和B3,基于模数所得的蒙哥马利参数q和模数p;数据输出为蒙哥马利模乘的结果OUT;内部计算参数包括C1、C2、C3、C4、bq1、bq2、bq3、t1、t2、t3、t4、z1、z2、z3等。设定其处理数据位宽为256位,由于分组长度r为29bit,则分组数m为9,因此其数据输入在内部被分组为B1(b18,b17,b16,b15,b14,b13,b12,b11,b10)、A1(a18,a17,a16,a15,a14,a13,a12,a11,a10)、B2(b28,b27,b26,b25,b24,b23,b22,b21,b20)、A2(a28,a27,a26,a25,a24,a23,a22,a21,a20)、B3(b38,b37,b36,b35,b34,b33,b32,b31,b30)、A3(a38,a37,a36,a35,a34,a33,a32,a31,a30),其余参数如p和C1、C2、C3、C4也按上述规则分组。数据输入被拆分为多组进行迭代运算,能同时计算三个模乘。其模块内部的硬件FPGA实现包括三个PEM(并行执行模块)以及相关的控制逻辑。模乘模块内部的寄存器组分为共享寄存器组(share registers)和私有寄存器组(private registers),对于共享寄存器组,所有PEM均可以访问;对于私有寄存器,仅其对应的PEM可以访问。
PEM用于处理计算模乘的分步运算,其硬件结构为多级流水线并行结构,由乘法器(可以由数字信号处理单元(DSP)或查找表LUTs实现)并行阵列、压缩单元以及由超前进位链实现的行波进位加法器构成。在执行不同参数的计算时,其关键路径存在差异,分为三种情况:(1)计算bi0与q相乘(i=1,2,3);(2)计算ci0与q相乘、ai0与bqi相乘以及两者结果的和(i=1,2,3);(3)计算ai0与bij相乘,tk与pj相乘以及结果与ckj和zk的加法(i=1,2,3、j=0,1,2,3,4,5,6,7,8、k=1,2,3)。具体过程如下:
当PEM内部计算bi0与q相乘(i=1,2,3)时,为2级流水线,此时第一级流水线由12个并行执行的乘法器构成;第二级流水线由4-2压缩电路和行波进位加法器构成。
当PEM内部计算ci0与q相乘、ai0与bqi相乘以及两者结果的和(i=1,2,3)时,或当PEM内部计算ai0与bij相乘,tk与pj相乘以及结果与ckj和zk的加法(i=1,2,3、j=0,1,2,3,4,5,6,7,8、k=1,2,3)时,为3级流水线,第一级流水线为12个并行执行的乘法器;第二级流水线由9-2压缩电路构成;第三级流水线由一个3-2压缩电路和一个行波进位加法器构成。
模乘运算硬件单元内部的多个PEM之间的协作执行关系如以下步骤所示:
步骤1,PEM1执行B1最低的r位b10与q相乘,并将结果写入共享寄存器组bq1;7个时钟后,PEM2执行B2最低的r位b20与q相乘,并将结果写入共享寄存器组bq2;7个时钟后,PEM3执行B3最低的r位b30与q相乘,并将结果写入共享寄存器组bq3
步骤2,待步骤1的PEM1计算结束后,PEM1开始同时执行c10与q相乘、a10与bq1相乘并计算两者的和,其结果写入共享寄存器组tp1;待步骤1的PEM2计算结束后,PEM2开始同时执行c20与q相乘、a20与bq2相乘并计算两者的和,其结果写入共享寄存器组tp2;待步骤1的PEM3计算结束后,PEM3开始同时执行c30与q相乘、a30与bq3相乘并计算两者的和,其结果写入共享寄存器组tp3
步骤3,t1寄存器更新tp1寄存器的值,PEM1循环执行a10与b1i相乘,t1与pi相乘以及结果与c1i和z1的加法(i=0,1,2,3,4,5,6,7,8),即A1最低位的一个分组与B1的运算,每次得到的结果S的低r位写入共享寄存器组c2i,高r+1位写入PEM1的私有寄存器组z1;此外,当待处理的分组标识i等于流水线级数加1,即4时,此时c20结果已更新,PEM1该轮次不再执行a10与b1i相乘,t1与pi相乘以及结果与c1i和z1的加法,而是改为执行c20与q相乘、a11与bq1相乘,该结果写入共享寄存器组t2,并将tp2的值赋给t1寄存器。
步骤4,当步骤3中PEM1的i等于流水线级数加1情况的计算结束后,PEM1继续执行a10与b1i相乘,t1与pi相乘以及结果与c1i和z1的加法,PEM2开始执行a11与b1j相乘,t2与pj相乘以及结果与c2j和z2的加法(j=0,1,2,3,4,5,6,7,8),即A1第二个分组与B1的运算,每次得到的结果S的低r位写入共享寄存器组c3j,高r+1位写入PEM2的私有寄存器组z2;同样,当待处理的分组标识j等于流水线级数加1时,PEM2该轮次改为执行c30与q相乘、a12与bq1相乘,该结果写入共享寄存器组t3。当PEM2上述计算结束后,PEM3开始执行a12与b1k相乘,t3与pk相乘以及结果与c3k和z3的加法(k=0,1,2,3,4,5,6,7,8),即A1第三个分组与B1的运算。
步骤5,当PEM1执行完a10与b1i相乘,t1与pi相乘以及结果与c1i和z1的加法后,将tp2的值赋给t1寄存器,开始循环执行a20与b2i相乘,t1与pi相乘以及与c1i和z1的加法,即A2最低位的一个分组与B2的运算,每次得到的结果S的低r位写入共享寄存器组c2i,高r+1位写入PEM1的私有寄存器组z1。PEM2、PEM3也同样如此,上述循环结束,PEM2开始执行a21与b2j相乘,t2与pj相乘以及与c2j和z2的加法;PEM3开始执行a22与b2k相乘,t3与pk相乘以及与c3k和z3的加法。
步骤6,3个PEM开始并行计算三个模乘法的前三个低位分组。当相应模乘输入的前三分组全部计算结束,待PEM1空闲后,开始计算三个模乘法的下三个分组:即PEM1处理aj3(j=1,2,3)与bji(i=0,1,2,3,4,5,6,7,8)相乘,t1与pi相乘以及结果与c1i和z1的加法;PEM2处理aj4(j=1,2,3)与bji(i=0,1,2,3,4,5,6,7,8)相乘,t2与pi相乘以及结果与c2i和z2的加法;PEM3处理aj5(j=1,2,3)与bji(i=0,1,2,3,4,5,6,7,8)相乘,t3与pi相乘以及结果与c3i和z3的加法。其过程调度与步骤3,4,5相同,仅计算的输入分组不同。最后的结果为PEM3执行每个模乘的最后一个分组所得到的C4寄存器组中的值,即处理aj8(j=1,2,3)与bji(i=0,1,2,3,4,5,6,7,8)相乘,t3与pi相乘以及结果与c3i和z3的加法所求得的结果。
模乘模块不需要等待所有模乘计算结束,只需等待第一个模乘输入全部分组计算结束,即可接受第四个模乘,依次类推。
模乘过程中单个PEM执行过程如图6所示,图6中对于PEM1,i=1;对于PEM2,i=2;对于PEM3,i=3。
进一步的,步骤S1包括如下步骤:
S11,返回随机数K二进制形式,并获得首位非零比特数据位置信息;
S12,读取设定的椭圆曲线参数点信息,包括基本点Gx和Gy、曲线参数a和b;
S13,判断读取的椭圆曲线参数点信息是否更改,若否,则直接进入步骤S2;若是,则重新计算椭圆曲线参数点在射影坐标系下的值,并转化至蒙哥马利域后进行存放;
其中,所需初始化的椭圆曲线参数包括X1=4xy2、X2=(x2-a)2-8bx、M=4y2、M2=M2、A=aM2、B=4bM、G=Gx、U1=2X2、U2=4X2、Xt=X2 2。所有参数被存放至寄存器或BRAM中。X1、X2、M、M2、A、B、G、U1、U2、Xt均表示寄存器。参数a具体表示为椭圆曲线的长半轴,参数b具体表示为椭圆曲线的短半轴;x和y则表示椭圆曲线上各个点的横纵坐标数值。
步骤S1中,数据扫描模块被配置为处理点乘中的随机数参数K,返回该数二进制形式的首位非零比特数据位置信息。如K为7,则返回随机数K的首位非零比特数据位为3。随机数K的比特数长度支持256位以内。
数据转换模块具体有变换与反变换两种模式,在步骤S1中执行的是变换操作。
步骤S2中,点乘调度模块被配置为控制模乘模块和模加减模块计算点乘过程中每一轮次的参数值。在本实施例中,K为7,则该点乘调度模块共执行3次。如图2所示,本发明所提出的改进点乘调度,其每次循环执行过程包括以下步骤:
S21,计算X1与X1相乘以及计算X1与X2相减;待并行执行模块PEM1循环第一部分计算结束后(即PEM1循环执行aj0与b1i相乘,tj与pi相乘以及结果与cji和zj的加法的计算操作),再计算X1与X2相减结果的平方,并将结果存放至T寄存器;计算Xt与A相加,并将结果存放至tp3寄存器;待并行执行模块PEM2循环第一部分计算结束后,再计算B与M2相乘,并将结果更新至B寄存器;计算Xt+Xt+Xt+A的值,并将结果存放至tp1寄存器;计算X1与X2相加,并将结果存放至tp2寄存器;计算tp3寄存器内的值与A相加的结果;
S22,待步骤S21中PEM1所有循环结束后,计算U2与tp3寄存器内的值相乘;待PEM1循环第一部分计算结束后,计算tp1寄存器内的值的平方,并将结果更新至tp1寄存器内;计算X1的平方+A+tp3寄存器内的值-T寄存器内的值的结果,并待PEM2循环第一部分计算结束后,计算tp2寄存器内的值与所述X1的平方+A+tp3寄存器内的值-T寄存器内的值的结果相乘,得到结果J1;
S23,待步骤S22中PEM1所有循环结束后,将所述U2与tp3寄存器内的值相乘结果与B相加,并将结果存放至S寄存器;将T寄存器内的值与S寄存器内的值相乘,获得结果K1,并将结果K1更新至M寄存器;待PEM1循环第一部分计算结束后,计算U1与S寄存器内的值相乘;待PEM2循环第一部分计算结束后,计算G寄存器内的值与M寄存器内的值相乘,并将结果更新至G寄存器内;计算B寄存器内的值与结果J1相加,得到结果J2;
S24,待步骤S23中PEM1所有循环结束后,计算M寄存器内的值的平方,并将结果更新至M2寄存器;待PEM1循环第一部分计算结束后,将S寄存器内的值与结果J2相乘,获得结果J3以及将tp1寄存器内的值与结果K1进行相减,获得结果K2;待PEM2循环第一部分计算结束后,计算T寄存器内的值与结果K2相乘,并将结果更新至X2寄存器;
S25,待步骤S24中PEM1所有循环结束后,计算曲线参数a与M2寄存器内的值相乘,并将结果更新至A寄存器;待PEM1循环第一部分计算结束后,计算B寄存器内的值与M寄存器内的值相乘,并将结果更新至B寄存器;将结果J3与G寄存器内的值相减,并将结果更新至X1寄存器;待PEM2循环第一部分计算结束后,判断随机数K的下一比特是否为1;若为1,则计算X1与X1相乘,并将结果更新至Xt寄存器,同时计算X1与X1相加,并将结果更新至U1寄存器,再计算2X1与2X1相加,并将结果更新至U2寄存器;若否,则计算X2与X2相乘,并将结果更新至Xt寄存器,同时计算X2与X2相加,并将结果更新至U1寄存器,再计算2X2与2X2相加,并将结果更新至U2寄存器。
经过上述步骤,1比特位的点乘运算结束,基于随机数K的所有比特位信息,循环执行相应次数。
其中,图2点乘调度过程中所涉及模乘法器和模加减器均只有一个,图2中所展示模乘符号的三个输出在硬件实现上实际是由一个输出端口在不同时刻下依次输出的,即对应图3中的OUT。同时由于模乘单元的p和q,如图3所示,在点乘调度过程中是固定的,因此在图2的模乘模块输入中并未展示。每个Level以模乘模块的六个输入全部刷新结束为区分,同时每个Level之间存在若干个模加减操作,均是由一个模加减器反复执行得出的。
如图3所示,模乘模块用于计算模乘结果,即C=A×B mod p。在本实施例的架构中,采用蒙哥马利模乘方法实现的所需的模乘模块,改进的蒙哥马利模乘模块的硬件结构如图3所示。
模乘运算硬件模块执行步骤如下所示:
步骤1,PEM1执行B1最低的r位b10与q相乘,并将结果写入共享寄存器组bq1;7个时钟后,PEM2执行B2最低的r位b20与q相乘,并将结果写入共享寄存器组bq2;7个时钟后,PEM3执行B3最低的r位b30与q相乘,并将结果写入共享寄存器组bq3
步骤2,待步骤1的PEM1计算结束后,PEM1开始同时执行c10与q相乘、a10与bq1相乘并计算两者的和,其结果写入共享寄存器组tp1;待步骤1的PEM2计算结束后,PEM2开始同时执行c20与q相乘、a20与bq2相乘并计算两者的和,其结果写入共享寄存器组tp2;待步骤1的PEM3计算结束后,PEM3开始同时执行c30与q相乘、a30与bq3相乘并计算两者的和,其结果写入共享寄存器组tp3
步骤3,t1寄存器更新tp1寄存器的值,PEM1循环执行a10与b1i相乘,t1与pi相乘以及结果与c1i和z1的加法(i=0,1,2,3,4,5,6,7,8),即A1最低位的一个分组与B1的运算,每次得到的结果S的低r位写入共享寄存器组c2i,高r+1位写入PEM1的私有寄存器组z1;此外,当待处理的分组标识i等于流水线级数加1,即4时,此时c20结果已更新,PEM1该轮次不再执行a10与b1i相乘,t1与pi相乘以及结果与c1i和z1的加法,而是改为执行c20与q相乘、a11与bq1相乘,该结果写入共享寄存器组t2,并将tp2的值赋给t1寄存器。
步骤4,当步骤3中PEM1的i等于流水线级数加1情况的计算结束后,PEM1继续执行a10与b1i相乘,t1与pi相乘以及结果与c1i和z1的加法,PEM2开始执行a11与b1j相乘,t2与pj相乘以及结果与c2j和z2的加法(j=0,1,2,3,4,5,6,7,8),即A1第二个分组与B1的运算,每次得到的结果S的低r位写入共享寄存器组c3j,高r+1位写入PEM2的私有寄存器组z2;同样,当待处理的分组标识j等于流水线级数加1时,PEM2该轮次改为执行c30与q相乘、a12与bq1相乘,该结果写入共享寄存器组t3。当PEM2上述计算结束后,PEM3开始执行a12与b1k相乘,t3与pk相乘以及结果与c3k和z3的加法(k=0,1,2,3,4,5,6,7,8),即A1第三个分组与B1的运算。
步骤5,当PEM1执行完a10与b1i相乘,t1与pi相乘以及结果与c1i和z1的加法后,将tp2的值赋给t1寄存器,开始循环执行a20与b2i相乘,t1与pi相乘以及与c1i和z1的加法,即A2最低位的一个分组与B2的运算,每次得到的结果S的低r位写入共享寄存器组c2i,高r+1位写入PEM1的私有寄存器组z1。PEM2、PEM3也同样如此,上述循环结束,PEM2开始执行a21与b2j相乘,t2与pj相乘以及与c2j和z2的加法;PEM3开始执行a22与b2k相乘,t3与pk相乘以及与c3k和z3的加法。
步骤6,3个PEM开始并行计算三个模乘法的前三个低位分组。当相应模乘输入的前三分组全部计算结束,待PEM1空闲后,开始计算三个模乘法的下三个分组:即PEM1处理aj3(j=1,2,3)与bji(i=0,1,2,3,4,5,6,7,8)相乘,t1与pi相乘以及结果与c1i和z1的加法;PEM2处理aj4(j=1,2,3)与bji(i=0,1,2,3,4,5,6,7,8)相乘,t2与pi相乘以及结果与c2i和z2的加法;PEM3处理aj5(j=1,2,3)与bji(i=0,1,2,3,4,5,6,7,8)相乘,t3与pi相乘以及结果与c3i和z3的加法。其过程调度与步骤3,4,5相同,仅计算的输入分组不同。最后的结果为PEM3执行每个模乘的最后一个分组所得到的C4寄存器组中的值,即处理aj8(j=1,2,3)与bji(i=0,1,2,3,4,5,6,7,8)相乘,t3与pi相乘以及结果与c3i和z3的加法所求得的结果。
本实施例展示的是256bit的模乘模块,因此采用的数据分组位数为r=29,分组数w=9。若重构为更高位数,则分组数也应增加。同时,单比特位的点乘运算需要执行15次模乘,由于模乘模块被设计为同时执行三个模乘,因此上述模乘模块运算过程需要执行5次,仅输入的数据不同。
模加减模块用于计算模加或模减结果,即C=A+B mod p或C=A-B mod p。如图4和图5所示,在本实施例的架构中,当mode为1时,执行模加运算;当mode为0时,执行模减运算。底层运算单元是一个带进位的128bit加法器。
如图5所示的模加减模块硬件结构示意图展示的是计算位宽为256bit时的结构,若重构成更高位数,则底层运算模块也应相应增加。
进一步的,步骤S3中,数据转换模块执行的是反变换操作。步骤S3还包括如下步骤:
S31,读取步骤S2生成的椭圆曲线参数点信息,利用循环生成的最后一轮椭圆曲线参数点信息,通过模乘和模加减的方式,变换至射影坐标系,同时再通过模逆方式转换至仿射坐标系,最后再通过模乘方式将椭圆曲线参数点从蒙哥马利域转换至普通域,并发送至输出缓存区,完成一次点乘计算。
基于本实施例,如图1所示,本发明还提供了基于FPGA实现的高效可重构SM2点乘系统,包括:
数据扫描模块1,用于对设定的随机数K进行扫描,获得随机数K的比特信息;
数据转换模块2,用于对椭圆曲线参数点进行转换处理,将椭圆曲线参数点转换至蒙哥马利域并进行初始化运算;
模乘模块3,用于将两个参数点相乘;
模加减模块4,用于将两个参数点相加和相减;
点乘调度模块5,用于根据随机数K的比特信息,循环调用模乘模块和模加减模块执行倍点和点加减操作;
模逆模块6,用于将射影坐标系的椭圆曲线参数点,转换至仿射坐标系的椭圆曲线参数点。
进一步的,所述模逆模块包括两个并行运算的模加减模块;其中一个模加减模块,与点乘调度模块共享。
模逆模块用于计算模逆结果,即C=A-1mod p。本实施例中采用蒙哥马利模逆算法实现所需的模逆模块。所示模逆模块需要两个并行运算的模加减模块,因此,除了模逆模块自身所含有的一个模加减模块,还会与点乘调度模块共享一个模加减模块。
另外,图1中的输入缓存区和输出缓存区并不是必须的。
本发明设计了一种新的基于蒙哥马利方法的硬件模乘模块,所述模乘模块在具有较低的资源占用的同时,运行速度上也具有一定的优势;本发明改进的点乘调度模块是基于所提出的硬件模乘模块,通过预计算和改变计算顺序,最大程度上压缩了数据的依赖路径,减少了运算资源不必要的空闲时钟,提高了执行速度;本发明架构具有很高的可重构性,支持多种运算位长,如256位/384位/512位,同时,本发明是针对通用素数进行优化设计的,而非某些长度下的某一特定素数,因此在实际应用中对椭圆曲线参数选择上十分灵活。
以上所述仅是对本发明的优选实施例及原理进行了详细说明,对本领域的普通技术人员而言,依据本发明提供的思想,在具体实施方式上会有改变之处,而这些改变也应视为本发明的保护范围。

Claims (7)

1.基于FPGA实现的高效可重构SM2点乘方法,其特征在于,包括如下步骤;
S1,对设定的随机数K和椭圆曲线参数点分别进行扫描和转换处理,获得随机数K的比特信息以及将椭圆曲线参数点转换至蒙哥马利域并进行初始化运算;
S2,根据随机数K的比特信息,通过循环模乘和模加减的方式,对转换至蒙哥马利域并进行初始化运算后的椭圆曲线参数点执行倍点和点加减操作,并获得对应的椭圆曲线参数点计算结果;
S3,将步骤S2获得的椭圆曲线参数点计算结果,通过模乘和模加减的方式,变换至射影坐标系,同时再通过模逆方式转换至仿射坐标系,最后再通过模乘方式将椭圆曲线参数点从蒙哥马利域转换至普通域,并将结果输出;
步骤S1包括如下步骤;
S11,返回随机数K二进制形式,并获得首位非零比特数据位置信息;
S12,读取设定的椭圆曲线参数点信息,包括基本点Gx和Gy、曲线参数a和b;
S13,判断读取的椭圆曲线参数点信息是否更改,若否,则直接进入步骤S2;若是,则重新计算椭圆曲线参数点在射影坐标系下的值,并转化至蒙哥马利域后进行存放;
其中,所需初始化的椭圆曲线参数包括X1=4xy2、X2=(x2-a)2-8bx、M=4y2、M2=M2、A=aM2、B=4bM、G=Gx、U1=2X2、U2=4X2、Xt=X2 2
步骤S2包括如下步骤:
S21,计算X1与X1相乘以及计算X1与X2相减;待并行执行模块PEM1循环第一部分计算结束后,再计算X1与X2相减结果的平方,并将结果存放至T寄存器;计算Xt与A相加,并将结果存放至tp3寄存器;待并行执行模块PEM2循环第一部分计算结束后,再计算B与M2相乘,并将结果更新至B寄存器;计算Xt+Xt+Xt+A的值,并将结果存放至tp1寄存器;计算X1与X2相加,并将结果存放至tp2寄存器;计算tp3寄存器内的值与A相加的结果;
S22,待步骤S21中PEM1所有循环结束后,计算U2与tp3寄存器内的值相乘;待PEM1循环第一部分计算结束后,计算tp1寄存器内的值的平方,并将结果更新至tp1寄存器内;计算X1的平方+A+tp3寄存器内的值-T寄存器内的值的结果,并待PEM2循环第一部分计算结束后,计算tp2寄存器内的值与所述X1的平方+A+tp3寄存器内的值-T寄存器内的值的结果相乘,得到结果J1;
S23,待步骤S22中PEM1所有循环结束后,将所述U2与tp3寄存器内的值相乘结果与B相加,并将结果存放至S寄存器;将T寄存器内的值与S寄存器内的值相乘,获得结果K1,并将结果K1更新至M寄存器;待PEM1循环第一部分计算结束后,计算U1与S寄存器内的值相乘;待PEM2循环第一部分计算结束后,计算G寄存器内的值与M寄存器内的值相乘,并将结果更新至G寄存器内;计算B寄存器内的值与结果J1相加,得到结果J2;
S24,待步骤S23中PEM1所有循环结束后,计算M寄存器内的值的平方,并将结果更新至M2寄存器;待PEM1循环第一部分计算结束后,将S寄存器内的值与结果J2相乘,获得结果J3以及将tp1寄存器内的值与结果K1进行相减,获得结果K2;待PEM2循环第一部分计算结束后,计算T寄存器内的值与结果K2相乘,并将结果更新至X2寄存器;
S25,待步骤S24中PEM1所有循环结束后,计算曲线参数a与M2寄存器内的值相乘,并将结果更新至A寄存器;待PEM1循环第一部分计算结束后,计算B寄存器内的值与M寄存器内的值相乘,并将结果更新至B寄存器;将结果J3与G寄存器内的值相减,并将结果更新至X1寄存器;待PEM2循环第一部分计算结束后,判断随机数K的下一比特是否为1;若为1,则计算X1与X1相乘,并将结果更新至Xt寄存器,同时计算X1与X1相加,并将结果更新至U1寄存器,再计算2X1与2X1相加,并将结果更新至U2寄存器;若否,则计算X2与X2相乘,并将结果更新至Xt寄存器,同时计算X2与X2相加,并将结果更新至U1寄存器,再计算2X2与2X2相加,并将结果更新至U2寄存器。
2.根据权利要求1所述的基于FPGA实现的高效可重构SM2点乘方法,其特征在于,步骤S3包括如下步骤:
S31,读取步骤S2生成的椭圆曲线参数点信息,利用循环生成的最后一轮椭圆曲线参数点信息,通过模乘和模加减的方式,变换至射影坐标系,同时再通过模逆方式转换至仿射坐标系,最后再通过模乘方式将椭圆曲线参数点从蒙哥马利域转换至普通域,并发送至输出缓存区,完成一次点乘计算。
3.根据权利要求1所述的基于FPGA实现的高效可重构SM2点乘方法,其特征在于,步骤S2中所示循环模乘方式包括如下步骤:
S201,数据输入包括三次模乘法所需的三对输入A1和B1、A2和B2、A3和B3,基于模数所得的蒙哥马利参数q和模数p;
S202,数据输出为蒙哥马利模乘的结果OUT;
其中,内部计算参数包括C1、C2、C3、C4、bq1、bq2、bq3、t1、t2、t3、t4、z1、z2、z3
S203,设定处理数据位宽为256位,分组长度r为29bit,分组数m为9,数据输入在内部被分组为B1(b18,b17,b16,b15,b14,b13,b12,b11,b10)、A1(a18,a17,a16,a15,a14,a13,a12,a11,a10)、B2(b28,b27,b26,b25,b24,b23,b22,b21,b20)、A2(a28,a27,a26,a25,a24,a23,a22,a21,a20)、B3(b38,b37,b36,b35,b34,b33,b32,b31,b30)、A3(a38,a37,a36,a35,a34,a33,a32,a31,a30);
S204,采用PEM处理计算模乘的分步运算,包括如下运算过程:
分步1,计算bi0与q相乘,i=1,2,3;
分步2,计算ci0与q相乘、ai0与bqi相乘以及两者结果的和,i=1,2,3;
分步3,计算ai0与bij相乘,tk与pj相乘以及两者结果与ckj和zk的加法,i=1,2,3、j=0,1,2,3,4,5,6,7,8、k=1,2,3。
4.基于FPGA实现的高效可重构SM2点乘系统,其特征在于,包括:
数据扫描模块,用于对设定的随机数K进行扫描,获得随机数K的比特信息;
数据转换模块,用于对椭圆曲线参数点进行转换处理,将椭圆曲线参数点转换至蒙哥马利域并进行初始化运算;
模乘模块,用于将两个参数点相乘;
模加减模块,用于将两个参数点相加和相减;
点乘调度模块,用于根据随机数K的比特信息,循环调用模乘模块和模加减模块执行倍点和点加减操作;
模逆模块,用于将射影坐标系的椭圆曲线参数点,转换至仿射坐标系的椭圆曲线参数点。
5.根据权利要求4所述的基于FPGA实现的高效可重构SM2点乘系统,其特征在于,所述模逆模块包括两个并行运算的模加减模块;其中一个模加减模块,与点乘调度模块共享。
6.根据权利要求4所述的基于FPGA实现的高效可重构SM2点乘系统,其特征在于,所述模乘模块包括3个并行执行模块PEM;所述PEM用于处理计算模乘的分步运算,采用多级流水线并行结构,包括乘法器并行阵列、压缩单元以及由超前进位链实现的行波进位加法器;所述乘法器包括数字信号处理DSP或查找表LUTs。
7.根据权利要求6所述的基于FPGA实现的高效可重构SM2点乘系统,其特征在于,所述模乘模块内部还设有寄存器组;所述寄存器组分为共享寄存器组和私有寄存器组;所述共享寄存器组供所有PEM访问;所述私有寄存器组供对应的PEM访问。
CN202210472722.1A 2022-04-29 2022-04-29 基于fpga实现的高效可重构sm2点乘方法及系统 Active CN114895870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210472722.1A CN114895870B (zh) 2022-04-29 2022-04-29 基于fpga实现的高效可重构sm2点乘方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210472722.1A CN114895870B (zh) 2022-04-29 2022-04-29 基于fpga实现的高效可重构sm2点乘方法及系统

Publications (2)

Publication Number Publication Date
CN114895870A true CN114895870A (zh) 2022-08-12
CN114895870B CN114895870B (zh) 2022-11-25

Family

ID=82720557

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210472722.1A Active CN114895870B (zh) 2022-04-29 2022-04-29 基于fpga实现的高效可重构sm2点乘方法及系统

Country Status (1)

Country Link
CN (1) CN114895870B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115344525A (zh) * 2022-08-16 2022-11-15 江南信安(北京)科技有限公司 一种椭圆曲线点加硬件加速方法及装置
CN116820394A (zh) * 2023-08-29 2023-09-29 无锡沐创集成电路设计有限公司 一种面向椭圆曲线加密算法的标量乘电路

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103929305A (zh) * 2013-01-16 2014-07-16 上海华虹集成电路有限责任公司 Sm2签名算法的实现方法
CN106681690A (zh) * 2015-11-07 2017-05-17 上海复旦微电子集团股份有限公司 基于蒙哥马利模乘的数据处理方法、模乘运算方法及装置
CN107425968A (zh) * 2017-06-22 2017-12-01 广东工业大学 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统
CN110351087A (zh) * 2019-09-06 2019-10-18 南京秉速科技有限公司 流水线型的蒙哥马利模乘运算方法及计算装置
CN110752931A (zh) * 2019-10-16 2020-02-04 浙江双成电气有限公司 一种sm2椭圆曲线公钥密码体制优化方法
CN113010142A (zh) * 2021-03-23 2021-06-22 广州万协通信息技术有限公司 一种新型脉动结点式标量点乘的双域实现系统及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103929305A (zh) * 2013-01-16 2014-07-16 上海华虹集成电路有限责任公司 Sm2签名算法的实现方法
CN106681690A (zh) * 2015-11-07 2017-05-17 上海复旦微电子集团股份有限公司 基于蒙哥马利模乘的数据处理方法、模乘运算方法及装置
CN107425968A (zh) * 2017-06-22 2017-12-01 广东工业大学 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统
CN110351087A (zh) * 2019-09-06 2019-10-18 南京秉速科技有限公司 流水线型的蒙哥马利模乘运算方法及计算装置
CN110752931A (zh) * 2019-10-16 2020-02-04 浙江双成电气有限公司 一种sm2椭圆曲线公钥密码体制优化方法
CN113010142A (zh) * 2021-03-23 2021-06-22 广州万协通信息技术有限公司 一种新型脉动结点式标量点乘的双域实现系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HWAJEONG SEO: "Montgomery Multiplication for Public Key Cryptography on MSP430X", 《ACM TRANSACTIONS ON EMBEDDED COMPUTING SYSTEMS》 *
李斌 等: "可重构的素域SM2算法优化方法", 《通信学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115344525A (zh) * 2022-08-16 2022-11-15 江南信安(北京)科技有限公司 一种椭圆曲线点加硬件加速方法及装置
CN115344525B (zh) * 2022-08-16 2023-04-18 江南信安(北京)科技有限公司 一种椭圆曲线点加硬件加速方法及装置
CN116820394A (zh) * 2023-08-29 2023-09-29 无锡沐创集成电路设计有限公司 一种面向椭圆曲线加密算法的标量乘电路
CN116820394B (zh) * 2023-08-29 2023-11-03 无锡沐创集成电路设计有限公司 一种面向椭圆曲线加密算法的标量乘电路

Also Published As

Publication number Publication date
CN114895870B (zh) 2022-11-25

Similar Documents

Publication Publication Date Title
Roy et al. HEPCloud: An FPGA-based multicore processor for FV somewhat homomorphic function evaluation
Roy et al. High-speed implementation of ECC scalar multiplication in GF (p) for generic Montgomery curves
CN114895870B (zh) 基于fpga实现的高效可重构sm2点乘方法及系统
CN103793199B (zh) 一种支持双域的快速rsa密码协处理器
Salarifard et al. An efficient low-latency point-multiplication over curve25519
Güneysu Utilizing hard cores of modern FPGA devices for high-performance cryptography
CN112865954A (zh) 用于Paillier解密的加速器、芯片及系统
CN116094711B (zh) 一种基于指令集的后量子格密码硬件优化结构
CN111092718A (zh) 加密方法、装置及电子设备
CN107992283B (zh) 一种基于降维实现有限域乘法的方法和装置
Chen et al. Scalable and systolic dual basis multiplier over GF (2m)
CN109144472B (zh) 一种二元扩域椭圆曲线的标量乘法及其实现电路
Li et al. Scalable and parallel optimization of the number theoretic transform based on FPGA
KR100457177B1 (ko) 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기
Li et al. Research in fast modular exponentiation algorithm based on FPGA
CN117155572A (zh) 一种基于gpu并行实现密码技术中大整数乘法的方法
Roy et al. A parallel architecture for Koblitz curve scalar multiplications on FPGA platforms
KR101136972B1 (ko) 타원곡선 암호 연산 방법
Wang et al. TCPM: A reconfigurable and efficient Toom-Cook-based polynomial multiplier over rings using a novel compressed postprocessing algorithm
Rachh et al. Efficient implementations of S-box and inverse S-box for AES algorithm
Cui et al. High-throughput polynomial multiplier for accelerating saber on FPGA
CN115048076A (zh) 一种基于sm2特定域的快速模乘芯片实现装置及方法
Wang et al. A High-Throughput Toom-Cook-4 Polynomial Multiplier for Lattice-Based Cryptography Using a Novel Winograd-Schoolbook Algorithm
Bahadori et al. A programmable SoC implementation of the DGK cryptosystem for privacy-enhancing technologies
Elango et al. High-Performance Multi-RNS-Assisted Concurrent RSA Cryptosystem Architectures

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