CN111832051B - 一种基于fpga的对称加解密方法及系统 - Google Patents

一种基于fpga的对称加解密方法及系统 Download PDF

Info

Publication number
CN111832051B
CN111832051B CN202010662855.6A CN202010662855A CN111832051B CN 111832051 B CN111832051 B CN 111832051B CN 202010662855 A CN202010662855 A CN 202010662855A CN 111832051 B CN111832051 B CN 111832051B
Authority
CN
China
Prior art keywords
processed
data
symmetric
encryption
data segment
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
CN202010662855.6A
Other languages
English (en)
Other versions
CN111832051A (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.)
Zhengzhou Xinda Jiean Information Technology Co Ltd
Original Assignee
Zhengzhou Xinda Jiean Information Technology Co 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 Zhengzhou Xinda Jiean Information Technology Co Ltd filed Critical Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority to CN202010662855.6A priority Critical patent/CN111832051B/zh
Publication of CN111832051A publication Critical patent/CN111832051A/zh
Application granted granted Critical
Publication of CN111832051B publication Critical patent/CN111832051B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Landscapes

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

Abstract

本发明提出了一种基于FPGA的对称加解密方法及系统,系统包括:正向FIFO缓存队列、反向FIFO缓存队列、算法池以及控制模块,所述算法池包括多个对称算法模块
Figure 100004_DEST_PATH_IMAGE002
,每个对称算法模块分别用于对密钥段进行密钥扩展得到对应子密钥,并对相应待处理数据段进行加解密处理;控制模块按照固定字节R对待处理数据包ai进行分组为密钥段、待处理数据段
Figure 100004_DEST_PATH_IMAGE004
;并将密钥段分别发送给算法池中的多个对称算法模块
Figure 704279DEST_PATH_IMAGE002
进行密钥扩展,依次向多个对称算法模块
Figure 33629DEST_PATH_IMAGE002
分配相应待处理数据段,接收对应的完成数据段
Figure 232529DEST_PATH_IMAGE004
并依次传输给反向FIFO缓存队列中,能够提高算法池的资源利用率,进一步提升了对单个待处理数据包的加解密效率。

Description

