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

文档序号:661174 发布日期:2021-04-27 浏览:28次 >En<

阅读说明:本技术 加解密方法和装置、电子设备以及计算机可读存储介质 (Encryption and decryption method and device, electronic equipment and computer readable storage medium ) 是由 陈沛文 张振祥 于 2019-10-25 设计创作,主要内容包括:本申请实施例提供了一种加解密方法和装置、电子设备以及计算机可读存储介质。该方法包括:获取用于进行加解密运算的第一数据;将所述第一数据拆分为多个第一子数据;将所述多个第一子数据与第二数据输入至FPGA内的至少一个乘法器;一个时钟周期内并行执行所述多个第一子数据与所述第二数据的乘法操作,并将乘法结果进行加法操作;将所述加法操作的结果输出作为所述第一数据与第二数据的模乘运算结果;以及根据所述模乘运算结果进行加解密操作。本申请实施例通过在模乘运算中将长位宽的第一数据拆解为多个低位宽的子数据并能够在一个时钟周期的上下两拍内完成乘法运算和加法运算,从而降低了对于结构中存储中间乘法结果的需要,进而实现了低时延和高吞吐的加解密操作。(The embodiment of the application provides an encryption and decryption method and device, electronic equipment and a computer readable storage medium. The method comprises the following steps: acquiring first data for encryption and decryption operation; splitting the first data into a plurality of first subdata; inputting the plurality of first subdata and second data into at least one multiplier in the FPGA; executing the multiplication operation of the plurality of first subdata and the second data in parallel in one clock cycle, and adding the multiplication result; outputting a result of the addition operation as a result of a modular multiplication operation of the first data and the second data; and performing encryption and decryption operation according to the modular multiplication operation result. According to the embodiment of the application, the first data with the long bit width is decomposed into the plurality of the sub-data with the low bit width in the modular multiplication operation, and the multiplication operation and the addition operation can be completed within two beats above and below one clock period, so that the requirement for storing the intermediate multiplication result in the structure is reduced, and the encryption and decryption operation with low time delay and high throughput is realized.)

具体实施方式

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图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、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种支持灵活扩展的微服务分层结构

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类