CN111914307A - 基于高层次综合的国密算法sm4加速处理方法及系统 - Google Patents
基于高层次综合的国密算法sm4加速处理方法及系统 Download PDFInfo
- Publication number
- CN111914307A CN111914307A CN202010801081.0A CN202010801081A CN111914307A CN 111914307 A CN111914307 A CN 111914307A CN 202010801081 A CN202010801081 A CN 202010801081A CN 111914307 A CN111914307 A CN 111914307A
- Authority
- CN
- China
- Prior art keywords
- cryptographic algorithm
- core
- level
- hls
- algorithm
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/76—Protecting 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 application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/08—Intellectual property [IP] blocks or IP cores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Devices For Executing Special Programs (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本公开公开了基于高层次综合的国密算法SM4加速处理方法及系统,FPGA对发送到服务器的待国密算法处理的数据包进行处理,在FPGA上布置好HLS生成的SM4加密的IP核,使用python对IP核进行调用,并且封装成为SM4加密函数;FPGA从服务器内存中将待国密算法处理的数据包进行读取;通过python对SM4加密函数进行调用,实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;FPGA将经过国密算法处理后的数据包传送给服务器的内存。
Description
技术领域
本申请涉及国密算法嵌入式技术领域,特别是涉及基于高层次综合的国密算法SM4加速处理方法及系统。
背景技术
本部分的陈述仅仅是提到了与本申请相关的背景技术,并不必然构成现有技术。
国密算法是国家密码局制定标准的一系列算法。其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法。具体包括SM3,SM4等。国密算法广泛应用于数据加密、数字签名等场景。由于国家对信息安全的重视,国密算法现在被广泛使用。如何快速、高性能且低功耗的运行国密算法是当前研究的热点之一。
在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与字符串长度互换128位,加密算法与密钥扩展算法都采用32轮非线性变换结构,S盒为固定的8位输入8比特输出。
在从低功耗嵌入式系统到高性能计算体系结构的计算机系统中,现场可编程门阵列(Field-programmable Gate Array,FPGA)成为越来越受欢迎的设计选择。传统的带有寄存器传输级别(Register-Transfer Level,RTL)编程的FPGA设计需要大量的体系结构和电路经验,这是容易出错和耗时的。高级综合(High-level Synthesis,HLS)工具将C/C++内核编译为相应的硬件描述语言(Hardware Description Language,HDL)模块。近年来,HLS工具在复杂FPGA异构系统设计中得到了广泛的应用,缩短了上市时间,降低了系统设计复杂度。
现有的对SM4实现的硬件平台有中央处理器(Central Processing Unit,CPU)、专用集成电路(Application Specific Integrated Circuit,ASIC)和现场可编程逻辑门阵列(FPGA)。CPU存在功耗大,加速慢的缺点;ASIC作为专用电路,相比于FPGA其运行速度快且功耗低,但其通用性差、设计困难复杂且成本较高。
针对国密算法SM4在实现速度慢、功耗大、灵活度差等问题,亟需设计国密算法SM4加速实现的方法,以解决国密算法SM4运行速度慢、嵌入式开发灵活性差以及硬件开发时间长的问题。
发明内容
为了解决了解决现有的SM4算法嵌入式平台灵活度不够、运行速度慢和硬件开发时间长的问题,本申请提供了基于高层次综合的国密算法SM4加速处理方法及系统;
第一方面,本申请提供了基于高层次综合的国密算法SM4加速处理方法;
基于高层次综合的国密算法SM4加速处理方法,对发送到服务器的待国密算法处理的数据包进行处理,包括:
利用高层次综合HLS通过高级程序语言实现国密算法SM4;对高级程序语言进行仿真处理;
仿真处理正常通过后,进行综合,得到综合报告,通过综合报告观察国密算法的性能;使用高层次综合HLS实现对国密算法SM4进行优化,通过联合仿真,最后导出IP核,从而让高层次综合HLS自动实现高级程序语言到硬件语言的转换,同时对比综合报告,计算得到国密算法SM4的吞吐量以及加速比;
将IP核加载到Vivado中进行电路的连接,生成控制FPGA的文件,将控制FPGA的文件导入到PYNQ平台上,从而实现将IP核部署到FPGA上;
在PYNQ平台上通过python将生成的IP核进行调用,实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;
FPGA将经过国密算法处理后的数据包传送给PYNQ的PS端。
第二方面,本申请提供了基于高层次综合的国密算法SM4加速处理系统;
基于高层次综合的国密算法SM4加速处理系统,FPGA对发送到服务器的待国密算法处理的数据包进行处理,包括服务器和FPGA;
在FPGA上布置好HLS生成的SM4加密的IP核,使用python对IP核进行调用,并且封装成为SM4加密函数;
FPGA从服务器内存中将待国密算法处理的数据包进行读取;
通过python对SM4加密函数进行调用,实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;
FPGA将经过国密算法处理后的数据包传送给服务器的内存。
与现有技术相比,本申请的有益效果是:
1、提出了一种基于高层次综合的国密算法SM4的实现方法,将国密算法SM4运行在特殊硬件FPGA上,以满足国密算法SM4对不同场景下应用的需求。
2、通过高层次综合可以极大的减少硬件语言实现的时间,从而降低算法硬件化的时间成本,来减少将国密算法SM4应用在硬件平台上的开发时间。
3、通过python来调用HLS生成的IP核,从而简化了HLS后复杂的接口调用。
4、通过HLS实现对高级程序语言的优化,从而减少了国密算法SM4的运行时间,实现对国密算法SM4的加速。
5、通过调用生成的IP核,在FPGA上实现对于国密算法SM4的处理系统,该系统可以加密客户端(PS端)传输过来的文件。
6、提出了一种比较直观的吞吐量的衡量方式,用来比较PS和PL对于处理文件的吞吐量。
7、提出了加速比,来衡量HLS对SM4优化的效果。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1是本申请实施例一的基于高层次综合的SM4设计流程图,是本公开的总流程图。
图2是本申请实施例一的高层次综合实现的流程图。
图3(a)-图3(c)是本申请实施例一的国家密码管理局SM4文档部分截图。
图4是本申请实施例一的PYNQ中python调用IP核验证信息。
图5(a)和图5(b)是本申请实施例一的HLS综合报告截图。
图6是本申请实施例二的实现SM4系统示意图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请本实施例中,“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请的描述中,“多个”是指两个或多于两个。
另外,为了便于清楚描述本申请实施例的技术方案,在本申请实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例提供了基于高层次综合的国密算法SM4加速处理方法;
如图1所示,基于高层次综合的国密算法SM4加速处理方法,对发送到服务器的待国密算法处理的数据包进行处理,包括:
S101:利用高层次综合HLS通过高级程序语言实现国密算法SM4;对高级程序语言进行仿真处理;
S102:仿真处理正常通过后,进行综合,得到综合报告,通过综合报告观察国密算法的性能;使用高层次综合HLS实现对国密算法SM4进行优化,通过联合仿真,最后导出IP核,从而让高层次综合HLS自动实现高级程序语言到硬件语言的转换,同时对比综合报告,计算得到国密算法SM4的吞吐量以及加速比;
S103:将IP核加载到Vivado中进行电路的连接,生成控制FPGA的文件(后缀为hwh、tcl、bit),将控制FPGA的文件导入到PYNQ平台上,从而实现将IP核部署到FPGA上;
S104:在PYNQ平台上通过python将生成的IP核进行调用(调用hwh、tcl、bit等文件),实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;
S105:FPGA将经过国密算法处理后的数据包传送给PYNQ的PS端。
示例性的,所述S101中,利用高层次综合HLS通过高级程序语言实现国密算法SM4,是指:利用高层次综合HLS通过高级程序语言C/C++实现国密算法SM4。
进一步地,所述S101中,所述对高级程序语言进行仿真处理;具体步骤包括:将高级程序语言写入HLS当中,通过HLS的simulation功能对高级程序语言进行仿真,如果仿真不通过,HLS会检测出相应的错误,并返回错误报告。
应理解的,所述S101中,所述对高级程序语言进行仿真处理;目的和意义分别是:通过仿真处理检测高级程序语言是否可以将国密算法正确实现,例如,对于SM4算法来说,就是将明文加密后产生的密文是否正确。这一步是为了保证实现的国密算法有意义。
进一步地,所述S102中,使用高层次综合HLS实现对国密算法SM4进行优化,通过联合仿真,最后导出IP核;具体步骤包括:
在进行仿真后,使用高层次综合HLS自身对高级程序语言进行优化,产生优化代码;
对于国密算法SM4来说,研究的是SM4算法输入输出接口的问题,算法内循环的具体过程以及算法的流水处理问题。
对于接口问题,通过编辑接口的类型实现,接口的类型是s_axilite。
对于算法内的循环,使用UNROLL进行优化,整个算法使用PIPELINE进行优化。UNROLL是将整个循环展开,PIPELINE则是将循环进行流水处理。
上述两种优化方式当中,起到最主要作用的是PIPELINE,这与SM4本身是处理分组密码的关系是密不可分的,因为每一组加密的时候每一组的数据是独立的,没有任何依赖关系的,所以PIPLINE能够将整个算法进行流水处理。优化完成后依次进行HLS的综合、联合仿真以及导出IP核。
进一步地,所述S102中,让高层次综合HLS自动实现高级程序语言到硬件语言的转换;具体步骤包括:如图2,仿真结束以后,进行综合、联合仿真以及导出IP核,从而使得HLS自动将高级程序语言转化为硬件语言。
应理解的,所述S102中,让高层次综合HLS自动实现高级程序语言到硬件语言的转换;目的和意义分别是:将高级语言设计为硬件语言,将原本只能在CPU上进行的计算转移至FPGA上进行计算。FPGA上的计算是为此特殊设计的计算,计算速度加快。
进一步地,所述S104中,通过python将生成的IP核进行调用,实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;具体步骤包括:
通过python调用PYNQ内部自带的第三方库,将生成的bit流文件导入python当中,然后通过库函数调用SM4生成的IP核,当加密数据的时候调用函数,从而调用IP核,生成加密后的数据。
示例性的,PYNQ的PS端通过python将需要加密的数据和密钥传输给PYNQ的PL端(也就是FPGA端),然后PL端将加密后的数据返回给PS端。
进一步地,S101中,利用高层次综合HLS通过高级程序语言实现国密算法SM4步骤之后,所述对高级程序语言进行仿真处理步骤之前;还包括:
优化代码结构,对国密算法SM4编写测试文件(testbench);优化代码结构包括部分手动的进行inline操作,以及将输入输出规范化,调整为数组;为国密算法SM4编写测试文件,用来验证国密算法的正确性。
通过测试文件来验证国密算法的实现是否正确。例如,对于SM4来说,根据图3(a)-图3(c),首先确定正确的加密后的结果,运行所编写的高级程序语言,如果得到相同的结果,那么验证通过,反之不通过,需要重新编写SM4算法。
进一步地,所述最后导出IP核步骤之后,所述通过python将生成的IP核进行调用步骤之前,还包括:
通过赛灵思公司提供的Vivado开发套件生成tcl、bit文件。Vivado在本实例的作用是将生成的IP模拟在PYNQ平台上实现,并产生相关的电路信息,最后Vivado导出python调用IP核所需要的tcl文件、bit文件和hwh文件。
一种将国密算法SM4高级程序语言转化为FPGA可以实现的语言,并在相关FPGA硬件实现的方法,包括以下步骤:
E1、首先实现SM4的高级程序语言。
E2、调整E1实现的相关代码,并设计测试文件来验证SM4算法的实现是否正确。
E3、将文件放入HLS,并进行如图2的流程,即通过仿真、综合、联合仿真和导出RTL接口,即IP接口。E3的流程如下:
E3-1、对C/C++语言进行仿真。从而判定国密算法SM4的实现是否正确,并为E3-2、E3-3提供验证机制。
E3-2、仿真通过后进行综合,将高级语言设计为硬件语言。
E3-2-1、综合后可以产生综合报告,观察硬件的模拟情况,并且可以通过Interval计算出吞吐量。
E3-2-2、综合实现以后就可以使用HLS对实现算法进行优化。在本实例当中,根据SM4分组加密的特点,主要使用流水的思想对SM4进行优化。
E3-3、联合仿真。HLS的联合仿真是将高级程序语言的输入变量设计为Vivado测试平台的输入变量,在Vivado测试平台当中对硬件语言版本的SM4进行仿真运行,仿真结构再重新反馈给高级程序语言运行的平台,然后通过前文的验证文件验证是否符合国密算法SM4的正确性。
E3-4、Export RTL,即导出IP核。在验证正确性后,点击ExportRTL按钮,将硬件语言打包为IP核,IP核是后文当中Vivado中所需要的实现SM4的模块。
E4、在Vivado中创建工程,采用PYNQ运行平台,通过Vivado生成相应的支持python来调用的相关文件(后缀名为tcl、bit、hwh的文件),包括FPGA上的硬件信息的使用方法,以及ip核相关堆栈的信息,这些信息在使用python设计如何调用IP核的时候会用到。
E5、通过python将生成的ip核进行调用,通过python语言将ip核封装成函数进行调用,将ip核设计为SM4加密函数,当加密数据时,在python中使用SM4加密函数即可。这里所说的ip核的调用就是利用E4生成的相关文件实现的。
E6、将没有优化的SM4在PYNQ的PS端运行,统计时间,计算吞吐量。通过HLS的综合报告计算出吞吐量,计算加速比。
假设:本公开的E1当中实现的高级程序语言的效率是不通过特殊加速的业内正在应用的国密算法SM4的平均水平。其中特殊加速指的是,AES-EN实现,CUDA语言实现等。
unsigned long是4个字节,32bit的数据类型,unsigned char是1个字节8bit的数据类型。
实例1-基于本公开SM4算法的实现:
下面结合附图说明本公开的实施方式,本实施方式所述基于高层次综合的SM4算法的设计实现与加速方法,其具体过程如下:
首先是E1通过C语言实现SM4算法,该算法有多个函数实现,但是在本实例当中,为了简单叙述问题,将算法作为一个函数,其中输入都是固定长度的,有unsigned long*sk,unsigned char*input,unsigned char*output,虽然函数的参数是指针的形式,但是实际上在一次加密过程中unsigned long*sk是形如unsigned long sk[32]的1024bit的扩展密钥,同样的unsigned char*input,unsigned char*output是形如unsigned char input[16],unsigned char output[16]的128bit的输入与输出信息。
该函数类似于ECB模式的加密,将输入信息以128bit一组,分组加密,当最后一组的加密信息不为128bit时自动填充0补足128bit。
该加密的伪代码如下:
输入:密钥k,明文p,长度len
输出:密文c
函数:SM4为加密16byte的固定加密
for t←0to len/16
do SM4(k,p[t*16,t*16+15])
end
SM4(k,p[len-len%16,len])
E2是写出检测文件,检测文件是为了证明E1当中的加密函数没有出错,这一步可以根据国家密码管理局发布的有关SM4算法的相关文档进行验证,其中图3(a)是加密函数的输入以及还未进行扩展的密钥,图3(b)是轮密钥以及每轮的输出情况,图3(c)是加密以后的密文信息。E2将数据类型确定,使用指针进行参数的传入,当数据类型从char转换到long时,使用移位的操作,使用memcpy()函数实现数据的传输。
E3是在HLS当中实现的,E3采用s_axilite作为函数的接口的数据流,同时将函数进行流水化处理以及对数组进行优化。实现的具体流程如图2:
第一步simulation是为了验证算法的正确性,也就是E2的验证文件;
第二步synthesis中需要给出相应的优化代码,这部分的优化主要集中在对于SM4加密函数当中的循环体和相关的数组进行优化,在此只详述对于循环体的优化,循环体的优化有UNROLL、PIPLINE等,其中UNROLL就是通常意义上的展开,而PIPLINE是做流水处理。需要说明的是,SM4作为分组密码的一种,流水的处理方式可以使得SM4加速达到非常好的效果,于是主要使用PIPELINE对SM4进行优化。在将优化代码调整完成后转入第三步联合仿真,最后一步再将IP核导出。
E4是利用E3生成的IP核,创建一个Vivado工程,在Vivado中导入PYNQ平台硬件以及我们生成的IP核,对两个进行连线,再进行相应的synthesis等操作,最后生成bit流文件。将这个过程中生成的tcl文件和bit文件导出,加载到PYNQ平台当中。E4除了导出相应的tcl和bit文件外,还需要导出hwh文件。
E5在PYNQ平台当中使用python调用PYNQ平台中的PYNQ库以及overlay库,最后实现对于生成的IP核的利用。最后在PYNQ当中调用python来验证正确性,对于图3(a)-图3(c)中的明文和轮密钥,本公开实例的验证结果如图4。图3是16进制,而图4是10进制的,验证结果没有问题。E5通过python调用ip核在PYNQ-Z1的PL端进行使用。
E6定义了对于PL端吞吐量=主频×数据块(128bit)/Interval,对于PS端或者CPU吞吐量=数据量/时间。E6定义了加速比为PYNQ(PL-优化)的吞吐量比上PYNQ(PS)的吞吐量。E6的加速比应当大于100。
E6是在PYNQ平台当中将C版本的SM4算法和经过HLS设计后(优化和未优化后的)的SM4算法进行比较,对于PYNQ中PS端(即在ARM核上运行)的吞吐量是7Mb/s,在i7-core上是213Mb/s,在i5-core上是83Mb/s,在PL端没有优化前是24Mb/s,优化后是400Mb/s。其中关于吞吐量的定义是如果在CPU上运行,那么吞吐量就是加密的数据量除以运行时间,如果实在PL端,那么吞吐量就是主频×数据块(128bit)/Interval,其中主频的计算方法是Estimated时间的倒数。HLS的综合报告的截图如图5(a)和图5(b),其中solution1是PL未优化的,solution2是PL优化后的,根据图5(a)和图5(b)和吞吐量的计算可以得到表1。
表1不同硬件平台下吞吐量对比
平台名称 | 主频 | 吞吐量 |
i5-core | 2.2GHz | 83Mb/s |
i7-core | 2.2GHz | 213Mb/s |
PYNQ(PS) | 600MHz | 7Mb/s |
PYNQ(PL-未优化) | 132MHz | 93Mb/s |
PYNQ(PL-优化) | 117MHz | 15Gb/s |
设加速比为PYNQ(PL-优化)的吞吐量比上PYNQ(PS)的吞吐量,那么本公开的加速比为:159。由此可见FPGA对国密算法的优化是十分可观的。
本公开为解决国密算法SM4硬件开发时间长,嵌入式平台运行速度慢的问题提供了一种创新的方式。本公开包括使用C代码实现国密算法,利用HLS优化代码结构,添加优化指令,设计函数接口。本公开使用HLS来实现优化,优化方式是通过HLS本身携带的对于循环的优化实现的,使用LOOP优化方法中的PIPLINE方法对SM4算法进行优化,来降低整个SM4算法的Latency和Interval。本公开并定义了两种吞吐量的计算方式来分别计算PS端和PL端SM4加密数据的速度,PS端吞吐量的计算方法是:吞吐量=加密数据的大小/运行时间;PL端吞吐量的计算方法是:吞吐量=主频×数据块大小(128bit)/Interval。其中Interval是HLS综合后产生的综合报告中的相关信息。主频的计算方式是Estimated时间的倒数。本公开还定义了描述HLS优化程度的加速比,加速比=PL端吞吐量/PS端吞吐量。本公开是基于PYNQ平台进行实验的,上述的PS端指的是在PYNQ的ARM核部分,PL端是PYNQ的FPGA部分。PYNQ是一种通用平台,很多FPGA可以搭建使用,同时为了验证结果,PYNQ平台可以使用高级程序语言python调用HLS产生的IP核,从而减少了设计接口的时间。
FPGA并行处理速度快,设计灵活且通用性强,适用于不同的嵌入式平台,可以提供不同的优化加速方案。相比于前两种加速平台,FPGA对于国密算法的设计实现有很好的优势,尤其是高层次综合(HLS)技术出现以后,对于FPGA设计研发的难度大大降低。HLS允许用户使用高级语言来描述算法,添加一些硬件优化指令以后,完成高级语言到硬件描述语言(HDL)的转换,实现国密算法在嵌入式中断的硬件加速。
在本次发明当中,使用的FPGA是Xilinx的PYNQ系列,基于该系列的FPGA可以使用高级程序语言python对HLS生成后的IP核进行开发,很大程度上降低了开发FPGA的难度,以及节省了大量用于连接IP核所消耗的时间。本次发明就是在PYNQ上实现的,生成的IP核使用python来调用。PYNQ是一种通用平台,很多FPGA可以搭建使用。
实施例二
如图6,本实施例提供了基于高层次综合的国密算法SM4加速处理系统;
基于高层次综合的国密算法SM4加速处理系统,FPGA对发送到服务器的待国密算法处理的数据包进行处理,包括服务器和FPGA;
在FPGA上布置好HLS生成的SM4加密的IP核,使用python对IP核进行调用,并且封装成为SM4加密函数;
FPGA从服务器内存中将待国密算法处理的数据包进行读取;
通过python对SM4加密函数进行调用,实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;
FPGA将经过国密算法处理后的数据包传送给服务器的内存。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.基于高层次综合的国密算法SM4加速处理方法,其特征是,对发送到服务器的待国密算法处理的数据包进行处理,包括:
利用高层次综合HLS通过高级程序语言实现国密算法SM4;对高级程序语言进行仿真处理;
仿真处理正常通过后,进行综合,得到综合报告,通过综合报告观察国密算法的性能;使用高层次综合HLS实现对国密算法SM4进行优化,通过联合仿真,最后导出IP核,从而让高层次综合HLS自动实现高级程序语言到硬件语言的转换,同时对比综合报告,计算得到国密算法SM4的吞吐量以及加速比;
将IP核加载到Vivado中进行电路的连接,生成控制FPGA的文件,将控制FPGA的文件导入到PYNQ平台上,从而实现将IP核部署到FPGA上;
在PYNQ平台上通过python将生成的IP核进行调用,实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;
FPGA将经过国密算法处理后的数据包传送给PYNQ的PS端。
2.如权利要求1所述的方法,其特征是,利用高层次综合HLS通过高级程序语言实现国密算法SM4,是指:利用高层次综合HLS通过高级程序语言C/C++实现国密算法SM4。
3.如权利要求1所述的方法,其特征是,所述对高级程序语言进行仿真处理;具体步骤包括:将高级程序语言写入HLS当中,通过HLS的simulation功能对高级程序语言进行仿真,如果仿真不通过,HLS会检测出相应的错误,并返回错误报告。
4.如权利要求1所述的方法,其特征是,使用高层次综合HLS实现对国密算法SM4进行优化,通过联合仿真,最后导出IP核;具体步骤包括:
在进行仿真后,使用高层次综合HLS自身对高级程序语言进行优化,产生优化代码;
对于国密算法SM4来说,研究的是SM4算法输入输出接口的问题,算法内循环的具体过程以及算法的流水处理问题;
对于接口问题,通过编辑接口的类型实现,接口的类型是s_axilite;
对于算法内的循环,使用UNROLL进行优化,整个算法使用PIPELINE进行优化;UNROLL是将整个循环展开,PIPELINE则是将循环进行流水处理。
5.如权利要求4所述的方法,其特征是,上述两种优化方式当中,起到最主要作用的是PIPELINE,这与SM4本身是处理分组密码的关系是密不可分的,因为每一组加密的时候每一组的数据是独立的,没有任何依赖关系的,所以PIPLINE能够将整个算法进行流水处理;优化完成后依次进行HLS的综合、联合仿真以及导出IP核。
6.如权利要求1所述的方法,其特征是,让高层次综合HLS自动实现高级程序语言到硬件语言的转换;具体步骤包括:仿真结束以后,进行综合、联合仿真以及导出IP核,从而使得HLS自动将高级程序语言转化为硬件语言。
7.如权利要求1所述的方法,其特征是,通过python将生成的IP核进行调用,实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;具体步骤包括:
通过python调用PYNQ内部自带的第三方库,将生成的bit流文件导入python当中,然后通过库函数调用SM4生成的IP核,当加密数据的时候调用函数,从而调用IP核,生成加密后的数据。
8.如权利要求1所述的方法,其特征是,利用高层次综合HLS通过高级程序语言实现国密算法SM4步骤之后,所述对高级程序语言进行仿真处理步骤之前;还包括:
优化代码结构,对国密算法SM4编写测试文件;优化代码结构包括部分手动的进行inline操作,以及将输入输出规范化,调整为数组;为国密算法SM4编写测试文件,用来验证国密算法的正确性。
9.如权利要求1所述的方法,其特征是,最后导出IP核步骤之后,所述通过python将生成的IP核进行调用步骤之前,还包括:
通过赛灵思公司提供的Vivado开发套件生成tcl、bit文件;Vivado作用是将生成的IP模拟在PYNQ平台上实现,并产生相关的电路信息,最后Vivado导出python调用IP核所需要的tcl文件、bit文件和hwh文件。
10.基于高层次综合的国密算法SM4加速处理系统,其特征是,FPGA对发送到服务器的待国密算法处理的数据包进行处理,包括服务器和FPGA;
在FPGA上布置好HLS生成的SM4加密的IP核,使用python对IP核进行调用,并且封装成为SM4加密函数;
FPGA从服务器内存中将待国密算法处理的数据包进行读取;
通过python对SM4加密函数进行调用,实现待国密算法处理的数据包的处理,形成经国密算法处理后的数据包;
FPGA将经过国密算法处理后的数据包传送给服务器的内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010801081.0A CN111914307B (zh) | 2020-08-11 | 2020-08-11 | 基于高层次综合的国密算法sm4加速处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010801081.0A CN111914307B (zh) | 2020-08-11 | 2020-08-11 | 基于高层次综合的国密算法sm4加速处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111914307A true CN111914307A (zh) | 2020-11-10 |
CN111914307B CN111914307B (zh) | 2022-10-14 |
Family
ID=73283032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010801081.0A Active CN111914307B (zh) | 2020-08-11 | 2020-08-11 | 基于高层次综合的国密算法sm4加速处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111914307B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113078996A (zh) * | 2021-02-25 | 2021-07-06 | 西安电子科技大学 | Sm4密码算法的fpga优化实现方法、系统及应用 |
CN116861470A (zh) * | 2023-09-05 | 2023-10-10 | 苏州浪潮智能科技有限公司 | 加解密方法、装置、计算机可读存储介质和服务器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775905A (zh) * | 2016-11-19 | 2017-05-31 | 天津大学 | 基于fpga的高级综合实现拟牛顿算法加速的方法 |
CN107506226A (zh) * | 2017-07-07 | 2017-12-22 | 福建师范大学 | 一种用于hls指令优化的编码方法及终端 |
CN107528690A (zh) * | 2017-10-10 | 2017-12-29 | 郑州云海信息技术有限公司 | 一种基于异构加速平台的sm4对称加解密方法及系统 |
WO2018176238A1 (en) * | 2017-03-28 | 2018-10-04 | Intel Corporation | Technologies for hybrid field-programmable gate array-application-specific integrated circuit code acceleration |
CN109714307A (zh) * | 2018-06-12 | 2019-05-03 | 广东工业大学 | 一种基于国密算法的云平台客户端数据加解密系统及方法 |
CN109902043A (zh) * | 2019-01-30 | 2019-06-18 | 中国科学院声学研究所 | 一种基于fpga的国密算法加速处理系统 |
US20200117844A1 (en) * | 2017-05-15 | 2020-04-16 | LegUp Computing Inc. | High-level synthesis (hls) method and apparatus to specify pipeline and spatial parallelism in computer hardware |
-
2020
- 2020-08-11 CN CN202010801081.0A patent/CN111914307B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775905A (zh) * | 2016-11-19 | 2017-05-31 | 天津大学 | 基于fpga的高级综合实现拟牛顿算法加速的方法 |
WO2018176238A1 (en) * | 2017-03-28 | 2018-10-04 | Intel Corporation | Technologies for hybrid field-programmable gate array-application-specific integrated circuit code acceleration |
US20200117844A1 (en) * | 2017-05-15 | 2020-04-16 | LegUp Computing Inc. | High-level synthesis (hls) method and apparatus to specify pipeline and spatial parallelism in computer hardware |
CN107506226A (zh) * | 2017-07-07 | 2017-12-22 | 福建师范大学 | 一种用于hls指令优化的编码方法及终端 |
CN107528690A (zh) * | 2017-10-10 | 2017-12-29 | 郑州云海信息技术有限公司 | 一种基于异构加速平台的sm4对称加解密方法及系统 |
CN109714307A (zh) * | 2018-06-12 | 2019-05-03 | 广东工业大学 | 一种基于国密算法的云平台客户端数据加解密系统及方法 |
CN109902043A (zh) * | 2019-01-30 | 2019-06-18 | 中国科学院声学研究所 | 一种基于fpga的国密算法加速处理系统 |
Non-Patent Citations (5)
Title |
---|
JUN ZHAO ET AL.: "High throughput implementation of SMS4 on FPGA", 《IEEE ACCESS》 * |
XIN ZHENG ET AL.: "The Software/Hardware Co-Design and Implementation of SM2/3/4 Encryption/Decryption and Digital Signature System", 《 IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS》 * |
佚名: "PYNQ上手笔记(5)——采用Vivado HLS进行高层次综合设计", 《HTTP://XILINX.EETREND.COM/D6-XILINX/ARTICLE/2018-12/14009.HTML》 * |
冯凯: "基于FPGA的ZUC加密算法IP核的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
王德民等: "基于CUDA的SM4加密算法高速实现", 《石家庄铁路职业技术学院学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113078996A (zh) * | 2021-02-25 | 2021-07-06 | 西安电子科技大学 | Sm4密码算法的fpga优化实现方法、系统及应用 |
CN116861470A (zh) * | 2023-09-05 | 2023-10-10 | 苏州浪潮智能科技有限公司 | 加解密方法、装置、计算机可读存储介质和服务器 |
CN116861470B (zh) * | 2023-09-05 | 2024-01-26 | 苏州浪潮智能科技有限公司 | 加解密方法、装置、计算机可读存储介质和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN111914307B (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mozaffari-Kermani et al. | Efficient and high-performance parallel hardware architectures for the AES-GCM | |
Shih et al. | Securing M2M with post-quantum public-key cryptography | |
Ting et al. | An FPGA based SHA-256 processor | |
CN112202547B (zh) | 一种轻量级分组密码gfcs实现方法、装置及可读存储介质 | |
CN111914307B (zh) | 基于高层次综合的国密算法sm4加速处理方法及系统 | |
Zheng et al. | The software/hardware co-design and implementation of SM2/3/4 encryption/decryption and digital signature system | |
Kammoun et al. | FPGA-based implementation of the SHA-256 hash algorithm | |
Daoud et al. | Optimization of advanced encryption standard (AES) using vivado high level synthesis (HLS) | |
Rajasekar et al. | Design and implementation of power and area optimized AES architecture on FPGA for IoT application | |
Wang et al. | A performance and area efficient ASIP for higher-order DPA-resistant AES | |
Homsirikamol et al. | Gmu hardware api for authenticated ciphers | |
Koppermann et al. | 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices | |
Guo et al. | Agile-AES: Implementation of configurable AES primitive with agile design approach | |
Nguyen-Hoang et al. | Implementation of a 32-Bit RISC-V Processor with Cryptography Accelerators on FPGA and ASIC | |
Wu et al. | Low-power side-channel attack-resistant asynchronous S-box design for AES cryptosystems | |
Lan | The AES encryption and decryption realization based on FPGA | |
Chiţu et al. | An FPGA implementation of the AES-Rijndael in OCB/ECB modes of operation | |
CN106788976A (zh) | 一种aes加解密电路仿真分析方法及装置 | |
Buschkowski et al. | EasiMask-Towards Efficient, Automated, and Secure Implementation of Masking in Hardware | |
Rao et al. | An efficient high speed AES implementation using Traditional FPGA and LabVIEW FPGA platforms | |
Morioka et al. | Flexible architecture optimization and ASIC implementation of group signature algorithm using a customized HLS methodology | |
Daoud et al. | High-level synthesis optimization of aes-128/192/256 encryption algorithms | |
Khalil et al. | Implementation of SHA-2 hash function for a digital signature System-on-Chip in FPGA | |
Khalid et al. | Rapid-feinspn: A rapid prototyping framework for feistel and spn-based block ciphers | |
Khalid et al. | Domain Specific High-Level Synthesis for Cryptographic Workloads |
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 |