CN112711395B - 加解密方法和装置、电子设备以及计算机可读存储介质 - Google Patents

加解密方法和装置、电子设备以及计算机可读存储介质 Download PDF

Info

Publication number
CN112711395B
CN112711395B CN201911025168.7A CN201911025168A CN112711395B CN 112711395 B CN112711395 B CN 112711395B CN 201911025168 A CN201911025168 A CN 201911025168A CN 112711395 B CN112711395 B CN 112711395B
Authority
CN
China
Prior art keywords
data
sub
multiplication
encryption
result
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.)
Active
Application number
CN201911025168.7A
Other languages
English (en)
Other versions
CN112711395A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201911025168.7A priority Critical patent/CN112711395B/zh
Publication of CN112711395A publication Critical patent/CN112711395A/zh
Application granted granted Critical
Publication of CN112711395B publication Critical patent/CN112711395B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

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

Abstract

本申请实施例提供了一种加解密方法和装置、电子设备以及计算机可读存储介质。该方法包括:获取用于进行加解密运算的第一数据;将所述第一数据拆分为多个第一子数据;将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法器;一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及根据所述模乘运算结果进行加解密操作。本申请实施例通过在模乘运算中将长位宽的第一数据拆解为多个低位宽的子数据并能够在一个时钟周期的上下两拍内完成乘法运算和加法运算,从而降低了对于结构中存储中间乘法结果的需要,进而实现了低时延和高吞吐的加解密操作。

Description

