CN116830076A - 用于高效模除法和模求逆的技术、设备和指令集架构 - Google Patents
用于高效模除法和模求逆的技术、设备和指令集架构 Download PDFInfo
- Publication number
- CN116830076A CN116830076A CN202280002327.5A CN202280002327A CN116830076A CN 116830076 A CN116830076 A CN 116830076A CN 202280002327 A CN202280002327 A CN 202280002327A CN 116830076 A CN116830076 A CN 116830076A
- Authority
- CN
- China
- Prior art keywords
- bits
- subset
- modulo
- value
- operand
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000012545 processing Methods 0.000 claims description 40
- 238000004364 calculation method Methods 0.000 claims description 14
- 230000015654 memory Effects 0.000 description 33
- 230000008569 process Effects 0.000 description 28
- 238000004422 calculation algorithm Methods 0.000 description 20
- 230000036961 partial effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 108091058543 REG3 Proteins 0.000 description 6
- 102100027336 Regenerating islet-derived protein 3-alpha Human genes 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 108700012361 REG2 Proteins 0.000 description 4
- 101150108637 REG2 gene Proteins 0.000 description 4
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 4
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 101001096074 Homo sapiens Regenerating islet-derived protein 4 Proteins 0.000 description 3
- 102100037889 Regenerating islet-derived protein 4 Human genes 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 2
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/727—Modulo N arithmetic, with N being either (2**n)-1,2**n or (2**n)+1, e.g. mod 3, mod 4 or mod 5
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
- Advance Control (AREA)
Abstract
公开了使用包括硬件加速器引擎的共享平台来执行和促进例如模除法和模求逆的快速和高效的模计算运算的装置、系统和技术。
Description
技术领域
至少一个实施例涉及用于执行和促进模计算运算的技术。例如,至少一个实施例涉及在公钥-私钥密码术、椭圆曲线密码术等的上下文中使用的加速操作。公开了计算技术、硬件加速器设备和指令集架构,用于在共享平台上实现模除法和模求逆的快速和高效执行。
背景技术
在公钥密码术系统中,计算设备可以对大二进制数执行操作作为诸如用于加密和/或解密秘密消息的Rivest-Shamir-Adelman(RSA)、Diffie-Hellman(DH)、椭圆曲线密码术(ECC)算法、用于认证消息的数字签名算法(DSA)等等各种算法的一部分的。密码术算法通常涉及模算术运算,其中整数被包裹在一个长度为M的圆(环ZM)上,因此任何两个相差M(或M的任何其他整数)的数字都被视为同一个数字。两个数字A和B的典型的乘法运算可以产生一个比M大得多的数字AB。将生成的数字还原(reducing)到环ZM中,相当于确定AB除以M的残差,这可能是一个计算上很昂贵的运算。即使是一个密码术算法的单一实例的执行也可能涉及大量的这些或其他(例如加法、减法、指数化、除法等)的模运算。此外,典型的应用可以包括大量数据的大量加密和解密实例,这可能会消耗大量的处理资源。
附图说明
图1是根据至少一些实施例的执行高效的模除法和模逆的示例计算机设备的框图;
图2A描绘了根据至少一些实施例的说明可用于高效实现密码术运算的模除四的示例运算的流程图;
图2B示出了根据至少一些实施例的具有消除的分支运算的模除四的修改示例运算;
图3A示出了根据至少一些实施例的可用于密码术运算的高效实现的模逆的示例运算;
图3B示出了根据至少一些实施例的具有消除的分支运算的模求逆的修改示例运算;
图4示出了根据至少一些实施例的能够执行模除以四和模求逆的示例加速器电路;
图5是根据至少一些实施例的高效且快速的模除四的示例方法的流程图;
图6是根据至少一些实施例的高效且快速模求逆的示例方法的流程图;
图7描绘了根据本公开的一些实施方式操作的示例计算机系统的框图。
具体实施方式
密码术应用通常部署非对称公开/私有密钥算法,例如DH、RSA、DSA算法。例如,密码术应用可以通过选择一对大素数(例如p和q),选择一个公共(加密)指数e,然后计算秘密(解密)指数d来生成私钥/公钥,该指数d是基于公共(加密)指数e和所选数字p和q的。数字e和M=p·q随后可能作为公钥的一部分被透露给其他参与者,而p、q和d则由未来秘密通信的接收者存储(作为秘密私钥)。发送者可以通过使用模幂运算c=me mod M计算密文消息c来加密明文消息m,并将c(例如,公开地)传达给接收者。然后,接收者可以通过应用另一个模幂m=cdmod M来解密密文。只要解密指数d的值被选择为使得e·d=1对一个适当选择的数字进行模运算,例如(p-1)·(q-1),就可以恢复原始明文消息。
公开/私有密钥密码术是现代计算机软件和硬件系统的主要组成部分,用于多种应用,包括保密通信、时间戳、不可否认协议(non-repudiation protocol)、密码货币(cryptocurrency)等。在一些系统中,密码术应用可以在系统启动期间被实例化并用于所有安全数据通信(例如,在处理器和系统存储器之间)。RSA和ECC是最流行的密码术应用使用的算法当中的算法。在ECC应用中,数字与椭圆曲线(例如Weierstrass曲线)上的点相关联,并为诸如加法、减法、加倍、乘法等各种算术运算定义了特殊规则。椭圆曲线的性质确保了椭圆曲线上的两个大数的乘积AB=C实际上可以在曲线上的任何位置,因此从已知数B和C中恢复未知数A可能是一项极其困难的计算任务。ECC计算通常涉及多个模除法,例如,运算A/B=C mod M,这相当于找到这样一个数C,其模乘B得到A:AC=B mod M。模除法通常使用基于欧几里得最大公分母(GCD)方法的扩展二进制算法来执行。扩展的二进制GCD算法将模除法简化为若干个条件性的加、减、位移(bit-shifting)等运算,这些运算的计算瓶颈是需要对适当选择的数字U进行模除四U/4mod M。
另一方面,RSA应用涉及大量模乘,即标准乘法后再进行模余。为了降低模模余的计算成本,计算算法通常采用蒙哥马利(Montgomery)模余法。更具体地说,为了计算AB modM,可以首先将数字A和B转换到蒙哥马利域,其中2n是辅助模数(蒙哥马利基数)。由于乘积/>中存在额外因子2n,所以数/>与乘积C=A·B的蒙哥马利表示/>不相等,因为需要执行除以2n的额外除法:为了有效地计算/>一个数S=-M-1mod 2n也被选中;换句话说,M·S+1=k·2n与某个整数k。通过构造,可以得出数可以与乘积/>相加而不会改变其模M的值:
此外,的存在使得数/>是2n的倍数,因为
除以2n很容易通过右移n位来执行。其结果产生乘积C=A·B mod M的蒙哥马利表示/>(如果结果超过M,则通过再减去M获得/>)。在蒙哥马利表示中,可以直接在蒙哥马利域中执行任意数量的连续模乘(只有最终输出/>从蒙哥马利域转移回标准域,/>)。
即使值S可以预先计算一次并存储在计算设备的存储器中,这种存储也可能消耗大量的存储器资源。例如,单个值S可能长达2048位、4096位甚至更多,并且可能需要存储大量值(例如,如果计算设备使用多个公开/私有密钥对)。
本公开的方面和实施例通过为部署模数除的密码术应用(例如,ECC算法)和部署模求逆的应用(例如,RSA算法)提供并发计算支持来解决技术挑战。下面描述的实施例说明了用于在例如单个加速器引擎的同等基础上执行两种类型的计算(例如,U/4 mod M以及S=M-1mod 2n)的设备、技术和指令集架构。在一组实例中,相同的(或类似的)操作和加速器引擎可用于有效地促进模除法,并且在另一组实例中促进模求逆。如下文更详细描述的,优化是通过部署多种技术来实现的。例如,可以计算一组M的倍数并将其作为计算运算数M,2M,3M,存储在不同的高速寄存器中。在模除法和模求逆的两种情况下,操作数可以基于操作数M和3M的位子集(例如,两个最低有效位)以及附加数量的位子集来选择;在模除法的情况下,这个附加数可能是被除数U,在模求逆的情况下可能是某个辅助数。
所公开的设备和技术的优点包括但不限于在运行时模运算的快速且高效的计算。因为相同的加速器电路可以用于两种类型的模运算,所以所公开的设备和技术为不同类型的密码术应用提供支持。例如,所公开的设备和技术可以在运行中从执行RSA计算切换到执行ECC计算,反之亦然。此外,由于所公开的计算模逆的技术代表了对现有技术的实质性改进,因此可以消除为蒙哥马利乘法预先计算和存储模逆M-1mod 2n的需要,以节省大量存储器资源,提高整体计算效率、降低计算设备的成本和尺寸,等等。
系统架构
图1是根据至少一些实施例的执行高效模除法和模求逆的示例计算机设备100的框图。图1中描绘的示例计算机设备100可能是台式计算机、平板电脑、智能手机、服务器(本地或远程)、薄/瘦型客户端、云计算节点、读卡器、无线传感器节点、物联网(IoT)节点、专用于一个或更多个特定应用的嵌入式系统,等等。一个或更多个应用102可以在计算机设备100上执行。
计算机设备100支持的一个或更多个应用102可以包括一个或更多个机器学习应用、一个或更多个图形应用、一个或更多个计算应用、一个或更多个密码术应用(例如认证、加密、解密、一个或更多个安全存储应用,等等)、一个或更多个嵌入式应用、一个或更多个外部应用或可由计算机设备100执行的任何其他类型的一个或更多个应用。一个或更多个应用102可在同一计算机设备100上实例化,例如,由计算机设备100执行的操作系统。或者,一个或更多个应用102可以是由在计算机设备100上运行的虚拟机监视器(管理程序)支持的访客操作系统实例化的一个或更多个外部应用。在一些实施例中,外部应用可以驻留在远程访问客户端设备或远程服务器(未示出)上,其中计算机设备100为客户端设备和/或远程服务器提供密码支持。
计算机设备100可以包括一个或更多个处理器110。“处理器”是指能够执行编码算术、逻辑或I/O操作的指令的任何设备。在一个说明性示例中,处理器可以遵循冯诺依曼架构模型。处理器110可以包括中央处理单元(CPU)112,其可以具有任意数量的算术逻辑单元(ALU)、浮点单元(FPU)、控制单元、寄存器等。CPU 112可以执行一个或更多个应用102的至少一些操作。CPU 112可以包括一个或更多个核心,该核心可以访问单级或多级高速缓存114。在一些实施例中,每个核心可以执行指令以运行多个线程,也称为逻辑核心。可以将各种逻辑核心指派给一个或更多个应用102,尽管可以将一个以上逻辑核心指派给特定应用102以进行并行处理。多核CPU 112可以同时执行多个指令。单核CPU 112通常可以一次执行一个指令(或处理单个指令管线)。CPU 112可以实现为单个集成电路、两个或更多个集成电路,或者可以是多芯片模块的组件。
在一些实施例中,一个或更多个应用102的一些操作可以由一个或更多个图形处理单元(GPU)116执行。GPU 116可以包括多个核心,每个核心能够执行多个线程。每个核心可以并发地(例如,并行地)运行多个线程。在一些实施例中,GPU线程可以访问特定于线程的(私有)GPU寄存器。此外,GPU核心的所有线程都可以访问一个或更多个共享GPU寄存器。在至少一个实施例中,每个GPU核心可以包括调度器以在不同GPU线程之间分配计算任务和进程。GPU 116还可以具有分派单元以使用正确的私有和共享GPU寄存器在适当的GPU线程上实施调度的任务。在一些实施例中,GPU 116可以具有高速缓存118,多个GPU核心可以共享对高速缓存118的访问。在一些实施例中,CPU 112可以执行涉及串行计算任务的过程,而GPU 116可以执行适合并行处理的任务。在一些实施例中,一个或更多个应用102可以确定哪些进程要在GPU 116上执行以及哪些进程要在CPU 112上执行。在其他实施例中,CPU 112可以确定哪些进程要在GPU 116上执行以及哪些进程要在GPU 112上执行。在一些实施例中,处理器110可以包括一个或更多个专用集成电路(ASIC)、现场可编程门阵列(FPGA)、有限状态机(FSM)等。
处理器110可以例如通过系统总线108访问一个或更多个系统存储器140设备。系统存储器140可以指任何易失性或非易失性存储器并且可以包括只读存储器(ROM)142、随机存取存储器(RAM)144以及(未示出)电可擦除可编程只读存储器(EEPROM)、闪存、触发器存储器或任何其他能够存储数据的设备。RAM 144可以是动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、静态存储器,例如静态随机存取存储器(SRAM)等。在一些实现方式中,处理器110和系统存储器140可以被实现为单个控制器,例如,FPGA。
处理器110可以包括加速器电路(加速器协处理器、加速器引擎)130。一个或更多个应用102可以在处理器110上执行密码操作,由加速器电路130执行具有一个或更多个函数,例如,模除法/求逆函数103。加速器电路130可以包括加速器功能单元,例如模除法/求逆单元133,以实现一个或更多个应用102的模除法/求逆函数103的计算,如下文更详细描述的。加速器电路130可以通过加速器电路接口(AC接口)120通信地耦合到CPU 112和/或GPU 116。在一些实施例中,加速器电路130可以执行由处理器110执行的密码计算的一部分。例如,CPU 112(和/或GPU 116)可以在执行多个蒙哥马利乘法和约简的同时执行RSA算法。在对特定数M执行蒙哥马利约简的过程中,CPU 112(和/或GPU 116)可将数M的值提供给加速器电路130,并且加速器电路130可计算M-1mod 2n(或-M-1mod 2n)并将计算值返回给CPU112(和/或GPU 116)。在另一示例中,CPU 112(和/或GPU 116)可以在执行多个模除法的同时执行ECC算法。在针对特定模数M执行模除法U/4 mod M的过程中,CPU 112(和/或GPU116)可以将被除数U的值和模数M的值提供给加速器电路130,加速器电路130可以计算U/4mod M并将计算的值返回给CPU 112(和/或GPU 116)。
加速器电路130可以包括解码单元132(也称为解码器),其可以耦合到指令获取单元(图1中未描绘)。解码单元132可对指令进行解码,并生成一个或更多个微操作、微代码入口点、微指令、其他指令或其他控制信号,这些信号是从原始指令解码的,或以其他方式反映或源自原始指令。解码单元132可以使用各种机制来实现,例如查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。
解码单元132可以耦合到执行单元134,执行单元134可以包括调度器单元(图1中未描绘)。解码单元132和执行单元134可以通过存储器访问单元136耦合到一个或更多个寄存器138。每个寄存器138可以存储一种或更多种不同的数据类型,例如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点等、状态(例如,指令指针,其是要执行的下一条指令的地址)等。
在一些实施例中,解码单元132可以从CPU 112(和/或GPU 116)接收指令,该指令可以包括要执行的操作(例如,模除法、模求逆等)的标识以及输入值(例如,U和/或M)。解码单元132可以将接收到的输入值存储在寄存器138中。解码单元132可以存储(或访问先前存储的)一些附加数字(例如,2M和3M),如下面更详细描述的。然后解码单元132可以使用解码电路(例如,一个或更多个多路复用器,如下文结合图4更详细描述的)来确定将由执行单元134对输入值执行的一个或更多个操作,例如加法运算、除法(例如位移)运算等。在执行单元134执行操作期间,中间值可以存储在寄存器138中。在完成模除法或模求逆计算之后,最终输出可以移动到CPU高速缓存114(或GPU高速缓存118)。在一些实施例中,在完成计算之后,存储器访问单元136可以向CPU 112(或GPU 116)提供存储最终输出的寄存器138的标识,并且CPU 112(或GPU 116)可以直接从对应的寄存器获取最终结果。
计算机设备100还可以包括输入/输出(I/O)组件104以促进计算机设备100连接到各种外围硬件设备(未示出),例如读卡器、终端、打印机、扫描仪、IoT设备等。计算机设备100还可以包括网络接口106以促进连接到各种网络(互联网、无线局域网(WLAN)、个域网(PAN)、公共网络、专用网络等),并且可以包括:无线电前端模块和其他设备(放大器、数模转换器和模数转换器、专用逻辑单元等)以实现与计算机设备100之间的数据传输。
图2A描述了一个流程图,说明了根据至少一些实施例,可用于有效实现密码操作的模除以四的示例操作200。在一些实施例中,示例操作200可以通过加速器电路130的各个单元来实现。在一些实现方式中,示例操作200可以通过CPU 112(GPU 116)和加速器130的组合、通过加速器130和由CPU 112(GPU 116)执行的软件的组合,或纯粹由CPU 112(GPU116)执行的软件来实现。更具体地说,在模除法的过程中,例如,基于扩展的二进制欧几里得算法,可能会遇到计算量大的模除四运算,W=U/4 mod M。模除以四的输出,W,是一个数,乘以四,得到数U,直到模数的整数M:m:4W=U+mM。由于数U和W定义在环ZM=[0,M-1]上,整数值m满足条件,0≤m≤3。因此,为了确定期望的输出W,加速器电路可以首先识别这样的值m,即和U+mM是4的整数,或者说,等价地,和U+mM的二进制表示具有两个最低有效位中的每一个都等于0。然后通过将该值向右位移两位,从值U+mM获得值W,(U+mM)>>2→W。
如图所示,进入操作200的输入(块210)可以包括奇数模数M和被除数U,被除数可以是奇数或偶数。如果在块220确定U的第0位和第1位是零(换句话说,这些位的值是U[1:0]=0),则数U可被4整除,通过在块290处向右移位两个位来执行输出W=U/4。如果两个最低有效位中的任何一个不为零,U[1:0]≠0,则该过程可以继续确定通过在块240检查两个最小有效位是否有值2:U[1:0]=2(二进制值10)来确定U是否是偶数。如果是这样,则设置m=2并加上U+mM=U+2M(在块250)产生可被四整除的数。(因为任何两个不能被四整除的偶数加起来得到的和都能被四整除。)然后该过程进行到产生输出295的位移块290。
如果数U是奇数,则在块260,该过程继续确定U[1:0]=1(二进制值01)或U[1:0]=3(二进制值11)。由于模数M是奇数,因此数值1和3也是模数M的最后两个有效位M[1:0]可能具有的两个数值。因此,如果U和M的位对具有不同的值,U[1:0]≠M[1:0],则在块270选择值m=1,因为11(3)和01(1)的(二进制)之和是100,并且得到的数U+M可以被4整除。如果两个位对具有相同的值,U[1:0]=M[1:0](无论该值是1还是3),则在块280选择值m=3。例如,如果U[1:0]=M[1:0]=1(二进制值01),3M的最后两个有效位为11,和U[1:0]+M[1:0]=4(二进制值100)。如果U[1:0]=M[1:0]=3(二进制值11),则3M的最后两个有效位为01(因为,3×3=1mod 4)。这确保了U+3M的总和可以被4整除。
使用条件case环境的示例操作200的一个可能的实施例如下面的表1所示;gcd代表最大公分母,case环境中每个类中的第二数字代表值U[1:0],在相应行中执行操作:
表1:带分支指令的模除法
该实施例涉及在case环境中使用分支“if…else…”操作。分支操作的处理涉及额外的计算周期并降低了整体的计算效率。图2B示出了根据至少一些实施例消除了分支操作的模除以四的修改后的示例操作202。更具体地,添加运算212,其计算辅助数TRI_M=3×M。在一些实施例中,运算212仅计算乘积3×M的两个最低有效位TRI_M[1:0]。图2B具有决策块220、240和260,它们可以通过单一case环境来实现,如下所述。
响应于U[1:0]的偶数值的处理(图2A中的块220-250)可以类似于示例操作200中的各个块来执行,而响应于U[1:0]的奇数值的处理(图2A中的块260-280)可以被修改。特别地,如果在块265确定U[1:0]=3,则处理移动到块285,其计算新值U:=U+M[1:0]×M。此操作产生正确的值U,因为乘积M[1:0]×M在M[1:0]=1时等于M,在M[1:0]=3时等于3M。如果在块265确定U[1:0]=1,则处理移动到块275,计算新值U:=U+TRI_M[1:0]×M。同样,此操作产生了正确的值U,因为乘积TRI_M[1:0]×M[1:0]对于M[1:0]=1等于3M,对于M[1:0]=3等于M。
使用条件case环境,示例操作202可以如下表2所示执行:
表2:没有分支指令的模除法
图3A示出了根据至少一些实施例的可用于密码操作的有效实现方式的模求逆的示例运算300。例如,模求逆可以用作蒙哥马利乘法的一部分。模求逆可能涉及计算奇数M的S=-M-1mod 2n(或S=M-1mod 2n),其中模数2n是2的整数次幂。模求逆的输出S是一个数,乘以M并加到单位,得到模的整数k:S×M=k×2n-1。用两位字Sn/2-1…S1S0表示未知数S为S=…+S3·43+S2·42+4·S1+S0,上面的S方程可以改写为
(…+S3·43+S2·42+4·S1+S0)×M=…3·43+3·42+3·4+3。模逆的第一对位S0可以根据以下条件确定(在迭代i=0时)
S0×M[1:0]=3,
并且,因为对于任何奇数M,最后两个有效位M[1:0]=1(二进制表示中的01)或3(二进制表示中的11),S0要么是3,要么是1。然后可以计算出一个辅助量(部分和),如下所示
U1=S0×M>>2,
即,作为乘积S0×M右移两位(丢弃两个最低有效位)。换句话说,辅助数U1占了两位乘数S0≡S[1:0]和被乘数M相乘的进位。模逆的下两位,S1≡S[3:2],然后可以根据以下条件在下一次(i=1)迭代期间找到,
S1×M[1:0]+U1=3+carry1·4,
辅助数可以更新如下,
U2=S1×M+U1>>2,
这将进位(carry1)解释为下一次(i=2)迭代。该过程可以继续进行后续迭代,包括最后一次(i=n/2)迭代。结果,乘法器S的位以强制乘积S×M的所有n个最低有效位等于1的方式确定。具体而言,要确定值Si,首先更新辅助值,
Ui=Si-1×M+Ui-1>>2,
然后根据以下条件确定Si,
Si×M[1:0]+Ui=3+carryi·4,
其中carryi是第i次迭代中生成的进位值。现在将结合图3A的各个块来描述基于辅助值Ui确定值Si。
如果在第i次迭代期间,在块315确定部分和U的两个最低有效位的当前值为U[1:0]=1(二进制值01),则无论M[1:0]=1还是3,都可以确认(块318)值Si=2。事实上,在这两种情况下2×M[1:0]=2mod 4,如条件Si×M[1:0]+1=3mod 4所要求的那样。如果在块325确定部分和的两个最低有效位的当前值是U[1:0]=3(二进制值11),则无论M[1:0]=1还是3,该值Si=0(块330),如条件Si×M[1:0]+3=3 mod 4所要求的。
对于U[1:0]的其他值,值Si取决于M[1:0]。例如,如果在块335确定U[1:0]=0且M[1:0]=1(块340的YES分支),则值Si=3(块345),因为Si×M[1:0]+U[1:0]=3×1+0=3。另一方面,如果M[1:0]≠1(块340的否(NO)分支),意味着M[1:0]=3,则值Si=1(块355),因为Si×M[1:0]+U[1:0]=1×3+0=3。类似地,如果确定U[1:0]≠0(块335的NO分支),意味着U[1:0]=2,并且M[1:0]=1(块350的YES分支),那么值Si=1(块355),因为Si×M[1:0]+U[1:0]=1×1+2=3。另一方面,如果M[1:0]≠1(块350的NO分支),意味着M[1:0]=3,则值Si=3(块345),因为Si×M[1:0]+U[1:0]=3×3+2=3 mod 4。在块390,该过程继续确定是否刚刚执行了最终迭代(i=n/2-1)。如果要执行额外的迭代(块390的NO分支),则该过程可以继续更新部分和U(如块392所示),置换更新的部分和的两个最低有效位并增加迭代计数器(如块394所示)并将控制返回块315进行下一次迭代。
使用条件case环境的示例操作300的一种可能实现方式如下表3所示:
表3:带分支指令的模逆运算
类似于图2A中的操作200的实施例,操作300的这个实施例涉及在case环境中使用分支操作“if…else…”。图3B示出了根据至少一些实施例的具有消除的分支操作的模求逆的修改示例操作302。示例操作302的另一个优点是操作302在很大程度上平行于模除法的示例操作202,如下面结合图4所描述的,可以使用相同的硬件电路来实现。更具体地说,可以引入一个新的数N,使得N=-M mod 2n=2n-M(只要M∈[0,2n-1],后面的等式就有效)。方程S×M=k×2n-1现在可以用N重新表述如下:S×N+2n-1=k×2n或展开形式
(…+S3·43+S2·42+4·S1+S0)×N+2n-1=…0·43+0·42+0·4+0。
在迭代i=0期间,模逆的第一对位S0由以下条件确定
S0×N[1:0]+U0=0+carry0·4,
其中U0为2n-1,部分和的计算如下:
U1=S0×N+U0>>2。
在随后的迭代中,在部分和根据以下更新后,
Ui=Si-1×N+Ui-1>>2,
可以使用以下条件计算模逆Si的附加位对,
Si×N[1:0]+Ui=0+carryi·4。
从最后一个等式可知,当Ui[1:0]=0时,值Si=0,当Ui[1:0]=2时,无论N[1:0]=1还是3,值Si=2,因为在这两种情况下2×N[1:0]+2=0 mod 4。当Ui[1:0]=3时,值Si=N[1:0]。最后,当Ui[1:0]=1时,若N[1:0]=3,则值Si=1,若N[1:0]=1,则Si=3。最后一个条件可以等效地重作为不需要“if…else…”条件分支的形式,例如,通过定义辅助数TRI_N=3×N。因此,Si=TRI_N[1:0]。
图3B示出了使用辅助数TRI_N来消除图3A的决策块340和350。添加了操作312,其计算辅助数N和TRI_N。操作318、320、330和340可以类似于图3A的相应操作来执行。如果在块365处确定U[1:0]=1,,则处理移动到生成值Si=TRI_N[1:0]的块375。相反,如果在块365处确定U[1:0]=3,,则处理移动到生成值Si=N[1:0]的块385。图3B中的其余操作390、392、394和395可以与图3A的各个操作类似地执行。
使用条件case环境的算法302的实现如下表4所示:
表4:没有分支指令的模逆运算在一些实施例中,不引入数N=-M mod 2n,并且计算基于恒等式,S×M+1=k×2n,直接使用模数M并将初始值U设置为一,如下表5所示:
表5:没有分支指令的模逆运算的另一种实现方式
图3B中描绘的模逆的示例算法302的操作312-385可以被映射到图2B中描绘的模除法的示例算法202的对应的(在数字中具有相同的最后两位数字)操作212-285。如下文结合图4所述,示例操作202和示例操作302都可以由公共电路(或一组电路)执行。
上述实施例确定每次迭代2位的组Si中的模逆的输出。如上所述,此类实现方式利用迭代计算的部分和Ui=Si-1×M+Ui-1>>2,然后确定Si,例如,根据条件Si×M[1:0]+Ui=0+carryi·4。在一些实施例中,模逆的输出可以利用部分和Ui=Si-1×M+Ui-1>>r,在每次迭代中确定为每组r个位的Si组,同时确定连续r位组Si,例如,根据条件Si×M[r-1:0]+Ui=0+carryi·2r。在这样的实施例中,在for环境内执行的迭代次数可以是n/r。更具体地说,可以如下表6所示执行计算:
表6:不带分支指令的r位迭代的模逆运算
如该算法的第1行所述,可以定义从数M派生的2r-1个辅助数(并在计算开始时存储)。对于r=3的特定实例,可以如下表7所示执行计算:
表7:不带分支指令的3位迭代的模逆运算而2位迭代的模求逆(如表4和表5所示)利用了这样一个事实:任何奇数M的平方等于4的模数,M2=1(mod 22)。类似地,任何奇数M的四次方等于8的模数,M4=1(mod 23)。因此,以下恒等式为真,(Z×M3)×M mod 8=Z,对于Z=1,3,5,7,已用于表7第5、7、9和11行列出的操作中。
具有r位迭代的模逆运算映射在模除U/2rmod M上,因此可以以类似的方式执行(例如,使用相同的加速器电路),类似于表2、表4和表5的操作如何在r=2时执行。
图4示出了根据至少一些实施例的能够执行模除以四和模求逆的示例加速器电路400。图4中存储并输入各种寄存器和电路的示例值被指定为模除法的示例值(括号中指示了模求逆的相应示例值)。寄存器402、404和406可以将输入存储到计算中,并且可以包括任何合适的存储器设备,例如整数寄存器(例如,宽整数进度寄存器)、定点寄存器、浮点寄存器等。在计算开始时,寄存器402可以存储U的初始值,例如,对于模除法,U=0(或者对于模求逆,U=2n-1)。在模求逆计算期间,寄存器402的内容可以在每个计算周期之后更新。寄存器404可以存储模除的模数M(或模求逆的值N=-M mod 2n)。寄存器406可以存储模除的预计算值TRI_M(或模求逆的值TRI_N)。上面结合图2B和图3B描述的操作的case环境,可以使用第一多路复用器410和第二多路复用器416来实现。寄存器402的两个最低有效位U[1:0]可以用作进入第一多路复用器410的控制信号。
进入多路复用器410的四个输入信号可以包括:
0,当U[1:0]=0时选择;
TRI_M[1:0],TRI_N[1:0],当U[1:0]=1时选择;
2,U[1:0]=2时选择;以及
M[1:0],N[1:0],当U[1:0]=3时选择。
输入M[1:0],(N[1:0])可以从寄存器404的最后两个有效位获得,而输入3M[1:0],(3N[1:0])可以从寄存器406的最后两个有效位获得。在一些实施例中,输入TRI_M[1:0]、(TRI_N[1:0])可以从用虚线块表示的单独的专用寄存器408(其可以是两位寄存器)获得。类似地,在一些实施例中,输入M[1:0]、N[1:0]可以从单独的(例如,两位)寄存器(图4中未示出)获得。
多路复用器410的双位输出S[1:0]可以用作进入第二多路复用器416的控制信号。进入第二多路复用器416的四个输入信号可以是0、M(N)、2M(2N)和3M(3N)。输入值2M(2N)可以使用单位移位器405从寄存器404获得。在一些实施例中,输入2M(2N)可以从存储值2M(2N)的专用寄存器(未示出)获得。第二多路复用器416的输出是乘积S[1:0]×M,当第一多路复用器410输出相应的值S[1:0]时选择每个输出信号。
在模除法的实例中,值U可以作为操作数OP1 421提供给指令执行单元,并且乘积S[1:0]×M可以作为操作数OP2 422提供。然后加法(加法器)电路424可以将这两个操作数相加,以生成值U+S[1:0]×M。该值可以由两位移位器(图4中未示出)处理,并且作为模除法的最终输出U/4 mod M存储在输出寄存器409中。
在模求逆的实例中,可以使用额外的子电路来收集输出值S=-M-1mod 2n的位。特别地,由第一多路复用器410输出的先前计算的(和级联的)位对Si-1…S1,S0可以存储在暂存缓冲器414中。在第i次迭代期间,级联逻辑412可以引起移位器415将先前计算的位对Si-1…S1,S0向右移动两位,并将新的位对Si附加到左侧,然后将新值:Si,Si-1…S1,S0存储在暂存缓冲器414中。此外,如虚线箭头所示,由加法电路422生成的值U+S[1:0]×N可用于盖写寄存器402中先前存储的值U,然后在下一个第i+1次处理迭代期间将其前两位用作控制信号,输入到第一多路复用器410。在计算结束时,在所有迭代完成后,值Sn/2-1…S1 S0可以从暂存缓冲器414移动到输出寄存器409。
下面的代码说明了使用加速器电路400执行模除法计算的一个可能的示例指令(在双斜杠//符号后面带有注释):
MOV REG1 U;//值U存储在寄存器402中
MOV REG2 M;//值M存储在寄存器404中
MOV REG3 M;//值M被复制到寄存器406
TRI REG3;//值M在寄存器406中增加三倍M→M
MDIV4 REG1 REG2 REG3;//执行case环境
SRL REG1#2;//除以4由寄存器402中的值U右移两位执行
类似地,下面的代码说明了使用加速器电路400执行模逆运算计算的一个可能示例指令:
MOV REG0#0;//零值存储在寄存器0中(可能是输出寄存器409或图4中未显示的其他一些寄存器)
SUB REG1 REG0#1;//值U=2n–1被计算并存储在寄存器402中
MOV REG3 M;//值M存储在寄存器406中
SUB REG2 REG0 REG3;//计算值N并将其存储在寄存器404中
MOV REG3 REG2;//值N被复制到寄存器406
TRI REG3;//值N在寄存器406中增加三倍N→3N
MOV REG4 n;//计数器n存储在寄存器409中
SRL REG4#1;//右移一位以获得寄存器409中的n/2
_FOR_LOOP_BEGIN:
MDIV4 REG1 REG2 REG3;//case环境的执行
SRL REG1#2;//右移两位得到…U>>2
SUB REG4 REG4#1;//寄存器409中的计数器值减1
BNE_FOR_LOOP_BEGIN;//循环结束
SMOV REG4;//将计算值-M-1mod 2n从暂存缓冲器414移动到输出寄存器409
图5和图6是根据至少一些实施例的快速和高效模计算的示例方法500和600的流程图。在一些实施例中,方法500和600可以由图1的加速器电路130的处理单元来执行,该加速器电路130可包括一个或更多个存储器设备(例如,寄存器)(或与之通信)。在一些实施例中,方法500和600可以响应于来自CPU 112(或GPU 116)的指令来执行。在一些实施例中,方法500和600可以由一个或更多个处理线程执行,每个线程执行方法的一个或更多个单独的函数、例程、子例程或操作。在一些实施例中,实现方法500和600中的每一个的处理线程可以是同步的(例如,使用信号量、临界区和/或其他线程同步机制)。或者,实现方法500和600中的每一个的处理线程可以相对于彼此异步地执行。与图5和图6中所示的顺序相比,方法500和600的各种操作可以以不同的顺序执行。方法500和600的一些操作可以与其他操作同时执行。在一些实施例中,图5和图6中所示的一个或更多个操作可以是可选的。
为简洁起见,示例加速器电路400的结构和操作使用模求逆--M-1mod 2n和模除四:U/4 mod M的2位迭代来说明。然而,应当理解的是,具有基本相似架构和执行类似操作的加速器电路可用于模求逆-M-1mod 2n和模除U/2r mod M的r位迭代。特别是,在r=3的实例中,多路复用器410和416可以是8输入多路复用器(在更一般的情况下为2r输入多路复用器),其中一些输入可以是先前计算和存储的辅助数,例如,如上表6和表7所示。
图5是根据至少一些实施例的高效且快速的模除四的示例方法500的流程图。方法500可以由专用加速器引擎执行,例如图1的加速器电路130。在一些实施例中,方法500可以由被配置为执行公开/私有密钥密码计算的密码引擎执行,或者由通用CPU(或GPU)执行。执行方法500的处理单元可以包括解码单元132、执行单元134、存储器访问单元136和加速器电路130的其他单元(例如,获取单元、调度器单元等)。在一些实施例中,方法500可以包括,在块510,接收执行模计算运算的指令,例如模除法,U/4 mod M。指令可以由CPU、GPU或任何其他处理设备或与加速器电路通信的设备发出。在块520,方法500可以继续将第一数字存储在存储器设备中,例如,存储在寄存器138之一中。该第一数字可以是模除运算的模数M。在块530,方法500可以包括将第二数字存储在存储器设备中。第二数字可以是模除法的被除数,例如U。尽管在图5中,存储第一数字和第二数字的操作(块520和530)被描述为在接收到指令(块510)之后执行,但在一些实施例中,顺序可能不同。例如,可以在启动时或在使用方法500的应用程序(例如,图1的应用程序102)的初始化期间存储第一数字M。同样地,第二数字U可以在块510接收指令之前或与在块510接收指令并发地存储。在一些实施例中,附加数,例如2M、TRI_M、M[1:0]、TRI_M[1:0]等,也可以作为块530的操作的一部分被存储。在块540,执行方法500的处理单元可以选择要执行的条件运算。条件运算可以包括保持第二数字(例如,U→U)或修改第二数字,例如,用第一数字的倍数(例如,U→U+M、U→U+2M等)。
该选择可以来自多个条件运算,每个条件运算都取决于第二数字的位子集,例如,第二数字U[1:0]的两个最低有效位,但也可以取决于其他数字。例如,如图5中标注部分所示,第一条件运算(块541)也可以取决于第一数字,例如M,和第三数字,例如TRI_M。可以基于第一数字、第二数字和第三数字的位子集,例如,基于包含这些相应数字的两个最低有效位的位子集来选择条件运算。更具体地,第一条件运算可以包括用第三数字修改第二数字,例如U→U+3M,并且可以在满足以下条件之一的情况下被选择:(1)第二数字U[1:0]的位子集和第一数字M[1:0]的位子集具有第一值,例如值3:U[1:0]=3,M[1:0]=3;或者(2)第二数字的位子集具有第二值,例如,值1,并且第三数字的位子集具有第一值:U[1:0]=1,TRI_M[1:0]=3。例如,如图4所描述的,控制信号U[1:0]=3使第一多路复用器410为第二多路复用器416选择控制信号M[1:0],然后第二多路复用器416选择数字3M用于操作数OP2 422(因为M[1:0]=3)。同样,控制信号U[1:0]=1使第一多路复用器410为第二多路复用器416选择控制信号TRI_M[1:0],然后第二多路复用器416为操作数OP2 422选择数字3M(因为TRI_M[1:0]=3)。结果,在这两种情况下,加法器电路424计算总和U+3M。
如块542所描述的,第二条件运算可以包括用第一数字修改第二数字,例如U→U+M,并且可以在满足以下条件之一的情况下被选择:(1)第二数字U[1:0]的位子集和第三数字TRI_M[1:0]的位子集具有第二值,例如,U[1:0]=1,TRI_M[1:0]=1;或者(2)第二数字的位子集具有第一值,U[1:0]=3,第一数字的位子集具有第二值,M[1:0]=1。例如,如4图所描述的,控制信号U[1:0]=1使第一多路复用器410为第二多路复用器416选择控制信号TRI_M[1:0],然后第二多路复用器416为操作数OP2 422选择数字M(因为TRI_M[1:0]=1)。同样,控制信号U[1:0]=3使第一多路复用器410为第二多路复用器416选择控制信号M[1:0],然后第二多路复用器416选择数字M用于操作数OP2 422(因为M[1:0]=1)。结果,在这两种情况下,加法器电路424计算总和U+M。
如块543所描述的,第三条件运算可以包括用第一数字的两倍修改第二数字,例如U→U+2M,并且可以在第二数字的位子集具有第三值的情况下被选择,例如,U[1:0]=2。例如,如图4所描述的,控制信号U[1:0]=2使第一多路复用器410为第二多路复用器416选择控制信号2,然后第二多路复用器416为操作数OP2 422选择数字2M。
如块544所描述的,第四条件运算可以包括保持第二数字并且如果第二数字的位子集具有第四值,例如U[1:0]=0,则可以选择第四条件运算。例如,如图4所描述的,控制信号U[1:0]=0使第一多路复用器410为第二多路复用器416选择控制信号0,然后第二多路复用器416为操作数OP2422选择零。
在块550,方法500可以继续处理单元执行选定的条件运算以保持或更新第二数字。例如,如图4所描述的,作为操作数OP1 421存储的第二数字可以与操作数OP2 422相加,如上面结合块541-544所述来选择的。在一些实施例中,保持第二数字可以包括将存储为操作数OP1 421的第二数字与零值相加,存储为操作数OP2 422。
在块560,方法500可以继续处理单元使用更新的第二数字生成模计算运算的输出。例如,如可选块570所描述的,生成模计算运算的输出(例如,将第二数字除以四对第一数字取模)可以包括将第二数字右移两位,U→U/4。
图6是根据至少一些实施例的高效且快速模逆运算的示例方法600的流程图。方法600可以由专用加速器引擎或能够执行图5的方法500的任何其他电路和/或设备来执行。方法600和方法500可以有多个类似的操作。方法600可以包括,在块610,接收执行模计算运算的指令,该模计算运算可以是第一数字对为2的整数幂的数字取模的逆(例如,正逆或负逆),例如,模求逆,S=-M-1mod 2n。该指令可以由与加速器电路通信的处理器的CPU(或GPU)发出。在块620,方法600可以继续将第一数字存储在存储器设备中,例如,存储在寄存器138之一中。第一数字可以是辅助数N=-M mod 2n或模数M。在块630,方法600可以继续在存储设备中存储第二数字,例如部分和U。部分和的初始值可以是U=2n-1(如果使用的辅助数是N)或U=1(如果使用的辅助数是模数M本身)。在一些实施例中,附加数,例如,2N(2M),TRI_N(TRI_M),N[1:0](M[1:0]),TRI_N[1:0](TRI_M[1:0])等,也可以存储为块630的操作的一部分。在块640,执行方法600的处理单元可以选择要执行的条件运算。块640的执行以及在块640的执行中使用的条件运算的类型可以与方法500的块540的执行(以及相应的条件运算)相同或相似,除了在方法600中数字M可以(在一些实施例中)用数字N代替。
在块650,方法500可以继续处理单元执行选定的条件运算以保持或更新第二数字。类似地,块650可以类似于方法500的块550被执行。在块660,为了计算模计算运算的输出,执行方法600的处理单元可以重复块640-650的多次迭代,每次迭代识别模计算运算的输出的附加多个位(例如,两个位),如上面结合图3B更详细描述的。
上面的描述旨在作为方法500和600的说明。方法500和600的许多变体和实施例也在本公开的范围内。在一些实施例中,进入第一多路复用器410的输入TRI_M[1:0]和M[1:0](或输入TRI_N[1:0]和N[1:0])被交换。为了实现方法500和600的相同输出,进入第二多路复用器416的输入M和3M(或N和3N)同样可以被交换。
应当理解,图4中描述的加速器电路并未穷尽所公开技术的所有可能实施例。例如,任何加速器电路、协处理器、CPU、GPU、FPGA、ASIC、FSM或任何类似设备都可能能够执行所公开的技术,条件是相应的设备能够从多个条件运算中选择一个条件运算,其中多个条件运算中的每一个是根据第二数字的位子集选择的,例如U[1:0],并且包括(1)保持第二数字,例如通过不使第二数字经受任何操作或通过执行一个或更多个空操作(例如,空加法),U→U+0,或(2)用第一数字的倍数修改第二数字,例如,U→U+M(N)、U→U+2M(N)等。多个条件运算中的一个条件运算可以包括将等于第一数字和第三数字的位子集的乘积的数与第二数字相加,其中第三数字是第一数字的三倍,例如U→U+TRI_M[1:0]·M(或U→U+TRI_N[1:0]·N)。多个条件运算中的另一个条件运算可以包括将等于第一数字和第三数字的位子集的乘积的数字与第二数字相加,例如U→U+M[1:0]·M(或U→U+N[1:0]·N)。实现这样的条件运算并因此避免使用“if…else…”条件指令的各种实施例在本公开的范围内。
图7描绘了根据本公开的一些实施方式操作的示例计算机系统700的框图。在各种说明性示例中,示例计算机系统700可以是图1所示的计算机设备100或包括图1所示的计算机设备100。示例计算机系统700可以连接到LAN、内联网、外联网和/或互联网中的其他计算机系统。计算机系统700可以在客户端-服务器网络环境中以服务器的身份运行。计算机系统700可以是个人计算机(PC)、机顶盒(STB)、服务器、网络路由器、交换机或桥接器,或任何能够执行指定由该设备采取的行动的一组指令(顺序或其他)的设备。此外,虽然仅说明了单个示例计算机系统,但术语“计算机”也应理解为包括任何计算机的集合,它们单独或联合执行一组(或多组)指令,以执行本文讨论的任何一个或更多个方法。
示例计算机系统700可以包括处理设备702(也称为处理器或CPU)、主存储器704(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)等)、静态存储器706(例如,闪存、静态随机存取存储器(SRAM)等)和辅助存储器(例如,数据存储设备718),它们可以通过总线730彼此通信。
处理设备702代表一个或更多个通用处理设备,例如微处理器、中央处理单元等。更具体地,处理设备702可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现其他指令集的处理器,或实现指令集组合的处理器。处理设备702也可以是一个或更多个专用处理设备,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。根据本公开的一个或更多个方面,处理设备702可以被配置为执行实现高效且快速的模除以四的方法500和高效且快速的模求逆的方法600的指令。
示例计算机系统700可以进一步包括网络接口设备708,其可以通信地耦合到网络720。示例计算机系统700可以进一步包括视频显示器710(例如,液晶显示器(LCD)、触摸屏或阴极射线管(CRT))、字母数字输入设备712(例如键盘)、光标控制设备714(例如鼠标)和声音信号生成设备716(例如扬声器)。
数据存储设备718可以包括计算机可读存储介质(或更具体地,非暂时性计算机可读存储介质)728,其上存储了一组或多组可执行指令722。根据本公开内容的一个或多个方面,可执行指令722可以包括实现高效且快速的模除以四的方法500和高效且快速的模求逆的方法600的可执行指令。
可执行指令722还可以在由示例计算机系统700执行期间完全或至少部分地驻留在主存储器704和/或处理设备702内,主存储器704和处理设备702也构成计算机可读存储介质。可执行指令722还可以通过网络接口设备708在网络上传输或接收。
虽然计算机可读存储介质728在图7中显示为单一介质,但术语“计算机可读存储介质”应被理解为包括存储一个或更多个指令集合的单一介质或多个介质(例如,集中式或分布式数据库,和/或相关的高速缓存和服务器)的操作。术语“计算机可读存储介质”还应被视为包括任何能够存储或编码一组由机器执行的指令的介质,这些指令使机器执行本文所述的任何一个或更多个方法。术语“计算机可读存储介质”应理解为包括但不限于固态存储器以及光学和磁性介质。例如,“存储器”包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪存设备;蓄电设备;光学存储设备;声学存储设备,以及适合以机器(如计算机)可读形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是某些示出的其实施例在附图中示出并且已经在上面进行了详细描述。然而,应理解,无意将公开内容限制为所公开的一个或更多个特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的本公开内容的精神和范围内的所有修改、替代构造和等同物。
在描述所公开的实施例的上下文中(特别是在以下权利要求的上下文中)使用术语“一(a)”和“一个(an)”以及“该(the)”和类似的指称应被解释为涵盖单数和复数,除非本文另有说明或显然与上下文相矛盾,而不是作为一个术语的定义。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。术语“连接”(在未经修改时指的是物理连接)应解释为部分或全部包含在内、附接到或连接在一起,即使有某些介入。除非本文另外指出,否则本文中对数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。在至少一个实施例中,除非另外指出或与上下文矛盾,否则术语“集”(例如“项目集”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则术语相应集的“子集”不一定表示对应集的适当子集,而是子集和对应集可以相等。
除非以其他方式明确指出或与上下文明显矛盾,否则诸如“A,B和C中的至少一个”或“A,B与C中的至少一个”形式的短语之类的连接语在上下文中理解为通常用来表示项目、条款等,其可以是A或B或C,也可以是A和B和C集的任何非空子集。例如,在具有三个成员的集的说明性示例中,连接短语“A,B和C中的至少一个”和“A,B与C中的至少一个”是指以下任意集:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这种连接语言通常不旨在暗示某些实施例要求存在A中的至少一个、B中的至少一个和C中的至少一个。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“复数个项目”表示多个项目)。在至少一个实施例中,多个项目中项目的数量至少为两个,但如果明确指示或通过上下文指示,则可以更多。此外,除非另有说明或从上下文中可以清楚得知,否则短语“基于”是指“至少部分地基于”而不是“仅基于”。
除非本文另外指出或与上下文明显矛盾,否则本文描述的过程的操作可以任何合适的顺序执行。在至少一个实施例中,诸如本文所述的那些过程(或其变形和/或其组合)之类的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令,一个或更多个计算机程序或一个或更多个应用程序),该代码通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码以例如计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其排除了暂时性信号(例如,传播的瞬态电或电磁传输),但包括非暂时性数据存储电路(例如,缓冲器、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他存储器)上,该可执行指令在由计算机系统的一个或更多个处理器执行时(即,作为被执行的结果),使得计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的个体非暂时性存储介质中的一个或更多个缺少全部代码,而是多个非暂时性计算机可读存储介质共同存储全部代码。在至少一个实施例中,可执行指令被执行,以使得不同的指令由不同的处理器执行,例如,非暂时性计算机可读存储介质存储指令,并且主中央处理单元(“CPU”)执行一些指令,而图形处理单元(“GPU”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。
因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所述的过程的操作的一个或更多个服务,并且这样的计算机系统被配置有使能实施操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一个实施例中是分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有要求。说明书中的任何语言都不应被解释为表示任何未要求保护的要素对于实践公开内容是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其程度就如同每个参考文献被单独且具体地指示为以引用的方式并入本文并且其全部内容在本文中阐述一样。
在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
除非另有明确说明,否则可以理解,在整个说明书中,诸如“处理”、“运算”、“计算”、“确定”等之类的术语,是指计算机或计算系统或类似的电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或存储器的一部分。作为非限制性示例,“处理器”可以是CPU或GPU。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”进程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。在至少一个实施例中,术语“系统”和“方法”在本文中可以互换使用,只要系统可以体现一个或更多个方法,并且方法可以被认为是系统。
在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。在至少一个实施例中,可以通过多种方式来完成获得、获取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对应用程序编程接口的调用的参数的数据。在一些实现方式中,可以通过经由串行或并行接口传输数据来完成获得、获取、接收或输入模拟或数字数据的过程。在另一实现方式中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、传送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来实现。
尽管上面的讨论阐述了所描述的技术的示例实现,但是其他架构可以用于实现所描述的功能,并且旨在落入本公开的范围内。此外,尽管出于讨论的目的在上面定义了具体的职责分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。
此外,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。
Claims (20)
1.一种处理器,包括:
存储器设备;以及
一个或更多个电路,通信地耦合到所述存储器设备,用于:
将第一数字存储在所述存储器设备中,其中所述第一数字表示对模计算运算的输入;
将第二数字存储在所述存储器设备中;
从多个条件运算(CO)中选择CO,其中所述多个CO中的每一个更新或保持所述第二数字,其中所述多个CO中的第一CO的选择取决于:
所述第二数字的位子集和具有第一值的所述第一数字的位子集,或
具有第二值的所述第二数字的所述位子集和具有所述第一值的第三数字的所述位子集,其中所述第三数字是所述第一数字的三倍;
执行所选定的CO以保持或更新所述第二数字;以及
使用所述更新的第二数字生成所述模计算运算的输出。
2.如权利要求1所述的处理器,其中所述多个CO中的第二CO的选择取决于:
所述第二数字的所述位子集和具有所述第二值的所述第三数字的所述位子集,或
具有所述第一值的所述第二数字的所述位子集和具有所述第二值的所述第一数字的所述位子集。
3.如权利要求2所述的处理器,其中所述一个或更多个电路包括:
加法器电路,用于通过将第一操作数和第二操作数相加来更新所述第二数字,其中所述第一操作数包括所述第二数字;以及
一个或更多个多路复用器,用于选择所述第二操作数,其中所述第二操作数包括用于所述第一CO的所述第三数字和用于所述第二CO的所述第一数字。
4.如权利要求2所述的处理器,其中所述多个CO中的第三CO是根据具有第三值的所述第二数字的所述位子集来选择的,并且包括通过将两倍的所述第一数字与所述第二数字相加来更新所述第二数字,并且其中所述多个CO中的第四CO是基于具有第四值的所述第二数字的所述位子集来选择的,并包括保持所述第二数字。
5.如权利要求1所述的处理器,其中所述模计算运算是所述第二数字除以四对所述第一数字取模,并且其中为了产生所述模计算运算的所述输出,所述一个或更多个电路将所述第二数字右移两位。
6.如权利要求1所述的处理器,其中所述模计算运算是所述第一数字对为2的整数幂的数字取模的逆。
7.如权利要求6所述的处理器,其中为了计算所述模计算运算的所述输出,所述一个或更多个电路用于选择所述CO并针对多个迭代中的每一个执行所选择的CO,其中在所述多个迭代中的每一个期间,所述一个或更多个电路用于识别所述模计算运算的所述输出的多个位。
8.如权利要求1所述的处理器,其中所述第一数字、所述第二数字和所述第三数字中的每一个的所述位子集包含相应数字的两个最低有效位,其中所述第一值为三,并且其中所述第二值为一。
9.一种获得模计算运算的输出的方法,所述方法包括:
由处理设备将第一数字存储在存储器设备中,其中所述第一数字表示对所述模计算运算的输入;
由所述处理设备将第二数字存储在所述存储器设备中;
由所述处理设备从多个条件运算(CO)中选择CO,其中所述多个CO中的每一个是根据所述第二数字的位子集来选择的,并且包括:
保持所述第二数字,或
用所述第一数字的倍数修改所述第二数字,
其中所述多个CO中的第一CO包括将等于i)所述第一数字和ii)第三数字的位子集的乘积的数字与所述第二数字相加,其中所述第三数字是所述第一数字的三倍;
由所述处理设备执行所选择的CO以保持或更新所述第二数字;以及
由所述处理设备使用更新的所述第二数字生成所述模计算运算的所述输出。
10.如权利要求9所述的方法,其中所述模计算运算包括将所述第二数字除以四对所述第一数字取模,并且其中生成所述模计算运算的所述输出包括将所述第二数字右移两位。
11.如权利要求9所述的方法,其中所述模计算运算是所述第一数字对为2的整数幂的数字取模的逆。
12.如权利要求11所述的方法,其中计算所述模计算运算的所述输出包括使用所述选择和所述执行的多次迭代,每次迭代识别所述模计算运算的所述输出的多个位。
13.如权利要求9所述的方法,其中所述第一CO取决于具有值1的所述第二数字的所述位子集。
14.如权利要求9所述的方法,其中所述多个CO中的第二CO取决于具有值2的所述第二数字的所述位子集,并且包括:
将为所述第一数字的两倍的数字与所述第二数字相加。
15.如权利要求14所述的方法,其中所述多个CO中的第三CO取决于具有值3的所述第二数字的所述位子集,并且包括:
将一个数与所述第二数字相加,该数等于i)所述第一数字和ii)所述第一数字的位子集的乘积;以及
其中,所述多个CO中的第四CO取决于具有值0的所述第二数字的所述位子集,并且包括:
保持所述第二数字。
16.如权利要求9所述的方法,其中所述第二数字的所述位子集包含所述第二数字的两个最低有效位,并且所述第三数字的所述位子集包含所述第三数字的两个最低有效位。
17.一种加速器电路,包括:
第一寄存器,用于存储第一数字,其中所述第一数字表示模计算运算的输入;
第二寄存器,用于存储第二数字;
第三寄存器,用于存储第三数字,其中所述第三数字是所述第一数字的三倍;
解码单元,用于:
接收执行所述模计算运算的指令,所述指令识别存储在所述第一寄存器中的第一操作数、存储在所述第二寄存器中的第二操作数以及存储在所述第三寄存器中的第三操作数;以及
从多个条件运算(CO)中选择CO,其中所述多个CO中的每一个更新或保持所述第二操作数,其中所述多个CO中的第一CO的选择取决于:
所述第二操作数的位子集和具有第一值的所述第一操作数的所述位子集,或
具有第二值的所述第二操作数的所述位子集和具有所述第一值的第三操作数的所述位子集;以及
执行单元,用于:
执行所选择的CO以保持或更新所述第二操作数;以及
使用所述更新的第二操作数生成所述模计算运算的输出。
18.如权利要求17所述的加速器电路,其中所述多个CO中的第二CO的选择取决于:
所述第二操作数的所述位子集和具有第二值的所述第三操作数的所述位子集,或
具有第一值的所述第二操作数的所述位子集以及具有所述第二值的所述第一操作数的所述位子集。
19.如权利要求18所述的加速器电路,其中所述执行单元包括:
加法器电路,用于通过将所述第一操作数和所述第二操作数相加来更新所述第二操作数;以及
其中所述解码单元包括:
一个或更多个多路复用器,用于为所述第一CO选择所述第三操作数,为所述第二CO选择所述第一操作数。
20.如权利要求18所述的加速器电路,其中所述多个CO中的第三CO是根据具有第三值的所述第二操作数的所述位子集来选择的,并且包括:通过将所述第一操作数的两倍与所述第二操作数相加来更新所述第二操作数,并且其中所述多个CO中的第四CO是基于具有第四值的所述第二数字的所述位子集来选择的,并且包括保持所述第二操作数。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/074567 WO2023141933A1 (en) | 2022-01-28 | 2022-01-28 | Techniques, devices, and instruction set architecture for efficient modular division and inversion |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116830076A true CN116830076A (zh) | 2023-09-29 |
Family
ID=87431948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280002327.5A Pending CN116830076A (zh) | 2022-01-28 | 2022-01-28 | 用于高效模除法和模求逆的技术、设备和指令集架构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11954487B2 (zh) |
CN (1) | CN116830076A (zh) |
WO (1) | WO2023141933A1 (zh) |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2726666B1 (fr) | 1994-11-08 | 1997-01-17 | Sgs Thomson Microelectronics | Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery |
JP3525209B2 (ja) | 1996-04-05 | 2004-05-10 | 株式会社 沖マイクロデザイン | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
US6088453A (en) * | 1997-01-27 | 2000-07-11 | Kabushiki Kaisha Toshiba | Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation |
US6008703A (en) * | 1997-01-31 | 1999-12-28 | Massachusetts Institute Of Technology | Digital compensation for wideband modulation of a phase locked loop frequency synthesizer |
US6748410B1 (en) * | 1997-05-04 | 2004-06-08 | M-Systems Flash Disk Pioneers, Ltd. | Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication |
US6085210A (en) | 1998-01-22 | 2000-07-04 | Philips Semiconductor, Inc. | High-speed modular exponentiator and multiplier |
ATE418099T1 (de) | 1998-06-03 | 2009-01-15 | Cryptography Res Inc | Gesicherte moduläre potenzierung mit leckminimierung für chipkarten und andere kryptosysteme |
WO2001089129A2 (en) * | 2000-05-15 | 2001-11-22 | M-Systems Flash Disk Pioneers Ltd. | Extending the range of computational fields of integers |
US7027597B1 (en) | 2001-09-18 | 2006-04-11 | Cisco Technologies, Inc. | Pre-computation and dual-pass modular arithmetic operation approach to implement encryption protocols efficiently in electronic integrated circuits |
CN1985458B (zh) | 2003-11-16 | 2013-05-08 | 桑迪斯克以色列有限公司 | 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置 |
ATE472769T1 (de) | 2003-11-16 | 2010-07-15 | Sandisk Il Ltd | Verbesserte natürliche montgomery- exponentenmaskierung |
CN1691580A (zh) * | 2004-04-23 | 2005-11-02 | 上海明波通信技术有限公司 | 一种模乘运算的方法及其装置和用途 |
US20060140399A1 (en) | 2004-12-28 | 2006-06-29 | Young David W | Pre-calculation mechanism for signature decryption |
CA2542556C (en) | 2005-06-03 | 2014-09-16 | Tata Consultancy Services Limited | An authentication system executing an elliptic curve digital signature cryptographic process |
US7966361B1 (en) * | 2006-02-10 | 2011-06-21 | Nvidia Corporation | Single-cycle modulus operation |
KR100850202B1 (ko) | 2006-03-04 | 2008-08-04 | 삼성전자주식회사 | Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법 |
EP2015171A1 (fr) | 2007-06-29 | 2009-01-14 | Gemplus | Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés sans la connaissance de l'exposant public, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée |
EP2213037B1 (en) | 2007-10-30 | 2013-09-04 | Certicom Corp. | Fault detection in exponentiation and point multiplication operations using a montgomery ladder |
CN102207847B (zh) | 2011-05-06 | 2013-12-04 | 广州杰赛科技股份有限公司 | 基于蒙哥马利模乘运算的数据加解密处理方法及装置 |
ITMI20111992A1 (it) | 2011-11-03 | 2013-05-04 | St Microelectronics Srl | Metodo per crittografare un messaggio mediante calcolo di funzioni matematiche comprendenti moltiplicazioni modulari |
US9081608B2 (en) * | 2012-05-19 | 2015-07-14 | Digital System Research Inc. | Residue number arithmetic logic unit |
US9959429B2 (en) | 2013-03-15 | 2018-05-01 | Cryptography Research, Inc. | Asymmetrically masked multiplication |
EP2996033A1 (en) | 2014-09-10 | 2016-03-16 | Gemalto Sa | System and method for one-time Chinese-remainder-theorem exponentiation for cryptographic algorithms |
US10333696B2 (en) | 2015-01-12 | 2019-06-25 | X-Prime, Inc. | Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency |
FR3040511B1 (fr) | 2015-08-27 | 2017-09-08 | Stmicroelectronics Rousset | Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire |
FR3040512B1 (fr) | 2015-08-27 | 2017-09-08 | Stmicroelectronics Rousset | Protection d'un calcul d'exponentiation modulaire |
EP3242202A1 (en) | 2016-05-04 | 2017-11-08 | Gemalto Sa | Countermeasure to safe-error fault injection attacks on cryptographic exponentiation algorithms |
US9851905B1 (en) | 2016-09-29 | 2017-12-26 | Intel Corporation | Concurrent memory operations for read operation preemption |
US10509651B2 (en) | 2016-12-22 | 2019-12-17 | Intel Corporation | Montgomery multiplication processors, methods, systems, and instructions |
EP3503459B1 (en) | 2017-12-22 | 2021-04-21 | Secure-IC SAS | Device and method for protecting execution of a cryptographic operation |
KR20190088734A (ko) | 2018-01-19 | 2019-07-29 | 에스케이하이닉스 주식회사 | 메모리 인터페이스와, 이를 포함하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
CN108111309A (zh) | 2018-02-28 | 2018-06-01 | 北京融通高科微电子科技有限公司 | Rsa私钥掩码运算方法、协处理器及rsa运算装置 |
US11522669B2 (en) | 2018-03-28 | 2022-12-06 | Cryptography Research, Inc. | Using cryptographic blinding for efficient use of Montgomery multiplication |
US10509747B2 (en) | 2018-05-17 | 2019-12-17 | Seagate Technology Llc | Memory access operation suspend/resume |
CN108833120B (zh) * | 2018-08-28 | 2021-07-30 | 成都信息工程大学 | 一种crt-rsa选择明文联合攻击方法及系统 |
WO2020146285A1 (en) | 2019-01-07 | 2020-07-16 | Cryptography Research, Inc. | Protection of cryptographic operations by intermediate randomization |
DE102020102453A1 (de) | 2020-01-31 | 2021-08-05 | Infineon Technologies Ag | Integrierte Schaltung zum modularen Multiplizieren von zwei ganzen Zahlen für ein kryptographisches Verfahren und Verfahren zur kryptographischen Verarbeitung von Daten basierend auf modularer Multiplikation |
US20230254145A1 (en) | 2020-04-14 | 2023-08-10 | Cryptography Research, Inc. | System and method to improve efficiency in multiplicationladder-based cryptographic operations |
US20220085999A1 (en) | 2020-09-11 | 2022-03-17 | Cryptography Research, Inc. | System and method to optimize decryption operations in cryptographic applications |
US20220085998A1 (en) | 2020-09-11 | 2022-03-17 | Cryptography Research, Inc. | System and method to generate prime numbers in cryptographic applications |
US12067374B2 (en) * | 2021-12-16 | 2024-08-20 | Texas Instruments Incorporated | Division and modulo operations |
-
2022
- 2022-01-28 WO PCT/CN2022/074567 patent/WO2023141933A1/en active Application Filing
- 2022-01-28 CN CN202280002327.5A patent/CN116830076A/zh active Pending
- 2022-03-29 US US17/707,176 patent/US11954487B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230244482A1 (en) | 2023-08-03 |
US11954487B2 (en) | 2024-04-09 |
WO2023141933A1 (en) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Roy et al. | FPGA-based high-performance parallel architecture for homomorphic computing on encrypted data | |
Liu et al. | Efficient ring-LWE encryption on 8-bit AVR processors | |
Szerwinski et al. | Exploiting the power of GPUs for asymmetric cryptography | |
CN115344237B (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
Chung et al. | A high-performance elliptic curve cryptographic processor over GF (p) with SPA resistance | |
US20090319804A1 (en) | Scalable and Extensible Architecture for Asymmetrical Cryptographic Acceleration | |
Huang et al. | A novel and efficient design for an RSA cryptosystem with a very large key size | |
CN112148437A (zh) | 用于联邦学习的计算任务加速处理方法、装置及设备 | |
Neves et al. | On the performance of GPU public-key cryptography | |
Bos et al. | Montgomery arithmetic from a software perspective | |
Bos | Low-latency elliptic curve scalar multiplication | |
Seo | SIKE on GPU: Accelerating supersingular isogeny-based key encapsulation mechanism on graphic processing units | |
Dong et al. | sDPF-RSA: Utilizing floating-point computing power of GPUs for massive digital signature computations | |
WO2023141936A1 (en) | Techniques and devices for efficient montgomery multiplication with reduced dependencies | |
US11985221B2 (en) | Efficient masking of secure data in ladder-type cryptographic computations | |
CN117692126A (zh) | 一种基于低复杂度模乘算法的Paillier同态加密方法及系统 | |
EP3758288B1 (en) | Digital signature verification engine for reconfigurable circuit devices | |
CN111917548B (zh) | 基于gpu与cpu异构结构的椭圆曲线数字签名方法 | |
Miele et al. | Cofactorization on graphics processing units | |
WO2023141933A1 (en) | Techniques, devices, and instruction set architecture for efficient modular division and inversion | |
WO2023003737A2 (en) | Multi-lane cryptographic engine and operations thereof | |
US20240220201A1 (en) | A method and architecture for performing modular addition and multiplication sequences | |
KR20090070060A (ko) | 로페즈-다하브 알고리즘 기반 유한체상의 고속 타원곡선암호프로세서 | |
WO2023141935A1 (en) | Techniques, devices, and instruction set architecture for balanced and secure ladder computations | |
Smyth et al. | An adaptable and scalable asymmetric cryptographic processor |
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 |