一种基于FPGA的对称加解密方法及系统
技术领域
本发明属于计算机技术领域,尤其涉及一种可以提高FPGA板卡整体加解密效率的基于FPGA的对称加解密方法及系统。
背景技术
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。在信息安全日益受到人们重视的信息化时代,数据处理及存储产品要求不止具有处理数据的功能,还需要具有病毒防护和加解密的功能。针对此项要求,目前市场上有软件加解密和硬件加解密两种方案,而其中硬件加解密由于其速度快,安全性高而受到研究者的重视。
现有技术中,硬件加解密较多地采用FPGA实现。具体的,主机与FPGA板卡进行通信连接,如果主机需要对某些数据包进行加解密处理,则需要将待处理的数据包分别写入各个正向内存块中,由于各个正向内存块分别对应FPGA板卡内不同的对称算法模块(如SM4)。例如:对于正向内存块1的数据,FPGA板卡的控制模块只会传送给对称算法模块1处理;对于正向内存块2的数据,FPGA板卡的控制模块只会传送给对称算法模块2处理;对于正向内存块n的数据,FPGA板卡的控制模块只会传送给对称算法模块n处理;在具体应用场景中,如果只向某个正向内存块(如1)或某些正向内存块(如1、2、3)写入待处理的数据,则对于FPGA板卡来说,只会对应启用对称算法模块1或对称算法模块1-3进行加解密处理,而其它的对称算法模块并未得以有效利用,进而导致对称算法模块的资源利用率较低;且单个对称算法模块一次性全部负责对单个正向内存块中的数据进行加解密处理,处理速度有限,进而影响FPGA板卡的整体加解密的效率。
发明内容
为了解决上述问题,本发明在于提供一种基于FPGA的对称加解密方法和系统。
本发明的目的是这样实现的:
本发明第一方面提出一种基于FPGA的对称加解密方法,所述方法包括以下步骤:
步骤1-1)、FPGA板卡接收到主机传送的待处理数据包ai,并缓存在正向FIFO缓存队列中;
步骤1-2)、由控制模块按照固定字节R对所述待处理数据包ai进行分组为密钥段、待处理数据段
Figure DEST_PATH_IMAGE002
步骤1-3)、由所述控制模块将所述密钥段分别发送给算法池中的第
Figure DEST_PATH_IMAGE004
对称算法模块,并使多个对称算法模块对所述密钥段进行密钥扩展,得到对应的子密钥,其中m大于等于n;
步骤1-4)、待所有第
Figure 138272DEST_PATH_IMAGE004
对称算法模块密钥扩展完成后,由所述控制模块依次向第
Figure 117729DEST_PATH_IMAGE004
对称算法模块分配待处理数据段;
步骤1-5)、第
Figure 897466DEST_PATH_IMAGE004
对称算法模块分别采用扩展得到的子密钥对分配得到的待处理数据段进行对称加解密处理,并得到对应的完成数据段;
步骤1-6)、由所述控制模块将各个完成数据段依次传输给反向FIFO缓存队列中;
步骤1-7)、判断是否将待处理数据包ai的所有待处理数据段
Figure 354992DEST_PATH_IMAGE002
分配给对应的对称算法模块进行加解密处理,并将对应的完成数据段
Figure 169364DEST_PATH_IMAGE002
传输给反向FIFO缓存队列中,如果是,则进入步骤1-8),如果否,则返回步骤1-4);
步骤1-8)、使完成数据段
Figure 54144DEST_PATH_IMAGE002
在反向FIFO缓存队列中组成完成数据包Ai,以待返回给主机。
进一步的,在步骤1-1)之前,所述方法还包括:
所述主机预分配有第
Figure DEST_PATH_IMAGE006
正向内存块和第
Figure 374705DEST_PATH_IMAGE006
反向内存块,且第
Figure 573605DEST_PATH_IMAGE006
正向内存块正向内存块与第
Figure 304801DEST_PATH_IMAGE006
反向内存块一一对应,第
Figure 298164DEST_PATH_IMAGE006
正向内存块分别用于缓存待处理数据包,第
Figure 114811DEST_PATH_IMAGE006
反向内存块分别用于缓存完成数据包。
更进一步的,在上述步骤1-1)之前,所述方法还包括:
向所述主机的正向内存块j写入所述待处理数据包ai,通过命令字FIFO提示FPGA板卡,其中j大于等于1小于等于w;
所述FPGA板卡基于命令字FIFO得知所述正向内存块j已存有待处理数据包ai
所述FPGA板卡从所述正向内存块j读取出所述待处理数据包ai,并缓存在所述正向FIFO缓存队列中,同时使所述待处理数据包ai携带所述j的相关信息。
进一步的,在上述步骤1-8)之后,所述方法还包括:
当所述完成数据包Ai更新至所述反向FIFO缓存队列时,基于所述完成数据包Ai携带的所述j的相关信息确定出主机对应的反向内存块j;
将所述完成数据包Ai传输给所述反向内存块j。
进一步的,在上述步骤1-8)之后,所述方法还包括:
按照上述待处理数据包ai的处理方式对所述正向FIFO缓存队列中的待处理数据包bi进行加解密处理,得到对应的完成数据包Bi
所述固定字节为16字节,所述对称算法模块的数量为32个,且每个对称算法模块采用国密SM4算法,且所述国密SM4算法的一次加解密的时长为32个时钟周期。
进一步的,所述步骤1-2)至步骤1-6)具体包括如下步骤:
步骤2-1)、所述控制模块将所述待处理数据包ai按照16字节进行分组为密钥段、待处理数据段
Figure 851823DEST_PATH_IMAGE002
步骤2-2)、所述控制模块预先读出密钥段,并分别发送给各个对称算法模块,由各个对称算法模块对所述密钥段进行密钥扩展,并得到32个子密钥,;
步骤2-3)、待所有的对称算法模块密钥扩展完成后,控制模块通过第一个时钟周期读取第1待处理数据段,并将其传送给第1对称算法模块,由所述第1对称算法模通过扩展的子密钥对第1待处理数据段进行加解密,且加解密的时长为32个时钟周期;
步骤2-4)、所述控制模块通过第二个时钟周期读取第2待处理数据段,并将其传送给第2对称算法模块,由所述第2对称算法模块通过扩展的子密钥对第2待处理数据段进行加解密,且加解密的时长为32个时钟周期;
步骤2-5)、重复步骤2-4),直至所述控制模块通过第32个时钟周期读取第32待处理数据段,并将其传送给第32对称算法模块,由所述第32对称算法模块通过扩展的子密钥第32对待处理数据段进行加解密,且加解密的时间为32个时钟周期;
步骤2-6)、所述控制模块通过第33个时钟周期将第1对称算法模块加解密的完成第1数据段写入反向FIFO缓存队列;
步骤2-7)、所述控制模块通过第34个时钟周期将第2对称算法模块加解密的完成第2数据段写入反向FIFO缓存队列;
步骤2-8)、重复步骤2-7),直至所述控制模块将第32对称算法模块加解密的完成第32数据段写入反向FIFO缓存队列;
步骤2-9)、重复步骤2-2)至步骤2-8),直至将所有的待处理数据段
Figure 437525DEST_PATH_IMAGE002
均进行加解密处理,并将得到的完成数据段
Figure 867369DEST_PATH_IMAGE002
传送至反向FIFO缓存队列。
进一步的,所述步骤2-8)之后还包括:
步骤3-1)、如果m不为32的整数倍,预设m=k*32+b,k为正整数,b小于32,在完成前第k*32待处理数据段的加解密后,所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+1,并将其传送给第1对称算法模块,由第1对称算法模块通过扩展的子密钥对待处理数据段k*32+1进行加解密,且加解密的时间为32个时钟周期;
步骤3-2)、所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+2,并将其传送给第2对称算法模块,由第2对称算法模块通过扩展的子密钥对待处理数据段k*32+2进行加解密,且加解密的时间为32个时钟周期;
步骤3-3)、重复步骤3-2),直至所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+b,并将其传送给第b对称算法模块,由第b对称算法模块通过扩展的子密钥对待处理数据段k*32+b进行加解密,且加解密的时间为32个时钟周期;
步骤3-3)、所述控制模块等待32-b个时钟周期,将第1对称算法模块加解密的完成数据段k*32+1写入反向FIFO缓存队列中;
步骤3-4)、所述控制模块依次将第2、3、…、b对称算法模块加解密的完成数据段k*32+2、k*32+3、…、k*32+b写入反向FIFO缓存队列中,并与在前的完成数据段共同组装成完成数据包Ai
一种基于FPGA的对称加解密系统,用于实现上述权利要求1至8任意一项所述的基于FPGA的对称加解密方法,所述系统包括:
正向FIFO缓存队列,用于接收由主机传送的待处理数据包ai
反向FIFO缓存队列,用于缓存完成数据包Ai,以待返回给所述主机;
算法池,包括多个对称算法模块
Figure 171311DEST_PATH_IMAGE004
,每个对称算法模块分别用于对密钥段进行密钥扩展得到对应的子密钥,并对相应的待处理数据段进行加解密处理;
控制模块,按照固定字节R对所述待处理数据包ai进行分组为密钥段、待处理数据段
Figure 508752DEST_PATH_IMAGE002
;将所述密钥段分别发送给算法池中的多个对称算法模块
Figure 152223DEST_PATH_IMAGE004
;待所有对称算法模块
Figure 549706DEST_PATH_IMAGE004
密钥扩展完成后,依次向多个对称算法模块
Figure 278628DEST_PATH_IMAGE004
分配待第1处理数据段、第2待处理数据段、第3待处理数据段、…、第n待处理数据段;待多个对称算法模块
Figure 419759DEST_PATH_IMAGE004
分别将待处理数据段进行对称加解密后,接收对应的完成数据段
Figure 917736DEST_PATH_IMAGE004
并依次传输给反向FIFO缓存队列中;其中m大于等于n。
进一步的,所述对称算法模块采用国密SM4算法、DES算法、3DES算法、AES算法、RC算法的任意一种或多种。
本发明具有如下积极效果:
本发明提出的基于FPGA的对称加解密方法和系统通过对待处理数据包进行分组为多个待处理数据段,并使算法池中的各个对称算法模块均能分配得到对应的待处理数据段,进而充分调动算法池中的各个对称算法模块同时对数据包进行加解密处理,提高了对称算法模块的资源利用率,进一步提升了单个待处理数据包的加解密效率。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明一种基于FPGA的对称加解密方法的流程图。
图2示出了本发明一种基于FPGA的对称加解密系统的框图。
图3示出了本发明一种待处理数据包的分组示意图。
图4示出了本发明将待处理数据段分配给对称算法模块的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
如图1所示,本发明第一方面提出一种基于FPGA的对称加解密方法,所述方法包括以下步骤:
步骤1-1)、FPGA板卡接收到主机传送的待处理数据包ai,并缓存在正向FIFO缓存队列中;
步骤1-2)、由控制模块按照固定字节R对所述待处理数据包ai进行分组为密钥段、待处理数据段
Figure 754630DEST_PATH_IMAGE002
步骤1-3)、由所述控制模块将所述密钥段分别发送给算法池中的第
Figure 705268DEST_PATH_IMAGE004
对称算法模块,并使多个对称算法模块对所述密钥段进行密钥扩展,得到对应的子密钥,其中m大于等于n;
步骤1-4)、待所有第
Figure 650091DEST_PATH_IMAGE004
对称算法模块密钥扩展完成后,由所述控制模块依次向第
Figure 2575DEST_PATH_IMAGE004
对称算法模块分配待处理数据段;
步骤1-5)、第
Figure 7440DEST_PATH_IMAGE004
对称算法模块分别采用扩展得到的子密钥对分配得到的待处理数据段进行对称加解密处理,并得到对应的完成数据段;
步骤1-6)、由所述控制模块将各个完成数据段依次传输给反向FIFO缓存队列中;
步骤1-7)、判断是否将待处理数据包ai的所有待处理数据段
Figure 445374DEST_PATH_IMAGE002
分配给对应的对称算法模块进行加解密处理,并将对应的完成数据段
Figure 928308DEST_PATH_IMAGE002
传输给反向FIFO缓存队列中,如果是,则进入步骤1-8),如果否,则返回步骤1-4);
步骤1-8)、使完成数据段
Figure 400878DEST_PATH_IMAGE002
在反向FIFO缓存队列中组成完成数据包Ai,以待返回给主机。
需要说明的是,所述正向FIFO缓存队列和所述反向FIFO缓存队列分别支持“先进先出”的原则。可以理解,主机有可能需要对多个待处理数据包,如待处理数据包ai、待处理数据包bi、待处理数据包ci、待处理数据包di等等。而这些待处理数据包将会按照先进先出的原则写入正向FIFO缓存队列中,如果按照时间顺序,先写入的是处理数据包ai,则当处理数据包ai更新至所述正向FIFO缓存队列时,则可以对处理数据包ai进行分组成密钥段、待处理数据段
Figure 514327DEST_PATH_IMAGE002
,然后由控制模块分别将待处理数据段
Figure 564192DEST_PATH_IMAGE002
分配给对应的对称算法模块进行加解密处理。待各个待处理数据段加解密完成后,由控制模块将对应的完成数据段
Figure 850817DEST_PATH_IMAGE002
分别传输给反向FIFO缓存队列中,并组成完成数据包Ai,以待返回给主机。
进一步的,在步骤1-1)之前,所述方法还包括:
所述主机预分配有第
Figure 912314DEST_PATH_IMAGE006
正向内存块和第
Figure 258981DEST_PATH_IMAGE006
反向内存块,且第
Figure 671508DEST_PATH_IMAGE006
正向内存块正向内存块与第
Figure 764754DEST_PATH_IMAGE006
反向内存块一一对应,第
Figure 946336DEST_PATH_IMAGE006
正向内存块分别用于缓存待处理数据包,第
Figure 198326DEST_PATH_IMAGE006
反向内存块分别用于缓存完成数据包。
更进一步的,在上述步骤1-1)之前,所述方法还包括:
向所述主机的正向内存块j写入所述待处理数据包ai,通过命令字FIFO提示FPGA板卡,其中j大于等于1小于等于w;
所述FPGA板卡基于命令字FIFO得知所述正向内存块j已存有待处理数据包ai
所述FPGA板卡从所述正向内存块j读取出所述待处理数据包ai,并缓存在所述正向FIFO缓存队列中,同时使所述待处理数据包ai携带所述j的相关信息。
进一步的,在上述步骤1-8)之后,所述方法还包括:
当所述完成数据包Ai更新至所述反向FIFO缓存队列时,基于所述完成数据包Ai携带的所述j的相关信息确定出主机对应的反向内存块j;
将所述完成数据包Ai传输给所述反向内存块j。
可以理解,在所述FPGA板卡从正向内存块j读取出待处理数据ai的同时,可以对所述待处理数据ai加入编号k,后期将完成数据包Ai返回给主机内存时,可以基于编号k准确定位到反向内存块j。而对于主机而言,前期只需要将待处理数据包ai写入正向内存块j,后期即可去对应的反向内存块j等待接收对应的完成数据包Ai即可。
进一步的,在上述步骤1-8)之后,所述方法还包括:
按照上述待处理数据包ai的处理方式对所述正向FIFO缓存队列中的待处理数据包bi进行加解密处理,得到对应的完成数据包Bi
可以理解,待处理数据包可能为多个,并堆放在正向FIFO缓存队列中,当前一个待处理数据包(如ai)的所有分组的数据段被控制模块读出,并传输至算法模块进行加解密后,则后一个待处理数据包(bi)即可更新至正向FIFO缓存队列的最前端,并进行分组加解密处理。
进一步的,所述固定字节为16字节,所述对称算法模块的数量为32个,且每个对称算法模块采用国密SM4算法,且所述国密SM4算法的一次加解密的时长为32个时钟周期。
根据本发明的具体实施例,所述步骤1-2)至步骤1-6)具体包括如下步骤:
步骤2-1)、所述控制模块将所述待处理数据包ai按照16字节进行分组为密钥段、待处理数据段
Figure 98149DEST_PATH_IMAGE002
步骤2-2)、所述控制模块预先读出密钥段,并分别发送给各个对称算法模块,由各个对称算法模块对所述密钥段进行密钥扩展,并得到32个子密钥,;
步骤2-3)、待所有的对称算法模块密钥扩展完成后,控制模块通过第一个时钟周期读取第1待处理数据段,并将其传送给第1对称算法模块,由所述第1对称算法模通过扩展的子密钥对第1待处理数据段进行加解密,且加解密的时长为32个时钟周期;
步骤2-4)、所述控制模块通过第二个时钟周期读取第2待处理数据段,并将其传送给第2对称算法模块,由所述第2对称算法模块通过扩展的子密钥对第2待处理数据段进行加解密,且加解密的时长为32个时钟周期;
步骤2-5)、重复步骤2-4),直至所述控制模块通过第32个时钟周期读取第32待处理数据段,并将其传送给第32对称算法模块,由所述第32对称算法模块通过扩展的子密钥第32对待处理数据段进行加解密,且加解密的时间为32个时钟周期;
步骤2-6)、所述控制模块通过第33个时钟周期将第1对称算法模块加解密的完成第1数据段写入反向FIFO缓存队列;
步骤2-7)、所述控制模块通过第34个时钟周期将第2对称算法模块加解密的完成第2数据段写入反向FIFO缓存队列;
步骤2-8)、重复步骤2-7),直至所述控制模块将第32对称算法模块加解密的完成第32数据段写入反向FIFO缓存队列;
步骤2-9)、重复步骤2-2)至步骤2-8),直至将所有的待处理数据段
Figure 726576DEST_PATH_IMAGE002
均进行加解密处理,并将得到的完成数据段
Figure 28245DEST_PATH_IMAGE002
传送至反向FIFO缓存队列。
可以理解,当所述控制模块将待处理数据段32传输给所述对称算法模块32后,则距离控制模块传送待处理数据段1传送给对称算法模块1已过32个时钟周期,此时,对称算法模块1已完成加解密过程,并得到对应的完成数据段1,继而控制模块可以在第33个时钟周期将完成数据段1传送给反向FIFO缓存队列。同理,当所述控制模块将对称算法模块1加解密的完成数据段1写入反向FIFO缓存队列中,则距离先前控制模块将待处理数据段2传送给对称算法模块2已过32个时钟周期,此时,对称算法模块2已完成加解密过程,并得到对应的完成数据段2,继而控制模块可以在第34个时钟周期将完成数据段2传送给反向FIFO缓存队列。
根据本发明的具体实施例,所述步骤2-8)之后还包括:
步骤3-1)、如果m不为32的整数倍,预设m=k*32+b,k为正整数,b小于32,在完成前第k*32待处理数据段的加解密后,所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+1,并将其传送给第1对称算法模块,由第1对称算法模块通过扩展的子密钥对待处理数据段k*32+1进行加解密,且加解密的时间为32个时钟周期;
步骤3-2)、所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+2,并将其传送给第2对称算法模块,由第2对称算法模块通过扩展的子密钥对待处理数据段k*32+2进行加解密,且加解密的时间为32个时钟周期;
步骤3-3)、重复步骤3-2),直至所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+b,并将其传送给第b对称算法模块,由第b对称算法模块通过扩展的子密钥对待处理数据段k*32+b进行加解密,且加解密的时间为32个时钟周期;
步骤3-3)、所述控制模块等待32-b个时钟周期,将第1对称算法模块加解密的完成数据段k*32+1写入反向FIFO缓存队列中;
步骤3-4)、所述控制模块依次将第2、3、…、b对称算法模块加解密的完成数据段k*32+2、k*32+3、…、k*32+b写入反向FIFO缓存队列中,并与在前的完成数据段共同组装成完成数据包Ai
可以理解,所述控制模块读取待处理数据段k*32+b与读取待处理数据段k*32+1之间的时差为b个时钟周期,换言之,当所述控制模块读取待处理数据段k*32+b时,对称算法模块1并未对待处理数据段k*32+1完成加解密计算,因此,所述控制模块需要等待32-b个时钟周期,对称算法模块1才会完成待处理数据段k*32+1的加解密计算过程。
如图2所示,本发明第二方面还提出一种基于FPGA的对称加解密系统,用于实现上述的基于FPGA的对称加解密方法,所述系统包括:
正向FIFO缓存队列,用于接收由主机传送的待处理数据包ai
反向FIFO缓存队列,用于缓存完成数据包Ai,以待返回给所述主机;
算法池,包括多个对称算法模块
Figure 451136DEST_PATH_IMAGE004
,每个对称算法模块分别用于对密钥段进行密钥扩展得到对应的子密钥,并对相应的待处理数据段进行加解密处理;
控制模块,按照固定字节R对所述待处理数据包ai进行分组为密钥段、待处理数据段
Figure 838255DEST_PATH_IMAGE002
;将所述密钥段分别发送给算法池中的多个对称算法模块
Figure 270373DEST_PATH_IMAGE004
;待所有对称算法模块
Figure 160969DEST_PATH_IMAGE004
密钥扩展完成后,依次向多个对称算法模块
Figure 20340DEST_PATH_IMAGE004
分配待处理数据段1、待处理数据段2、待处理数据段3、…、待处理数据段n;待多个对称算法模块
Figure 629176DEST_PATH_IMAGE004
分别将待处理数据段进行对称加解密后,接收对应的完成数据段
Figure 864985DEST_PATH_IMAGE004
并依次传输给反向FIFO缓存队列中;其中m大于等于n。
具体的,所述对称算法模块采用国密SM4算法、DES算法、3DES算法、AES算法、RC算法的任意一种或多种。但不限于此。
本发明提出的基于FPGA的对称加解密方法和系统通过对待处理数据包进行分组为多个待处理数据段,并使算法池中的各个对称算法模块均能分配得到对应的待处理数据段,进而充分调动算法池中的各个对称算法模块同时对数据包进行加解密处理,提高了对称算法模块的资源利用率,进一步提升了单个待处理数据包的加解密效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种基于FPGA的对称加解密方法,其特征在于,所述方法包括以下步骤:
步骤1-1)、FPGA板卡接收到主机传送的待处理数据包ai,并缓存在正向FIFO缓存队列中;
步骤1-2)、由控制模块按照固定字节R对所述待处理数据包ai进行分组为密钥段、待处理数据段1,2,3,...,m;
步骤1-3)、由所述控制模块将所述密钥段分别发送给算法池中的第1,2,3,...,n个对称算法模块,并使多个对称算法模块对所述密钥段进行密钥扩展,得到对应的子密钥,其中m大于等于n;
步骤1-4)、待所有第1,2,3,...,n个对称算法模块密钥扩展完成后,由所述控制模块依次向第1,2,3,...,n个对称算法模块分配待处理数据段;
步骤1-5)、第1,2,3,...,n个对称算法模块分别采用扩展得到的子密钥对分配得到的待处理数据段进行对称加解密处理,并得到对应的完成数据段;
步骤1-6)、由所述控制模块将各个完成数据段依次传输给反向FIFO缓存队列中;
步骤1-7)、判断是否将待处理数据包ai的所有待处理数据段1,2,3,...,m分配给对应的对称算法模块进行加解密处理,并将对应的完成数据段1,2,3,...,m传输给反向FIFO缓存队列中,如果是,则进入步骤1-8),如果否,则返回步骤1-4);
步骤1-8)、使完成数据段1,2,3,...,m在反向FIFO缓存队列中组成完成数据包Ai,以待返回给主机。
2.根据权利要求1所述的一种基于FPGA的对称加解密方法,其特征在于,在步骤1-1)之前,所述方法还包括:
所述主机预分配有第1,2,3,...,w个正向内存块和第1,2,3,...,w个反向内存块,且第1,2,3,...,w个正向内存块与第1,2,3,...,w个反向内存块一一对应,第1,2,3,...,w个正向内存块分别用于缓存待处理数据包,第1,2,3,...,w个反向内存块分别用于缓存完成数据包。
3.根据权利要求2所述的一种基于FPGA的对称加解密方法,其特征在于,在上述步骤1-1)之前,所述方法还包括:
向所述主机的正向内存块j写入所述待处理数据包ai,通过命令字提示FPGA板卡,其中j大于等于1小于等于w;
所述FPGA板卡基于命令字得知所述正向内存块j已存有待处理数据包ai
所述FPGA板卡从所述正向内存块j读取出所述待处理数据包ai,并缓存在所述正向FIFO缓存队列中,同时使所述待处理数据包ai携带所述j的相关信息。
4.根据权利要求3所述的一种基于FPGA的对称加解密方法,其特征在于,在上述步骤1-8之后,所述方法还包括:
当所述完成数据包Ai更新至所述反向FIFO缓存队列时,基于所述完成数据包Ai携带的所述j的相关信息确定出主机对应的反向内存块j;
将所述完成数据包Ai传输给所述反向内存块j。
5.根据权利要求1所述的一种基于FPGA的对称加解密方法,其特征在于,在上述步骤1-8之后,所述方法还包括:
按照上述待处理数据包ai的处理方式对所述正向FIFO缓存队列中的待处理数据包bi进行加解密处理,得到对应的完成数据包Bi
6.根据权利要求1所述的一种基于FPGA的对称加解密方法,其特征在于,所述固定字节为16字节,所述对称算法模块的数量为32个,且每个对称算法模块采用国密SM4算法,且所述国密SM4算法的一次加解密的时长为32个时钟周期。
7.根据权利要求6所述的一种基于FPGA的对称加解密方法,其特征在于,所述步骤1-2)至步骤1-6)具体包括如下步骤:
步骤2-1)、所述控制模块将所述待处理数据包ai按照16字节进行分组为密钥段、待处理数据段1,2,3,...,m;
步骤2-2)、所述控制模块预先读出密钥段,并分别发送给各个对称算法模块,由各个对称算法模块对所述密钥段进行密钥扩展,并得到32个子密钥;
步骤2-3)、待所有的对称算法模块密钥扩展完成后,控制模块通过第一个时钟周期读取第1待处理数据段,并将其传送给第1对称算法模块,由所述第1对称算法模通过扩展的子密钥对第1待处理数据段进行加解密,且加解密的时长为32个时钟周期;
步骤2-4)、所述控制模块通过第二个时钟周期读取第2待处理数据段,并将其传送给第2对称算法模块,由所述第2对称算法模块通过扩展的子密钥对第2待处理数据段进行加解密,且加解密的时长为32个时钟周期;
步骤2-5)、重复步骤2-4),直至所述控制模块通过第32个时钟周期读取第32待处理数据段,并将其传送给第32对称算法模块,由所述第32对称算法模块通过扩展的子密钥第32对待处理数据段进行加解密,且加解密的时间为32个时钟周期;
步骤2-6)、所述控制模块通过第33个时钟周期将第1对称算法模块加解密的完成第1数据段写入反向FIFO缓存队列;
步骤2-7)、所述控制模块通过第34个时钟周期将第2对称算法模块加解密的完成第2数据段写入反向FIFO缓存队列;
步骤2-8)、重复步骤2-7),直至所述控制模块将第32对称算法模块加解密的完成第32数据段写入反向FIFO缓存队列;
步骤2-9)、重复步骤2-2)至步骤2-8),直至将所有的待处理数据段1,2,3,...,m均进行加解密处理,并将得到的完成数据段1,2,3,...,m传送至反向FIFO缓存队列。
8.根据权利要求7所述的一种基于FPGA的对称加解密方法,其特征在于,所述步骤2-8)之后还包括:
步骤3-1)、如果m不为32的整数倍,预设m=k*32+b,k为正整数,b小于32,在完成前第k*32个待处理数据段的加解密后,所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+1,并将其传送给第1对称算法模块,由第1对称算法模块通过扩展的子密钥对待处理数据段k*32+1进行加解密,且加解密的时间为32个时钟周期;
步骤3-2)、所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+2,并将其传送给第2对称算法模块,由第2对称算法模块通过扩展的子密钥对待处理数据段k*32+2进行加解密,且加解密的时间为32个时钟周期;
步骤3-3)、重复步骤3-2),直至所述控制模块从所述正向FIFO缓存队列读取待处理数据段k*32+b,并将其传送给第b对称算法模块,由第b对称算法模块通过扩展的子密钥对待处理数据段k*32+b进行加解密,且加解密的时间为32个时钟周期;
步骤3-3)、所述控制模块等待32-b个时钟周期,将第1对称算法模块加解密的完成数据段k*32+1写入反向FIFO缓存队列中;
步骤3-4)、所述控制模块依次将第2、3、...、b对称算法模块加解密的完成数据段k*32+2、k*32+3、...、k*32+b写入反向FIFO缓存队列中,并与在前的完成数据段共同组装成完成数据包Ai
9.一种基于FPGA的对称加解密系统,用于实现上述权利要求1至8任意一项所述的基于FPGA的对称加解密方法,其特征在于,所述系统包括:
正向FIFO缓存队列,用于接收由主机传送的待处理数据包ai
反向FIFO缓存队列,用于缓存完成数据包Ai,以待返回给所述主机;
算法池,包括多个对称算法模块1,2,3,...,n,每个对称算法模块分别用于对密钥段进行密钥扩展得到对应的子密钥,并对相应的待处理数据段进行加解密处理;
控制模块,按照固定字节R对所述待处理数据包ai进行分组为密钥段、待处理数据段1,2,3,...,m;将所述密钥段分别发送给算法池中的多个对称算法模块1,2,3,...,n;待所有对称算法模块1,2,3,...,n密钥扩展完成后,依次向多个对称算法模块1,2,3,...,n分配待第1处理数据段、第2待处理数据段、第3待处理数据段、...、第n待处理数据段;待多个对称算法模块1,2,3,...,n分别将待处理数据段进行对称加解密后,接收对应的完成数据段1,2,3,...,n并依次传输给反向FIFO缓存队列中;其中m大于等于n。
10.根据权利要求9所述的一种基于FPGA的对称加解密系统,其特征在于,所述对称算法模块采用国密SM4算法、DES算法、3DES算法、AES算法、RC算法的任意一种或多种。
CN202010662855.6A 2020-07-10 2020-07-10 一种基于fpga的对称加解密方法及系统 Active CN111832051B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010662855.6A CN111832051B (zh) 2020-07-10 2020-07-10 一种基于fpga的对称加解密方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010662855.6A CN111832051B (zh) 2020-07-10 2020-07-10 一种基于fpga的对称加解密方法及系统