加解密方法和装置、电子设备以及计算机可读存储介质
技术领域
本申请涉及加解密计算技术领域,尤其涉及一种加解密方法和装置、电子设备以及计算机可读存储介质。
背景技术
在非对称密钥算法中,主要的运算量是针对数据和密钥进行的模乘运算。为了确保数据的安全性,需要密钥长度达到一定长度。但是目前来说,针对超长位宽数据的运算如果在计算设备上进行,因此需要消耗大量的系统计算资源。因此,在现有技术中,一般通过FPGA来实现加解密过程中的模乘运算。
但是,由于FPGA中不具备超长乘法单元,在针对超长位宽数据进行运算时,受限于已有乘法单元的位宽,需要从低位开始逐步计算,这样就使得运算过程存在高时延或低吞吐量的缺陷。
申请内容
本申请实施例提供一种加解密方法和装置、电子设备以及计算机可读存储介质,以使得能够在现有的FPGA结构中实现了高吞吐、低延时。
为达到上述目的,本申请实施例提供了一种加解密方法,包括:
获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法器;
在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;
将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及
根据所述模乘运算结果进行加解密操作。
本申请实施例还提供了一种加解密装置,包括:
获取模块,用于获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
拆分模块,用于将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
输入模块,用于将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法模块;
至少一个乘法模块,用于接收所述输入模块输入的多个第一子数据与第二数据,在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作;
加法模块,用于对所述至少一个乘法模块输出的乘法结果进行加法操作;
输出模块,用于将所述加法模块的加法结果输出作为所述第一数据与第二数据的模乘运算结果;以及
加解密模块,用于根据所述输出模块输出对所述模乘运算结果进行加解密操作。
本申请实施例还提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法器;
在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;
将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及
根据所述模乘运算结果进行加解密操作。
本申请实施例还提供了一种计算机可读存储介质,在所述计算机可读存储介质上存储有指令,所述指令包括:
获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法器;
在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;
将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及
根据所述模乘运算结果进行加解密操作。
本申请实施例提供的加解密方法和装置、电子设备以及计算机可读存储介质,通过在模乘运算中将长位宽的第一数据拆解为多个低位宽的子数据并能够在一个时钟周期的上下两拍内完成乘法运算和加法运算,从而降低了对于结构中存储中间乘法结果的需要,进而实现了低时延和高吞吐的加解密操作。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例提供的加解密方法的应用场景示意图;
图2为本申请提供的加解密方法的一个实施例的流程图;
图3为本申请提供的加解密方法的一个实施例的时序示意图;
图4为本申请提供的加解密装置的一个实施例的结构示意图;
图5为本申请提供的电子设备实施例的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在现有的非对称密钥算法中,主要的运算量是针对数据和密钥进行的模乘运算。随着对于数据安全性的要求的提升,需要密钥长度达到一定长度。而针对超长位宽数据的运算需要较大的运算量,因此在现有技术中,提出了在计算设备上进行针对超长位宽数据的运算,这需要消耗大量的系统计算资源。因此,在现有技术中,提出了通过FPGA来实现加解密过程中的模乘运算,以降低对于系统计算资源的消耗。
但是,由于FPGA中不具备超长乘法单元,在针对超长位宽数据进行运算时,受限于已有乘法单元的位宽,需要从低位开始逐步计算,从而导致现有技术中在使用FPGA进行非对称加密解密计算时,运算过程存在高时延或低吞吐量的缺陷。
为此,在现有技术中提出了使用蒙哥马利算法来解决大整数模幂运算,其能够通过使用移位操作来避免求模过程中耗时的除法运算。
例如,现有技术的蒙哥马利算法中,设置为
M(x,y)=M(xy)=xy(R-1)modm
从上面的算法能够看出,计算两个kbit大数的蒙哥马利模乘至少需要k个时钟,在现有技术中,对于位数较长的两个数的模乘,在计算过程中,由于需要大量的时钟数才能完成一次模乘运算,从而导致了运算时间较长,或者说计算速度太慢。
因此,针对现有技术的缺陷,本申请提出了一种加解密方法,其主要原理是:在模乘运算中将长位宽的第一数据拆解为多个低位宽的子数据并能够在一个时钟周期的上下两拍内完成多次的乘法运算和加法运算,从而降低了对于结构中存储中间乘法结果的需要,进而实现了低时延和高吞吐的加解密操作。
本申请实施例提供的方法可应用于任何具有数据处理功能的业务系统。图1为本申请实施例提供的加解密方法的应用场景示意图。如图1中所示,当需要进行模乘的第一数据被输入时,本实施例的方法将其分割为多个第一子数据,例如,如图1中所示,输入的第一数据的位宽可以为1024位,因此,可以拆分为64个第一子数据,每个子数据为16位的低位宽数据。进而,可以将拆分后的64个第一子数据分别与第二数据进行乘法操作。具体地,例如,在本申请的实施例中,第一个子数据可以为第一数据的第0-15位,并且第二数据可以为位宽为17位的数据,因此,位宽为16位的第一子数据与位宽为17位的第二数据可以输入到例如FPGA中的乘法器进行乘法操作;第二个子数据可以为第一数据的第16-31位。在此,为了进行计算,可以通过将第一数据的第16-31位赋值给第二个第一子数据,赋值后的第二个第一子数据为位宽为16位的数据,并且其第0-15位分别对应于第一数据的第16-31位。之后,可以将赋值后的第二个第一子数据与位宽位17位的第二数据一起输入到例如FPGA中的乘法器进行乘法操作;与上述操作同时地,并且与第二个第一子数据的操作类似地,第三个第一子数据可以为第一数据的第32-47位。即,为了进行计算,可以通过将第一数据的第32-47位赋值给第三个第一子数据,赋值后的第三个第一子数据为位宽为16位的数据,并且其第0-15位分别对应于第一数据的第32-47位。以此类推,其他剩余的61个第一子数据分别类似地构成。
在获得了上述64个第一子数据之后,根据本申请实施例,这64个第一子数据分别与第二数据进行乘法操作。在本申请实施例中,由于这样截取的多个第一子数据均为短位宽的数据,因此能够适合于在例如FPGA这样的不具有超长乘法单元的器件中进行乘法操作,并且因此在本申请实施例中,这样分割后的多个第一子数据的乘法操作能够在诸如FPGA的器件中同时进行乘法操作,即可以同时获得第一数据的多个第一子数据的全部乘法操作的结果,从而在下一拍就可以立刻继续进行这些乘法操作的加法操作,从而消除了现有技术中需要大量存储空间来存储乘法操作的中间结果的需要,进一步提升了效率。
上述实施例是对本申请实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本申请实施例具体技术方案进行详细描述。
图2为本申请提供的加解密方法的一个实施例的流程图,图3为本申请提供的加解密方法的一个实施例的时序示意图。
参考图2和图3,根据本申请实施例的加解密方法包括:
S201,获取用于进行加解密运算的第一数据,其中第一数据为其位数大于第一位数阈值的长位宽数据。
根据本申请的实施例,本申请的方法在加解密运算中可以针对需要进行模乘运算的长位宽数据进行处理,例如,在进行非对称密钥的计算中,例如,存在需要进行模乘运算的第一数据和第二数据,其中,第一数据的位宽为1024位,而第二数据的位宽为17位。这样的两个数据的模乘运算通常被涉及超长位宽乘法运算,并且这样的超长位宽乘法运算也通常是最为耗时并消耗最多资源的。为此,在本申请实施例中,可以对这样的两个数据,尤其是具有1024位的第一数据进行处理,以使其能够在不支持超长位宽的FPGA中进行运算。
S202,将第一数据拆分为多个第一子数据,第一子数据为其位数小于第一位数阈值的短位宽数据。
在本申请实施例中,由于FPGA不支持超长位宽的乘法运算,因此,根据本申请实施例的加解密方法可以将长位宽的第一数据拆分为多个短位宽的第一子数据。例如,在本申请实施例中,这样的短位宽可以例如为16位。本申请的加解密方法不限于将长位宽的第一数据拆分为16位位宽的第一子数据,也可以根据实际情况和需要将第一数据拆分为其他位宽的第一子数据,只要该位宽的第一子数据适合于在例如FPGA的器件中进行乘法运算。
S203,将多个第一子数据与第二数据输入至FPGA内的至少一个乘法器。
在本申请实施例中,可以将已经拆分为短位宽的多个第一子数据与第二数据一起输入到例如FPGA内的乘法器,以便于在至少一个乘法器内进行乘法操作。具体地,由于为了在FPGA中进行模乘运算,第一数据被拆分为多个短位宽的第一子数据,因此利用本申请实施例的上述处理,能够在FPGA中同时进行拆分后的多个第一子数据与第二数据的乘法运算。特别地,由于根据本申请的实施例,可以利用FPGA内部靠近DSP列的元模块,例如,FF触发器和LUTM来进行上述乘法以及后续的加法操作。由于这样的元模块距离DSP列可以非常近,因此,其处理速度可以达到DSP的速率(例如,600Mhz)。因此,能够大大加快处理速度。
S204,在一个时钟周期内并行执行多个第一子数据与第二数据的乘法操作,并对乘法操作的结果进行加法操作。
根据本申请实施例,在上述多个第一子数据与第二子数据的乘法操作之后,可以同时获得其乘法操作的结果,并且可以因此将这些乘法操作的结果同步输入到加法模块中,进行加法操作。换言之,在本申请实施例中,这样的乘法操作和加法操作能够在一个时钟周期内进行,因此消除了现有技术中使用额外的存储结构,例如片外缓存来存储乘法操作的中间结果的需要。
S205,将加法操作的结果输出作为第一数据与第二数据的模乘运算结果。
S206,根据模乘运算结果进行加解密操作。
根据本申请实施例,通过在模乘运算中将长位宽的第一数据拆解为多个低位宽的子数据并能够在一个时钟周期的上下两拍内完成乘法运算和加法运算,从而降低了对于结构中存储中间乘法结果的需要,进而实现了低时延和高吞吐的加解密操作。
此外,根据本申请实施例的加解密方法中,步骤S204可以进一步包括:多个第一子数据在一个时钟周期的上半周期内分别与第二数据进行乘法操作;在一个时钟周期的下半周期内执行预定第二位数的乘法结果的加法操作。
根据本申请实施例,在现有的利用FPGA进行超长位宽的模乘运算时,由于乘法运算无法一拍完成,因此,需要大量的寄存器来存储乘法运算的中间结果,因此,极大地降低了运算效率。而利用本申请实施例提供的方法,多个短位宽的第一子数据在FPGA的一个时钟周期的上半周期内分别与所述第二数据进行乘法操作并且在所述一个时钟周期的下半周期内执行预定第二位数的乘法结果的加法操作。因此,多个乘法运算的结果能够在一拍出来,从而能够在下一拍,也就是同一时钟周期的下半周期内进行加法操作,从而额外使用缓存来存储中间结果的需要,提高了模乘的运算效率。
例如,如图3中所示,在本申请的一个实施例中,可以将输入的超长位宽的第一数据拆分为64个第一子数据,即第一子数据1、第一子数据2、……以及第一子数据64,并且在一个时钟周期的上半周期0~N/2(即,tick)中分别在多个乘法器,例如64个乘法器中进行与第二数据的乘法操作,并且乘法结果可以存储在缓存中,之后在下半周期N/2~N(即,tock)中在加法器中利用缓存中的乘法结果直接进行加法操作。
特别地,在本申请实施例中,可以使用最靠近DSP的CLB列来存储一拍出来的乘法结果,例如,可以使用作为FPGA内部的元模块的FF和/或LUTM来作为这样的缓存,由于CLB列极为靠近DSP列,因此其性能能够达到例如600Mhz,进一步提升了运算效率。
此外,根据本申请实施例,在执行加法运算时,可以进一步包括:将多个第一子数据中的第一个第一子数据与第二数据的乘法结果的预定第二位数和第二个第一子数据与第二数据的乘法结果的预定第三位数之和存储在存储器中。
此外,根据本申请实施例,在进行了预定位数的加法操作之后执行进位操作。例如,在本申请实施例中,可以每64位进行一次进位,以确保运算的效率。
图4为本申请提供的加解密装置的一个实施例的结构示意图。参考图4,根据本申请实施例的加解密装置400可以包括获取模块401、拆分模块402、输入模块403、至少一个乘法模块404、加法模块405、输出模块406以及加解密模块407。
例如,在本申请实施例中,获取模块401可以用于获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据。
根据本申请的实施例,本申请的加解密装置400可以在加解密运算中针对需要进行模乘运算的长位宽数据进行处理,例如,在进行非对称密钥的计算中,例如,存在需要进行模乘运算的第一数据和第二数据,其中,第一数据的位宽为1024位,而第二数据的位宽为17位。这样的两个数据的模乘运算通常被涉及超长位宽乘法运算,并且这样的超长位宽乘法运算也通常是最为耗时并消耗最多资源的。为此,在本申请实施例中,加解密装置400可以对这样的两个数据,尤其是具有1024位的第一数据进行处理,以使其能够在不支持超长位宽的FPGA中进行运算。
拆分模块402可以用于将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据。
在本申请实施例中,由于FPGA不支持超长位宽的乘法运算,因此,本申请的加解密装置400可以将长位宽的第一数据拆分为多个短位宽的第一子数据。例如,在本申请实施例中,这样的短位宽可以例如为16位。本申请的加解密装置400不限于将长位宽的第一数据拆分为16位位宽的第一子数据,也可以根据实际情况和需要将第一数据拆分为其他位宽的第一子数据,只要该位宽的第一子数据适合于在例如FPGA的器件中进行乘法运算。
输入模块403可以用于将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法模块404。
在本申请实施例中,本申请的加解密装置400可以将已经拆分为短位宽的多个第一子数据与第二数据一起输入到例如FPGA内的乘法模块,以便于在至少一个乘法模块内进行乘法操作。具体地,由于为了在FPGA中进行模乘运算,本申请的加解密装置400可以将第一数据拆分为多个短位宽的第一子数据,因此利用本申请实施例的加解密装置400,能够在FPGA中同时进行拆分后的多个第一子数据与第二数据的乘法运算。特别地,由于根据本申请的实施例,本申请的加解密装置400可以利用FPGA内部靠近DSP列的元模块,例如,FF触发器和LUTM来进行上述乘法以及后续的加法操作。由于这样的元模块距离DSP列可以非常近,因此,其处理速度可以达到DSP的速率(例如,600Mhz)。因此,能够大大加快处理速度。
至少一个乘法模块404可以用于接收所述输入模块403输入的多个第一子数据与第二数据,在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作。
加法模块405可以用于对所述至少一个乘法模块404输出的乘法结果进行加法操作。
根据本申请实施例,本申请的加解密装置400可以在上述多个第一子数据与第二子数据的乘法操作之后,同时获得其乘法操作的结果,并且可以因此将这些乘法操作的结果同步输入到加法模块405中,进行加法操作。换言之,在本申请实施例中,加解密装置400可以在一个时钟周期内进行这样的乘法操作和加法操作,因此消除了现有技术中使用额外的存储结构,例如片外缓存来存储乘法操作的中间结果的需要。
输出模块406可以用于将所述加法模块405的加法结果输出作为所述第一数据与第二数据的模乘运算结果。
加解密模块407可以用于根据所述输出模块406的输出对所述模乘运算结果进行加解密操作。
此外,根据本申请的实施例,至少一个乘法模块404可以进一步对所述多个第一子数据在所述一个时钟周期的上半周期内分别与所述第二数据进行乘法操作,并且加法模块405进一步用于在所述一个时钟周期的下半周期内执行预定第二位数的乘法结果的加法操作。
根据本申请实施例,在现有的利用FPGA进行超长位宽的模乘运算时,由于乘法运算无法一拍完成,因此,需要大量的寄存器来存储乘法运算的中间结果,因此,极大地降低了运算效率。而利用本申请实施例提供的加解密装置400可以在FPGA的一个时钟周期的上半周期内分别将多个短位宽的第一子数据与所述第二数据进行乘法操作,并且在所述一个时钟周期的下半周期内执行预定第二位数的乘法结果的加法操作。因此,多个乘法运算的结果能够在一拍出来,从而能够在下一拍,也就是同一时钟周期的下半周期内进行加法操作,从而额外使用缓存来存储中间结果的需要,提高了模乘的运算效率。
此外,根据本申请实施例,加解密装置400进一步包括寄存器408,其可以存储预定位数的乘法结果。
例如,在本申请实施例中,可以使用最靠近DSP的CLB列来实施寄存器408,以存储乘法模块404在一拍出来的乘法结果。例如,可以使用作为FPGA内部的元模块的FF和/或LUTM来作为寄存器408,由于CLB列极为靠近DSP列,因此其性能能够达到例如600Mhz,进一步提升了运算效率。
此外,根据本申请实施例,加法模块405可以进一步用于:将所述多个第一子数据中的第一个第一子数据与第二数据的乘法结果的预定第二位数和第二个第一子数据与第二数据的乘法结果的预定第三位数之和存储在所述寄存器中。
此外,根据本申请实施例,加解密装置400可以进一步包括进位模块409,其可以用于在所述加法模块405进行的所述预定位数的加法操作之后执行进位操作。
因此,根据本申请实施例提供的加解密装置400,通过在模乘运算中将长位宽的第一数据拆解为多个低位宽的子数据并能够在一个时钟周期的上下两拍内完成乘法运算和加法运算,从而降低了对于结构中存储中间乘法结果的需要,进而实现了低时延和高吞吐的加解密操作。
以上描述了加解密装置,该装置可实现为一种电子设备。图5为本申请提供的电子设备实施例的结构示意图。如图5所示,该电子设备包括存储器51和处理器52。
存储器51,用于存储程序。除上述程序之外,存储器51还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器51可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器52,不仅仅局限于中央处理器(CPU),还可能为图形处理器(GPU)、现场可编辑门阵列(FPGA)、嵌入式神经网络处理器(NPU)或人工智能(AI)芯片等处理芯片。处理器52,与存储器51耦合,执行存储器51所存储的程序,以用于:获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法单元;
在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;
将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及
根据所述模乘运算结果进行加解密操作。
进一步,如图5所示,电子设备还可以包括:通信组件53、电源组件54、音频组件55、显示器56等其它组件。图5中仅示意性给出部分组件,并不意味着电子设备只包括图5所示组件。
通信组件53被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件53经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件53还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件54,为电子设备的各种组件提供电力。电源组件54可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件55被配置为输出和/或输入音频信号。例如,音频组件55包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器51或经由通信组件53发送。在一些实施例中,音频组件55还包括一个扬声器,用于输出音频信号。
显示器56包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种加解密方法,其特征在于,包括:
获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法器;
在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;
将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及
根据所述模乘运算结果进行加解密操作;
其中,所述在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作包括:
所述多个第一子数据在所述一个时钟周期的上半周期内分别与所述第二数据进行乘法操作;以及
在所述一个时钟周期的下半周期内执行预定第二位数的乘法结果的加法操作。
2.根据权利要求1所述的加解密方法,其特征在于,所述在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作包括:
将预定位数的乘法结果存储在所述FPGA的寄存器中。
3.根据权利要求1所述的加解密方法,其特征在于,所述将乘法结果进行加法操作包括:
将所述多个第一子数据中的第一个第一子数据与第二数据的乘法结果的预定第二位数和第二个第一子数据与第二数据的乘法结果的预定第三位数之和存储在存储器中。
4.根据权利要求1所述的加解密方法,其特征在于,所述方法进一步包括:
在预定位数的加法操作之后执行进位操作。
5.一种加解密装置,其特征在于,包括:
获取模块,用于获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
拆分模块,用于将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
输入模块,用于将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法模块;
至少一个乘法模块,用于接收所述输入模块输入的多个第一子数据与第二数据,在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作;
加法模块,用于对所述至少一个乘法模块输出的乘法结果进行加法操作;
输出模块,用于将所述加法模块的加法结果输出作为所述第一数据与第二数据的模乘运算结果;以及
加解密模块,用于根据所述输出模块输出对所述模乘运算结果进行加解密操作;
其中,所述至少一个乘法模块进一步用于对所述多个第一子数据在所述一个时钟周期的上半周期内分别与所述第二数据进行乘法操作,并且
所述加法模块进一步用于在所述一个时钟周期的下半周期内执行预定第二位数的乘法结果的加法操作。
6.根据权利要求5所述的加解密装置,其特征在于,所述加解密装置进一步包括寄存器,所述寄存器用于存储预定位数的乘法结果。
7.根据权利要求6所述的加解密装置,其特征在于,所述加法模块进一步用于:
将所述多个第一子数据中的第一个第一子数据与第二数据的乘法结果的预定第二位数和第二个第一子数据与第二数据的乘法结果的预定第三位数之和存储在所述寄存器中。
8.根据权利要求5所述的加解密装置,其特征在于,所述加解密装置进一步包括进位模块,用于在所述加法模块进行的预定位数的加法操作之后执行进位操作。
9.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法器;
在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;
将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及
根据所述模乘运算结果进行加解密操作;
其中,所述在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作包括:
所述多个第一子数据在所述一个时钟周期的上半周期内分别与所述第二数据进行乘法操作;以及
在所述一个时钟周期的下半周期内执行预定第二位数的乘法结果的加法操作。
10.一种计算机可读存储介质,在所述计算机可读存储介质上存储有指令,所述指令包括:
获取用于进行加解密运算的第一数据,其中所述第一数据为其位数大于第一位数阈值的长位宽数据;
将所述第一数据拆分为多个第一子数据,所述第一子数据为其位数小于所述第一位数阈值的短位宽数据;
将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法器;
在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;
将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及
根据所述模乘运算结果进行加解密操作;
其中,所述在一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作包括:
所述多个第一子数据在所述一个时钟周期的上半周期内分别与所述第二数据进行乘法操作;以及
在所述一个时钟周期的下半周期内执行预定第二位数的乘法结果的加法操作。
CN201911025168.7A 2019-10-25 2019-10-25 加解密方法和装置、电子设备以及计算机可读存储介质 Active CN112711395B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911025168.7A CN112711395B (zh) 2019-10-25 2019-10-25 加解密方法和装置、电子设备以及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911025168.7A CN112711395B (zh) 2019-10-25 2019-10-25 加解密方法和装置、电子设备以及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112711395A CN112711395A (zh) 2021-04-27
CN112711395B true CN112711395B (zh) 2024-06-04

