CN115022076A - 一种数据加/解密方法、装置、系统及介质 - Google Patents
一种数据加/解密方法、装置、系统及介质 Download PDFInfo
- Publication number
- CN115022076A CN115022076A CN202210751287.6A CN202210751287A CN115022076A CN 115022076 A CN115022076 A CN 115022076A CN 202210751287 A CN202210751287 A CN 202210751287A CN 115022076 A CN115022076 A CN 115022076A
- Authority
- CN
- China
- Prior art keywords
- data
- encryption
- decryption
- cpu
- task
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种数据加/解密方法、装置、系统及其介质,涉及信息安全技术领域,用于对数据进行加/解密,针对目前进行数据加/解密时全部交由FPGA加速器实现会影响加/解密效率的问题,提供了一种数据加/解密方法,将数据处理过程交由CPU实现,将数据加/解密过程交由FPGA加速器实现,从而充分发挥CPU和FPGA加速器各自的优势,提高数据加/解密的效率。另外,还通过配置DMA传输描述符以启动DMA同时读写操作,使得CPU和FPGA加速器之间同时发送、接收数据,且中间无需额外的缓存介质,提高了数据传输效率,数据传输效率也不会受到缓存性能的限制,进一步保证数据加/解密的效率。
Description
技术领域
本申请涉及信息安全技术领域,特别是涉及一种数据加/解密方法、装置、系统及介质。
背景技术
随着大数据、云计算、第五代移动通信技术(5th Generation MobileCommunication Technology,5G)等技术的快速发展、信息化水平的持续提升,各行各业对信息化的依赖程度日益提高。因此,信息安全领域面临的挑战随之而来。而通常而言,加密算法的安全性和加密算法所使用的密钥长度息息相关,密钥长度的增加又会影响加密效率,所以如何提高算法的加密效率就成为本领域技术人员所关注的问题。
目前,通常使用现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)加速器来进行信息的加密/解密,中央处理器(Central Processing Unit,CPU)等处理器将明文数据通过缓存发送至FPGA加速器中,把全部数据加密/解密过程都交由FPGA加速器实现,以提高数据加密的效率。
但整个信息加密的过程复杂,包括对明文数据按照加密算法要求进行分组、当数据长度不够时填充数据位等数据处理过程,以及对数据的加密过程,解密过程同样如此,包括对数据的解密,以及对解密后的数据进行填充位的去除以及数据的合并等数据处理过程。若全部交由FPGA加速器来实现,对于FPGA加速器的要求较高,增加了FPGA加速器的结构复杂性的同时还影响FPGA加速器的运算效率。
所以,现在本领域的技术人员亟需要一种数据加/解密方法,解决目前进行数据加/解密时全部交由FPGA加速器实现会影响加/解密效率的问题。
发明内容
本申请的目的是提供一种数据加/解密方法、装置、系统及介质,解决目前进行数据加/解密时全部交由FPGA加速器实现会影响加/解密效率的问题。
为解决上述技术问题,本申请提供一种数据加/解密方法,应用于CPU侧,包括:
获取待处理数据;
根据加密算法配置信息判断待处理数据对应于加密任务或是解密任务;其中,加密算法配置信息预先由CPU生成,并下发至FPGA加速器;
若对应于加密任务,则对待处理数据进行数据处理,并根据预设的DMA传输描述符启动DMA同时读写操作,以便于把进行数据处理后的待处理数据发送给FPGA加速器的同时,接收FPGA加速器返回的结果数据以作为加密数据;
若对应于解密任务,则根据预设的DMA传输描述符启动DMA同时读写操作,以便于将待处理数据发送给FPGA加速器的同时,接收FPGA加速器返回的结果数据,并对结果数据进行数据处理,以获得解密数据。
优选地,CPU和FPGA加速器通过PCIe高速数据接口进行数据通信。
优选地,还包括:
将包含多个密钥的密钥库发送至FPGA加速器,且每一密钥对应唯一的密钥ID号。
为解决上述技术问题,本申请还提供一种数据加/解密方法,应用于FPGA加速器侧,包括:
根据加密算法配置信息判断本次任务为加密任务或是解密任务;其中,加密配置信息为由CPU预先生成并下发;
若为加密任务,则响应CPU发起的DMA同时读写操作,以便于接收由CPU预先进行数据处理后的待处理数据,根据加密算法配置信息对待处理数据进行相应的加密操作,并同时将结果数据发送至CPU;
若为解密任务,则响应CPU发起的DMA同时读写操作,以便于接收待处理数据,根据加密算法配置信息对待处理数据进行相应的解密操作,并同时将结果数据发送至CPU,以使CPU对结果数据进行数据处理从而获得解密数据。
优选地,加密算法配置信息包括密钥ID号,对应的,根据加密算法配置信息对待处理数据进行相应的加密/解密操作包括:
根据密钥ID号,从预设的密钥库中确定对应的密钥,根据密钥对待处理数据进行相应的加密/解密操作。
优选地还包括:
当加密任务或解密任务结束后,发送中断信号至CPU。
为解决上述技术问题,本申请还提供一种数据加/解密装置,应用于CPU侧,包括:
获取模块,用于获取待处理数据;
判断模块,用于根据加密算法配置信息判断待处理数据对应于加密任务或是解密任务;其中,加密算法配置信息预先由CPU生成,并下发至FPGA加速器;
加密处理模块,用于若对应于加密任务,则对待处理数据进行数据处理,并根据预设的DMA传输描述符启动DMA同时读写操作,以便于把进行数据处理后的待处理数据发送给FPGA加速器的同时,接收FPGA加速器返回的结果数据以作为加密数据;
解密处理模块,用于若对应于解密任务,则根据预设的DMA传输描述符启动DMA同时读写操作,以便于将待处理数据发送给FPGA加速器的同时,接收FPGA加速器返回的结果数据,并对结果数据进行数据处理,以获得解密数据。
优选地,还包括:
密钥库下发模块,用于将包含多个密钥的密钥库发送至FPGA加速器,且每一密钥对应唯一的密钥ID号。
为解决上述技术问题,本申请还提供一种数据加/解密装置,应用于FPGA加速器侧,包括:
加/解密判断模块,用于根据加密算法配置信息判断本次任务为加密任务或是解密任务;其中,加密配置信息为由CPU预先生成并下发;
加密模块,用于若为加密任务,则响应CPU发起的DMA同时读写操作,以便于接收由CPU预先进行数据处理后的待处理数据,根据加密算法配置信息对待处理数据进行相应的加密操作,并同时将结果数据发送至CPU;
解密模块,用于若为解密任务,则响应CPU发起的DMA同时读写操作,以便于接收待处理数据,根据加密算法配置信息对待处理数据进行相应的解密操作,并同时将结果数据发送至CPU,以使CPU对结果数据进行数据处理从而获得解密数据。
优选地,还包括:
中断信号发送模块,用于当加密任务或解密任务结束后,发送中断信号至CPU。
为解决上述技术问题,本申请还提供一种数据加/解密系统,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述的数据加/解密方法的步骤。
为解决上述技术问题,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的数据加/解密方法的步骤。
本申请提供的一种数据加/解密方法,由于FPGA加速器的特性,FPGA加速器更擅长进行并行数据的处理。而加密过程或解密过程中,对数据进行加密或解密的操作为对并行处理,对数据进行分组、填充等操作不为并行处理,所以本方法通过将对数据进行分组、填充等操作交由CPU实现,降低了对于FPGA加速器要求的同时,也提高了数据加/解密的效率。另外,CPU和FPGA加速器之间传统的进行数据传输的方式是通过缓存来实现的,发送数据需要先将全部数据发送至缓存,再由缓存发送至另一设备,需要额外的数据传输过程,且数据传输速率受到缓存性能的限制。而本方法由于CPU和FPGA加速器之间通过预先配置的DMA传输描述符,使得可以实现DMA同时读写操作,CPU和FPGA加速器之间无需通过额外的缓存,可以在发送数据的同时接收数据,省去了由缓存中转数据传输额外所需的数据传输过程,节省了数据传输时间,同时,数据传输速率不受缓存性能限制,更有利于数据加/解密效率的提升。
本申请提供的数据加/解密装置、系统及计算机可读存储介质,与上述方法对应,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种应用于CPU侧的数据加/解密方法的流程图;
图2为本发明提供的一种应用于FPGA加速器侧的数据加/解密方法的流程图;
图3为本发明提供的一种应用于CPU侧的数据加/解密装置的结构图;
图4为本发明提供的一种应用于FPGA加速器侧的数据加/解密装置的结构图;
图5为本发明提供的一种数据加/解密系统的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种数据加/解密方法、装置、系统及介质。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
随着如今网络通信技术的不断发展,信息化水平不断提高,许多行业对信息化的依赖程度日益加深,许多数据的存储和传输都依靠于网络来进行。因此,对于如何保证数据信息安全的挑战也随之而来。为避免网络钓鱼、身份盗用、交易诈骗、资源滥用等安全事件的发生,目前通常使用加密算法对数据进行加密,以维护信息安全。而加密算法保证数据加密的安全性的一个基本条件就是具备足够的密钥长度,例如现在所使用的SM4.0算法(一种分组密码标准)与高级加密标准(Advanced Encryption Standard,AES)算法具有相同的密钥长度以及分组长度,长度为128比特,因此在信息的安全性上要高于另一常用的3DES算法(一种密码算法,通过对增加数据加密标准的密钥长度来增加安全性)。但越长的密钥通常会导致加密效率的降低,所以,如何提高安全性更高的加密算法的运算效率成为了本领域技术人员亟需解决的问题。
针对上述问题,本申请提供一种数据加/解密方法,通过由CPU和FPGA加速器共同组成的异构计算平台来进行数据的加/解密,且提高加/解密的计算效率。本方法应用于CPU和FPGA加速器两侧,为清楚地说明本申请所提供的数据加/解密方法,下面分为CPU和FPGA加速器两侧对本方法进行说明:
基于CPU侧,如图1所示,本申请所提供的一种数据加/解密方法包括:
S11:获取待处理数据。
上述的待处理数据也即CPU接收的待加密数据或待解密数据,待处理数据的发送方通常为用户端等具有加密、解密需求的设备。
S12:根据加密算法配置信息判断待处理数据是否对应于加密任务,若是,则转至步骤S13,若否,则为解密任务,转至步骤S14。
其中,加密算法配置信息预先由CPU生成,并下发至FPGA加速器。
需要进行说明的是,本申请中提到的加密算法配置信息包括但不限于:加密、解密操作,密钥(在一种优选的实施方式中也可以为密钥ID号),加/解密模式。
其中,加密、解密操作用于表征本次对待处理数据是进行加密操作还是解密操作,也即本次任务为加密任务还是解密任务;密钥则为本次进行加/解密时所使用的密钥;加/解密模式则为本次进行加/解密操作所使用的模式。
所以本步骤中对于待处理数据对应于加密任务还是解密任务的判断即为解析加密算法配置信息中的加密、解密操作,从而确定本次任务为加密任务还是解密任务,根据不同的任务,则对应于下述不同的步骤。
S13:对待处理数据进行数据处理,并根据预设的DMA传输描述符启动DMA同时读写操作,以便于把进行数据处理后的待处理数据发送给FPGA加速器的同时,接收FPGA加速器返回的结果数据以作为加密数据。
容易理解的是,不同的加密算法对于需要进行加密的数据具有不同的需求,本申请也不限制于进行加/解密时所使用的加密算法。所以在进行加密操作时,通常需要对数据进行预处理。例如目前常用的一种加密算法——SM4.0算法,其作为一种分组密码标准,在进行数据加密时需要将待加密数据进行分组,并计算每组数据的长度,若长度不够则需进行填充补位。同样以SM4.0算法为例,其分组长度和密钥长度皆为128比特,所以当分组数据的长度不足128比特时,剩余位置用0填补,以使每组数据的长度都达到128比特。
另外,根据系统的直接存储器访问(Direct Memory Access,DMA)实现机制,配置DMA传输描述符以启动CPU的DMA同时读写操作。
其中,DMA传输描述符包括:源地址、目的地址、传输长度等信息,通过DMA传输描述符,CPU等设备可以实现允许与不同速度设备之间的数据传输,且无需通过中间的缓存等存储介质,还可以实现在发送数据的同时,接收来自其他设备的数据。
S14:根据预设的DMA传输描述符启动DMA同时读写操作,以便于将待处理数据发送给FPGA加速器的同时,接收FPGA加速器返回的结果数据,并对结果数据进行数据处理,以获得解密数据。
容易理解的是,本方法是通过将数据处理过程交给更擅长做的CPU来实现的,FPGA加速器仅进行加/解密操作,以此针对CPU和FPGA加速器的特性和优点,进行任务的分配,从而提高数据加/解密的效率。
又由上述可知,不同的数据加密算法对于数据的要求不同,进行加密时需要预先进行不同的数据处理,同样的,对于不同的加密算法而言,根据密钥将数据进行解密后,也需要对解密后的数据进行处理以获得最终的解密数据。为进一步清楚地说明本方法,还以SM4.0算法为例,SM4.0算法作为一种分组算法,其密钥长度和分组长度都为128比特,所以在进行加密时,会对数据进行分组操作,当数据长度不够时还会进行填充补位操作,所以在FPGA加速器对数据进行解密后,还需去除掉数据中用于补位的无效数据,并将分组数据进行合并,以获得最终的解密数据(也即明文数据)。
而基于FPGA加速器侧,如图2所示,本申请所提供的一种数据加/解密方法包括:
S21:根据加密算法配置信息判断本次任务是否为加密任务,若是,则转至步骤S22,若否,则为解密任务,转至步骤S23。
其中,加密配置信息为由CPU预先生成并下发,与上述相同,包括但不限于加密、解密操作,密钥(在一种优选的实施方式中也可以为密钥ID号),加/解密模式。于本步骤中,同样是通过加密、解密操作操作以判断本次任务为加密任务还是解密任务。
需要注意的是,加密算法配置信息是在一次加/解密过程开始前,预先由CPU下发至FPGA加速器的,以便于FPGA加速器对CPU发送的待处理数据进行相应的加/解密操作。考虑到在本申请的应用环境中,CPU和FPGA加速器之间是通过DMA同时读写操作来实现同时发送和接收数据的,所以无论是CPU侧还是FPGA加速器侧,发送和接收数据都是一个持续的过程,加密算法配置信息的接收和发送与其无关,是在一次加/解密任务开始前由CPU下发,由FPGA加速器接收。
S22:响应CPU发起的DMA同时读写操作,以便于接收由CPU预先进行数据处理后的待处理数据,根据加密算法配置信息对待处理数据进行相应的加密操作,并同时将结果数据发送至CPU。
S23:响应CPU发起的DMA同时读写操作,以便于接收待处理数据,根据加密算法配置信息对待处理数据进行相应的解密操作,并同时将结果数据发送至CPU,以使CPU对结果数据进行数据处理从而获得解密数据。
由上述可知,本申请所提供的一种数据加/解密方法是基于CPU和FPGA加速器两侧以实现,CPU侧主要负责对数据进行处理(加密任务和解密任务的数据处理不一定相同),而FPGA加速器侧则仅进行其擅长的并行数据处理,也即数据的加/解密过程,以此来实现提高数据加/解密效率的作用。具体的,FPGA加速器根据CPU下发的加密算法配置信息,确定对待处理数据进行加密操作还是解密操作、使用何种密钥、采用何种加/解密模式,进而完成对数据的加/解密。
进一步的,对于使用SM4.0算法进行数据加/解密,且加/解密模式为电子密码本模式(Electronic codebook,ECB)时,一种优选方案为FPGA加速器采用基于链式DMA的流水设计模式,以进一步提高数据加/解密的效率。
本申请所提供的一种数据加/解密方法,通过将整个数据加/解密过程的任务根据CPU和FPGA加速器的特性进行分配,通过CPU对数据进行处理,通过FPGA加速器对数据进行加/解密。由于对数据进行加/解密通常为一种并行处理的过程,交给更擅长进行并行数据处理的FPGA加速器实现,而像对数据进行处理这种非并行处理的过程,则交由CPU完成,以此充分发挥CPU和FPGA加速器各自的优势,以提高数据加/解密的效率。
另外,本申请还通过根据系统的DMA实现机制,对DMA传输描述符进行配置,以启动DMA同时读写操作,使得CPU和FPGA加速器之间可以同时发送和接收数据,并且中间无需额外的存储介质充当缓存,使CPU和FPGA加速器之间的数据传输更高效,且数据传输效率不会受到缓存性能的限制,更有利于提高数据传输的效率,从而进一步提高整个数据加/解密过程的效率。
进一步的,同样为提高数据加/解密过程的效率,本实施例还提供一种优选的实施方案,包括:
CPU和FPGA加速器通过PCIe高速数据接口进行数据通信。
PCIe:高速串行计算机扩展总线标准,Peripheral Component InterconnectExpress,简称为PCI-Express或PCI-e、PCIe。其主要优势在于数据传输速率高,能够满足本申请针对的应用场景下对于数据传输效率的要求,降低由数据传输导致的对数据加/解密效率的影响。
具体的,CPU和FPGA加速器利用PCIe高速数据接口实现数据传输的方式如下:
CPU下发加密算法配置信息至FPGA加速器:CPU通过调用PCIe基地址寄存器(BaseAddress Register,BAR)配置接口,将包含加密、解密操作,密钥(在一种优选的实施方式中也可以为密钥ID号),加/解密模式等信息的加密算法配置信息发送至FPGA加速器侧,而FPGA加速器则通过调用PCIe接口获取CPU侧下发的加密算法配置信息。
同理,CPU发送待处理数据至FPGA加速器,以及FPGA加速器发送加/解密后的结果数据至CPU也是通过调用PCIe接口实现。
本实施例所提供的一种优选方案,通过PCIe高速数据接口实现CPU和FPGA加速器之间的数据传输,以提高数据传输效率,降低由于数据传输对数据加/解密效率所带来的影响,进一步提高了数据加/解密过程的效率。
由上述实施例可知,在一种优选方案中,加密算法配置信息中的密钥信息还可以为密钥ID号,下面对此优选方案进行进一步说明:
本实施例提供一种优选的实施方案,应用于CPU侧,本方法还包括:
将包含多个密钥的密钥库发送至FPGA加速器,且每一密钥对应唯一的密钥ID号。
由上述可知,决定加密算法安全性高低的一个基本条件即为所使用的密钥的长度,像SM4.0算法和AES算法等安全性较高的加密算法其密钥长度长达128比特,这为CPU向FPGA加速器导入密钥带来了一定的挑战,会增加加/解密过程的总时间,进而影响数据进行加/解密的效率。
基于此,本实施例在进行加/解密过程前,先将预设的密钥库下发至FPGA加速器中,密钥库中包括多条不同的密钥,每条密钥对应于唯一一个密钥ID号,FPGA加速器可根据密钥ID号从密钥库中确定唯一的密钥。基于此,在进行数据的加/解密过程中,CPU仅需向FPGA加速器下发密钥身份标识(Identity Document,ID)号即可。
另外,容易理解的是,密钥ID号的长度与密钥库中包含的密钥个数有关,其长度通常远远小于密钥的长度,所以传输密钥ID号相对于传输完整密钥而言,要更简单且所需的时间更短,所以有利于进一步提高数据加/解密的效率,
同样的,上述的优选方案存在基于FPGA加速器侧的应用,具体为:
CPU下发的加密算法配置信息包括密钥ID号。
对应的,根据加密算法配置信息对待处理数据进行相应的加密/解密操作包括:
根据密钥ID号,从预设的密钥库中确定对应的密钥,根据密钥对待处理数据进行相应的加密/解密操作。
本实施例通过预先将包含多条密钥的密钥库下发到FPGA加速器中,实现在进行数据加/解密过程时,CPU无需下发完整密钥,而是通过下发密钥ID号来代替。FPGA加速器可通过与密钥唯一对应的密钥ID号从密钥库中找到本次数据加/解密过程所使用的密钥,进而进行数据的加密或解密。这种通过密钥ID号代替密钥的传输方式,降低了CPU和FPGA加速器的数据传输量和传输要求,进一步减少了数据传输时间,从而提高数据加/解密的效率。
在上述实施例中已经清楚地说明了,本申请所提供的一种数据加/解密方法,还通过配置DMA传输描述符,以启动DMA同步读写操作,实现CPU和FPGA加速器之间数据的同时发送和接收。所以在一次数据加/解密过程中,无论是CPU侧还是FPGA侧,其数据的接收和发送都是同时发生、且是一个持续的过程。所以CPU对FPGA加速器何时发送完全部结果数据(也即数据加/解密过程于FPGA侧结束)有获知需求,以便于CPU将FPGA加速器在本次加/解密过程中发送的全部结果数据进行处理以获得最终的数据。进一步的,当加密/解密过程结束后,还可以通过释放内存、中断等运行资源,为下一次数据加/解密过程或其他任务做准备。
基于上述问题,本实施例提供一种优选的实施方案,应用于FPGA加速器侧,上述方法还包括:
当加密任务或解密任务结束后,发送中断信号至CPU。
需要进行说明的是,上述的加密任务或解密任务结束是指在FPGA加速器侧结束,也即FPGA加速器将CPU发送的全部待处理数据都进行了相应的加密或解密、并返回至CPU后。但对于CPU侧而言,还需要一定的数据处理。例如本次任务为解密任务,CPU在接收到结果数据后还需进行去除填充位等数据处理操作。
当CPU和FPGA加速器是通过PCIe高速数据接口来实现数据传输时,相应的,中断信号也即为MSI中断。
MSI:Message signaled interrupts,是PCI2.2中提出的一种新的中断形式,优点在于脱离了传统中断管脚的约束,中断的数目也不再受到限制。
本实施例所提供的一种优选方案,通过FPGA加速器在本侧完成本次加/解密任务后,发送中断信号以提示CPU侧数据加/解密完成,进而CPU可以进行相应的数据处理以完成整个数据加/解密过程,在此之后还可以解放内存、中断等运行资源,为下一次数据的加/解密以及其他任务做准备。
在上述实施例中,对于一种数据加/解密方法进行了详细描述,本申请还提供一种数据加/解密装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
基于功能模块的角度,且应用于CPU侧,如图3所示,本实施例提供一种数据加/解密装置,包括:
获取模块31,用于获取待处理数据;
判断模块32,用于根据加密算法配置信息判断待处理数据对应于加密任务或是解密任务;其中,加密算法配置信息预先由CPU生成,并下发至FPGA加速器;
加密处理模块33,用于若对应于加密任务,则对待处理数据进行数据处理,并根据预设的DMA传输描述符启动DMA同时读写操作,以便于把进行数据处理后的待处理数据发送给FPGA加速器的同时,接收FPGA加速器返回的结果数据以作为加密数据;
解密处理模块34,用于若对应于解密任务,则根据预设的DMA传输描述符启动DMA同时读写操作,以便于将待处理数据发送给FPGA加速器的同时,接收FPGA加速器返回的结果数据,并对结果数据进行数据处理,以获得解密数据。
优选地,还包括:
密钥库下发模块,用于将包含多个密钥的密钥库发送至FPGA加速器,且每一密钥对应唯一的密钥ID号。
应用于FPGA加速器侧,如图4所示,本实施例还提供一种数据加/解密装置,包括:
加/解密判断模块41,用于根据加密算法配置信息判断本次任务为加密任务或是解密任务;其中,加密配置信息为由CPU预先生成并下发;
加密模块42,用于若为加密任务,则响应CPU发起的DMA同时读写操作,以便于接收由CPU预先进行数据处理后的待处理数据,根据加密算法配置信息对待处理数据进行相应的加密操作,并同时将结果数据发送至CPU;
解密模块43,用于若为解密任务,则响应CPU发起的DMA同时读写操作,以便于接收待处理数据,根据加密算法配置信息对待处理数据进行相应的解密操作,并同时将结果数据发送至CPU,以使CPU对结果数据进行数据处理从而获得解密数据。
优选地,还包括:
中断信号发送模块,用于当加密任务或解密任务结束后,发送中断信号至CPU。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例所提供的数据加/解密装置,分为应用于CPU侧和FPGA加速器侧,通过将整个数据加/解密过程的任务根据CPU和FPGA加速器的特性进行分配,由CPU对数据进行处理,由FPGA加速器对数据进行加/解密,使得能够充分发挥CPU和FPGA加速器各自的优势,以提高数据加/解密的效率。并且,还通过配置DMA传输描述符,以启动DMA同时读写操作,使得CPU和FPGA加速器之间可以同时发送和接收数据,并且中间无需额外的存储介质充当缓存,提高了CPU和FPGA加速器之间的数据传输效率,数据传输效率也不会受到缓存性能的限制,从而进一步提高整个数据加/解密过程的效率。
图5为本申请另一实施例提供的一种数据加/解密系统的结构图,如图5所示,一种数据加/解密系统包括:存储器50,用于存储计算机程序;
处理器51,用于执行计算机程序时实现如上述实施例一种数据加/解密方法的步骤。
本实施例提供的一种数据加/解密系统可以包括但不限于工作站、平板电脑、笔记本电脑或台式电脑等。
其中,处理器51可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器51可以采用数字信号处理器(Digital Signal Processor,DSP)、FPGA、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器51也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称为CPU;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器51可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器51还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器50可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器50还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器50至少用于存储以下计算机程序501,其中,该计算机程序被处理器51加载并执行之后,能够实现前述任一实施例公开的一种数据加/解密方法的相关步骤。另外,存储器50所存储的资源还可以包括操作系统502和数据503等,存储方式可以是短暂存储或者永久存储。其中,操作系统502可以包括Windows、Unix、Linux等。数据503可以包括但不限于一种数据加/解密方法等。
在一些实施例中,一种数据加/解密系统还可包括有显示屏52、输入输出接口53、通信接口54、电源55以及通信总线56。
本领域技术人员可以理解,图5中示出的结构并不构成对一种数据加/解密系统的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的一种数据加/解密系统,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:一种数据加/解密方法。
本实施例所提供的一种数据加/解密系统,通过处理器执行保存在存储器中的计算机程序,实现将整个数据加/解密过程的任务进行分解,并将数据处理过程交由CPU实现,将数据加/解密过程交由FPGA加速器实现,从而充分发挥CPU和FPGA加速器各自的优势,提高数据加/解密的效率。此外,本实施例还通过配置DMA传输描述符以启动DMA同时读写操作,使得CPU和FPGA加速器之间同时发送和接收数据,且中间无需额外的缓存介质,提高了CPU和FPGA加速器之间的数据传输效率,数据传输效率也不会受到缓存性能的限制,进一步保证整个数据加/解密过程的效率。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例(可以是CPU侧对应的方法、也可以是FPGA加速器侧对应的方法)中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例所提供的一种计算机可读存储介质,当其中存储的计算机程序被执行时,可以实现将整个数据加/解密过程的任务根据CPU和FPGA加速器的特性进行分解和分配,将数据处理过程交由CPU实现,将数据加/解密过程交由FPGA加速器实现,以充分发挥CPU和FPGA加速器的独特优势,提高数据加/解密的效率。此外,上述计算机程序被执行时还可以实现通过配置DMA传输描述符以启动DMA同时读写操作,使得CPU和FPGA加速器之间可以同时发送和接收数据,且中间无需额外的缓存介质,提高了CPU和FPGA加速器之间的数据传输效率,数据传输效率也不会受到缓存性能的限制,进一步保证整个数据加/解密过程的效率。
以上对本申请所提供的一种数据加/解密方法、装置、系统及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种数据加/解密方法,其特征在于,应用于CPU侧,包括:
获取待处理数据;
根据加密算法配置信息判断所述待处理数据对应于加密任务或是解密任务;其中,所述加密算法配置信息预先由CPU生成,并下发至FPGA加速器;
若对应于加密任务,则对所述待处理数据进行数据处理,并根据预设的DMA传输描述符启动DMA同时读写操作,以便于把进行数据处理后的所述待处理数据发送给所述FPGA加速器的同时,接收所述FPGA加速器返回的结果数据以作为加密数据;
若对应于解密任务,则根据预设的DMA传输描述符启动DMA同时读写操作,以便于将所述待处理数据发送给所述FPGA加速器的同时,接收所述FPGA加速器返回的所述结果数据,并对所述结果数据进行数据处理,以获得解密数据。
2.根据权利要求1所述的数据加/解密方法,其特征在于,所述CPU和所述FPGA加速器通过PCIe高速数据接口进行数据通信。
3.根据权利要求1所述的数据加/解密方法,其特征在于,还包括:
将包含多个密钥的密钥库发送至所述FPGA加速器,且每一所述密钥对应唯一的密钥ID号。
4.一种数据加/解密方法,其特征在于,应用于FPGA加速器侧,包括:
根据加密算法配置信息判断本次任务为加密任务或是解密任务;其中,所述加密配置信息为由CPU预先生成并下发;
若为加密任务,则响应所述CPU发起的DMA同时读写操作,以便于接收由所述CPU预先进行数据处理后的待处理数据,根据所述加密算法配置信息对所述待处理数据进行相应的加密操作,并同时将结果数据发送至所述CPU;
若为解密任务,则响应所述CPU发起的DMA同时读写操作,以便于接收所述待处理数据,根据所述加密算法配置信息对所述待处理数据进行相应的解密操作,并同时将所述结果数据发送至所述CPU,以使所述CPU对所述结果数据进行数据处理从而获得解密数据。
5.根据权利要求4所述的数据加/解密方法,其特征在于,所述加密算法配置信息包括密钥ID号,对应的,根据所述加密算法配置信息对所述待处理数据进行相应的加密/解密操作包括:
根据所述密钥ID号,从预设的密钥库中确定对应的密钥,根据所述密钥对所述待处理数据进行相应的加密/解密操作。
6.根据权利要求4所述的数据加/解密方法,其特征在于,还包括:
当加密任务或解密任务结束后,发送中断信号至所述CPU。
7.一种数据加/解密装置,其特征在于,应用于CPU侧,包括:
获取模块,用于获取待处理数据;
判断模块,用于根据加密算法配置信息判断所述待处理数据对应于加密任务或是解密任务;其中,所述加密算法配置信息预先由CPU生成,并下发至FPGA加速器;
加密处理模块,用于若对应于加密任务,则对所述待处理数据进行数据处理,并根据预设的DMA传输描述符启动DMA同时读写操作,以便于把进行数据处理后的所述待处理数据发送给所述FPGA加速器的同时,接收所述FPGA加速器返回的结果数据以作为加密数据;
解密处理模块,用于若对应于解密任务,则根据预设的DMA传输描述符启动DMA同时读写操作,以便于将所述待处理数据发送给所述FPGA加速器的同时,接收所述FPGA加速器返回的所述结果数据,并对所述结果数据进行数据处理,以获得解密数据。
8.一种数据加/解密装置,其特征在于,应用于FPGA加速器侧,包括:
加/解密判断模块,用于根据加密算法配置信息判断本次任务为加密任务或是解密任务;其中,所述加密配置信息为由CPU预先生成并下发;
加密模块,用于若为加密任务,则响应所述CPU发起的DMA同时读写操作,以便于接收由所述CPU预先进行数据处理后的待处理数据,根据所述加密算法配置信息对所述待处理数据进行相应的加密操作,并同时将结果数据发送至所述CPU;
解密模块,用于若为解密任务,则响应所述CPU发起的DMA同时读写操作,以便于接收所述待处理数据,根据所述加密算法配置信息对所述待处理数据进行相应的解密操作,并同时将所述结果数据发送至所述CPU,以使所述CPU对所述结果数据进行数据处理从而获得解密数据。
9.一种数据加/解密系统,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任意一项所述的数据加/解密方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述的数据加/解密方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210751287.6A CN115022076A (zh) | 2022-06-29 | 2022-06-29 | 一种数据加/解密方法、装置、系统及介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210751287.6A CN115022076A (zh) | 2022-06-29 | 2022-06-29 | 一种数据加/解密方法、装置、系统及介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN115022076A true CN115022076A (zh) | 2022-09-06 |
Family
ID=83078913
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202210751287.6A Withdrawn CN115022076A (zh) | 2022-06-29 | 2022-06-29 | 一种数据加/解密方法、装置、系统及介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN115022076A (zh) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115987513A (zh) * | 2023-03-17 | 2023-04-18 | 山东浪潮科学研究院有限公司 | 分布式数据库分片加密、解密方法、装置、设备及介质 |
| WO2024103683A1 (zh) * | 2022-11-18 | 2024-05-23 | 浪潮(北京)电子信息产业有限公司 | 一种通信方法、装置、设备以及非易失性可读存储介质 |
| CN119544379A (zh) * | 2025-01-02 | 2025-02-28 | 江苏新质信息科技有限公司 | 一种高速双向鉴权方法及系统 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102566958A (zh) * | 2011-12-23 | 2012-07-11 | 广东威创视讯科技股份有限公司 | 一种基于sgdma的图像分割处理装置 |
| CN107566113A (zh) * | 2017-09-29 | 2018-01-09 | 郑州云海信息技术有限公司 | 3des对称加解密方法、系统及计算机可读存储介质 |
| CN107749792A (zh) * | 2017-10-13 | 2018-03-02 | 郑州云海信息技术有限公司 | 实现数据加解密的方法、系统及计算机可读存储介质 |
| CN110378129A (zh) * | 2019-06-18 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种哈希加解密运算方法、系统、设备及计算机存储介质 |
| US20200167487A1 (en) * | 2020-01-28 | 2020-05-28 | Intel Corporation | Cryptographic separation of memory on device with use in dma protection |
| CN112015564A (zh) * | 2019-05-28 | 2020-12-01 | 普天信息技术有限公司 | 加解密处理方法及装置 |
-
2022
- 2022-06-29 CN CN202210751287.6A patent/CN115022076A/zh not_active Withdrawn
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102566958A (zh) * | 2011-12-23 | 2012-07-11 | 广东威创视讯科技股份有限公司 | 一种基于sgdma的图像分割处理装置 |
| CN107566113A (zh) * | 2017-09-29 | 2018-01-09 | 郑州云海信息技术有限公司 | 3des对称加解密方法、系统及计算机可读存储介质 |
| CN107749792A (zh) * | 2017-10-13 | 2018-03-02 | 郑州云海信息技术有限公司 | 实现数据加解密的方法、系统及计算机可读存储介质 |
| CN112015564A (zh) * | 2019-05-28 | 2020-12-01 | 普天信息技术有限公司 | 加解密处理方法及装置 |
| CN110378129A (zh) * | 2019-06-18 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种哈希加解密运算方法、系统、设备及计算机存储介质 |
| US20200167487A1 (en) * | 2020-01-28 | 2020-05-28 | Intel Corporation | Cryptographic separation of memory on device with use in dma protection |
Non-Patent Citations (1)
| Title |
|---|
| 潘可贤;邓峰;胡晨;: "Intel Xscale中IDE硬盘DMA的解决方案", 《电子工程师》, pages 73 - 74 * |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2024103683A1 (zh) * | 2022-11-18 | 2024-05-23 | 浪潮(北京)电子信息产业有限公司 | 一种通信方法、装置、设备以及非易失性可读存储介质 |
| CN115987513A (zh) * | 2023-03-17 | 2023-04-18 | 山东浪潮科学研究院有限公司 | 分布式数据库分片加密、解密方法、装置、设备及介质 |
| CN119544379A (zh) * | 2025-01-02 | 2025-02-28 | 江苏新质信息科技有限公司 | 一种高速双向鉴权方法及系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11169935B2 (en) | Technologies for low-latency cryptography for processor-accelerator communication | |
| CN115022076A (zh) | 一种数据加/解密方法、装置、系统及介质 | |
| CN108345806B (zh) | 一种硬件加密卡和加密方法 | |
| CN107103472B (zh) | 一种用于区块链的算法处理模块 | |
| US20100128874A1 (en) | Encryption / decryption in parallelized data storage using media associated keys | |
| WO2017045484A1 (zh) | 一种基于xts-sm4的存储加解密方法及装置 | |
| US20030020621A1 (en) | Method and apparatus for establishing secure sessions | |
| CN105897406A (zh) | 一种明密文等长的aes加解密的装置 | |
| CN111193591A (zh) | 一种基于cpu+fpga的加解密方法及系统 | |
| CN117083612A (zh) | 处置未对齐事务以用于内联加密 | |
| US20210006391A1 (en) | Data processing method, circuit, terminal device and storage medium | |
| CN214122946U (zh) | 一种基于fpga的高速国密算法密码卡 | |
| CN111984985A (zh) | 一种基于fpga硬件系统的hdl源码加密方法 | |
| CN114338179A (zh) | 页面加密方法、页面解密方法、装置、终端和服务器 | |
| CN107679409B (zh) | 一种数据加密的加速方法和系统 | |
| CN107222310A (zh) | 一种基于属性加密的密文策略云加密的并行化处理方法 | |
| CN117201120A (zh) | 一种信息加密方法、装置、计算机设备及存储介质 | |
| WO2023046207A1 (zh) | 一种数据传输方法、装置及计算机非易失性可读存储介质 | |
| CN109101829B (zh) | 基于可重构密码处理器的安全固态盘数据传输系统 | |
| CN111368322B (zh) | 一种文件解密方法、装置、电子设备和存储介质 | |
| CN116881945A (zh) | 一种基于tpcm的固态硬盘加解密方法、系统及电子设备 | |
| CN116614269A (zh) | 一种前置代理的智能数据库加密系统、方法、设备及介质 | |
| CN103679061A (zh) | 国密sm4算法的可扩展高吞吐率的实现方法及装置 | |
| CN116028958B (zh) | 一种密钥加解密方法、装置、安全机以及介质 | |
| CN105468983A (zh) | 基于sata接口的数据传输方法与装置 |
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 | ||
| WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220906 |
|
| WW01 | Invention patent application withdrawn after publication |