Publications (2)

Publication Number Publication Date
CN111832051A CN111832051A (zh) 2020-10-27
CN111832051B true CN111832051B (zh) 2022-02-18

Family

ID=72900475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010662855.6A Active CN111832051B (zh) 2020-07-10 2020-07-10 一种基于fpga的对称加解密方法及系统

Country Status (1)

Country Link
CN (1) CN111832051B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113378194B (zh) * 2021-06-09 2023-02-28 罗克佳华(重庆)科技有限公司 一种加解密运算加速方法、系统及存储介质
CN116488794B (zh) * 2023-06-16 2023-09-19 杭州海康威视数字技术股份有限公司 基于fpga的高速sm4密码模组实现方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1938980A (zh) * 2004-02-13 2007-03-28 Ivi斯马特技术公司 用于密码加密处理数据的方法和设备
CN102710415A (zh) * 2012-06-18 2012-10-03 西安西电捷通无线网络通信股份有限公司 一种利用对称密码算法进行数据加解密的方法及查表装置
CN103152165A (zh) * 2013-01-25 2013-06-12 西安电子科技大学 基于fpga的超高速aes处理器及其实现方法
CN103973432A (zh) * 2014-05-23 2014-08-06 浪潮电子信息产业股份有限公司 一种基于fpga和usb接口芯片的sm4算法加密设备
CN110110534A (zh) * 2019-04-18 2019-08-09 郑州信大捷安信息技术股份有限公司 一种fpga安全运行系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014055148A2 (en) * 2012-07-09 2014-04-10 Massachusetts Institute Of Technology Cryptography and key management device and architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1938980A (zh) * 2004-02-13 2007-03-28 Ivi斯马特技术公司 用于密码加密处理数据的方法和设备
CN102710415A (zh) * 2012-06-18 2012-10-03 西安西电捷通无线网络通信股份有限公司 一种利用对称密码算法进行数据加解密的方法及查表装置
CN103152165A (zh) * 2013-01-25 2013-06-12 西安电子科技大学 基于fpga的超高速aes处理器及其实现方法
CN103973432A (zh) * 2014-05-23 2014-08-06 浪潮电子信息产业股份有限公司 一种基于fpga和usb接口芯片的sm4算法加密设备
CN110110534A (zh) * 2019-04-18 2019-08-09 郑州信大捷安信息技术股份有限公司 一种fpga安全运行系统及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Secure extensions of FPGA soft core processors for symmetric key cryptography;Lubos Gaspar 等;《6th International Workshop on Reconfigurable Communication-Centric Systems-on-Chip (ReCoSoC)》;20110812;全文 *
分组密码IDEA的FPGA实现;武玉华 等;《计算机安全》;20080901;第2008卷(第7期);全文 *
基于FPGA实现SMS4对称密码算法;赵轩 等;《移动通信》;20100413;第34卷(第2期);全文 *