Family

ID=75540847

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911025168.7A Active CN112711395B (zh) 2019-10-25 2019-10-25 加解密方法和装置、电子设备以及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112711395B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116225366B (zh) * 2023-03-06 2024-04-05 开源网安物联网技术(武汉)有限公司 应用于嵌入式流水cpu内核的乘法指令扩展方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2818765A1 (fr) * 2000-12-21 2002-06-28 Goldkey Technology Corp Multiplicateur modulaire et processeur de cryptage/decryptage utilisant le multiplicateur modulaire
CN201145892Y (zh) * 2008-01-22 2008-11-05 西北工业大学 三十二位整数乘法器
CN102591615A (zh) * 2012-01-16 2012-07-18 中国人民解放军国防科学技术大学 结构化混合位宽乘法运算方法及装置
CN104407836A (zh) * 2014-10-14 2015-03-11 中国航天科技集团公司第九研究院第七七一研究所 利用定点乘法器进行级联乘累加运算的装置和方法
CN106528046A (zh) * 2016-11-02 2017-03-22 上海集成电路研发中心有限公司 长位宽时序累加乘法器
CN109814838A (zh) * 2019-03-28 2019-05-28 贵州华芯通半导体技术有限公司 获取加解密运算中的中间结果组的方法、硬件装置和系统
CN110119265A (zh) * 2018-02-06 2019-08-13 成都鼎桥通信技术有限公司 乘法运算实现方法、装置、计算机存储介质及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2818765A1 (fr) * 2000-12-21 2002-06-28 Goldkey Technology Corp Multiplicateur modulaire et processeur de cryptage/decryptage utilisant le multiplicateur modulaire
CN201145892Y (zh) * 2008-01-22 2008-11-05 西北工业大学 三十二位整数乘法器
CN102591615A (zh) * 2012-01-16 2012-07-18 中国人民解放军国防科学技术大学 结构化混合位宽乘法运算方法及装置
CN104407836A (zh) * 2014-10-14 2015-03-11 中国航天科技集团公司第九研究院第七七一研究所 利用定点乘法器进行级联乘累加运算的装置和方法
CN106528046A (zh) * 2016-11-02 2017-03-22 上海集成电路研发中心有限公司 长位宽时序累加乘法器
CN110119265A (zh) * 2018-02-06 2019-08-13 成都鼎桥通信技术有限公司 乘法运算实现方法、装置、计算机存储介质及电子设备
CN109814838A (zh) * 2019-03-28 2019-05-28 贵州华芯通半导体技术有限公司 获取加解密运算中的中间结果组的方法、硬件装置和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Barrett模乘算法的RSA密码协处理器设计;麻永新;曾晓洋;吴敏;孙承绶;;系统工程与电子技术;20060620(06);全文 *