Also Published As

Publication number Publication date
CN111832051A (zh) 2020-10-27

Similar Documents

Publication Publication Date Title
US7336783B2 (en) Cryptographic systems and methods supporting multiple modes
US5345508A (en) Method and apparatus for variable-overhead cached encryption
CN101304314B (zh) 对数据进行加密和解密的方法和使用该方法的总线系统
EP2186250B1 (en) Method and apparatus for hardware-accelerated encryption/decryption
CN1973481B (zh) 用于进行rc4加密的装置、网络系统和方法
US5444781A (en) Method and apparatus for decryption using cache storage
US10943020B2 (en) Data communication system with hierarchical bus encryption system
US7804960B2 (en) Hardware-based encryption/decryption employing dual ported key storage
JPH1075240A (ja) データ送信を保護する方法およびデータを暗号化または解読化する装置
CN112329038B (zh) 一种基于usb接口的数据加密控制系统及芯片
US20100246828A1 (en) Method and system of parallelized data decryption and key generation
EP3803672B1 (en) Memory-efficient hardware cryptographic engine
CN111832051B (zh) 一种基于fpga的对称加解密方法及系统
US20050149744A1 (en) Network processor having cryptographic processing including an authentication buffer
US20210004495A1 (en) Method and apparatus for encrypting and decrypting data on an integrated circuit
US11909855B2 (en) Cryptographic data communication apparatus
JP2006527412A (ja) データを暗号化および/または復号化するプロセッサとこのプロセッサを使用してデータを暗号化および/または復号化する方法
CN1795637B (zh) 用于密钥扩展功能的低速存储器硬件实施的方法和设备
CN114327255A (zh) 存储器接口控制器及存储器
KR101375670B1 (ko) 데이터의 암호화/복호화 방법 및 이를 적용한 버스 시스템
CN117828648A (zh) 一种可信总线交互系统的实现方法
KR20100026116A (ko) 블록 암호를 적용한 무선통신용 모뎀 칩 및 이를 구비한 무선통신 모뎀

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