Also Published As

Publication number Publication date
CN112711395A (zh) 2021-04-27

Similar Documents

Publication Publication Date Title
Roy et al. FPGA-based high-performance parallel architecture for homomorphic computing on encrypted data
US9450603B2 (en) Compression of integer data using a common divisor
TWI601066B (zh) 具有用於提供多模基-2x蝶形向量處理電路的可程式設計資料路徑的向量處理引擎以及相關的向量處理器、系統和方法
US10311127B2 (en) Sparse matrix vector multiplication
CN110516159B (zh) 一种信息推荐方法、装置、电子设备及存储介质
CN108880700B (zh) 时钟信号的频率跳变方法、频率跳变装置及移动终端
CN110825436B (zh) 应用于人工智能芯片的计算方法和人工智能芯片
CN106557436A (zh) 终端的内存压缩功能使能方法及装置
US8281111B2 (en) System and method to execute a linear feedback-shift instruction
CN113177225A (zh) 基于区块链的数据存储证明方法、装置、设备和存储介质
CN112711395B (zh) 加解密方法和装置、电子设备以及计算机可读存储介质
CN112948126A (zh) 数据处理方法、装置及芯片
CN112929300B (zh) 一种数据处理装置、方法、基站和存储介质
US7693926B2 (en) Modular multiplication acceleration circuit and method for data encryption/decryption
JP6737869B2 (ja) スライディングウィンドウ演算
CN108595973B (zh) 指令确定方法、设备控制方法、装置和系统
CN116760936A (zh) 处理装置、控制方法、控制装置、电子设备及介质
CN114637697A (zh) 数据流处理装置、处理方法、芯片及电子设备
CN113467752A (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
CN112487448B (zh) 一种加密信息处理装置、方法及计算机设备
CN110321232B (zh) 消息的处理方法、装置及电子设备
CN116304744A (zh) 数据处理方法、装置、电子设备、可读存储介质和芯片
CN111510153B (zh) 数列的压缩、解压缩方法和装置以及电子设备
CN109672704B (zh) 消息的处理方法、装置及电子设备
CN117880440A (zh) 选择滤波器电路、图像处理方法、装置、电子设备及芯片

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