CN116527392A - 一种基于fpga的sha256高效数字加密方法及系统 - Google Patents
一种基于fpga的sha256高效数字加密方法及系统 Download PDFInfo
- Publication number
- CN116527392A CN116527392A CN202310657323.7A CN202310657323A CN116527392A CN 116527392 A CN116527392 A CN 116527392A CN 202310657323 A CN202310657323 A CN 202310657323A CN 116527392 A CN116527392 A CN 116527392A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- encrypted
- control module
- hash value
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims abstract description 12
- 238000012795 verification Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 7
- 230000003139 buffering effect Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000007906 compression Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于FPGA的SHA256高效数字加密方法及系统包括,通过PC模块产生待加密数据,将其作为数据源利用PCIE协议发送到FPGA模块;使用PCIE接口控制模块接收所述数据源,并将该数据源发送到接收数据控制模块;所述接收数据控制模块将接收到的数据源发送到SHA256算法核实现模块进行计算,得到加密后的哈希值;将所述哈希值回发至接收数据控制模块,再将其发送到PCIE接口控制模块并通过PCIE协议,将所述哈希值返回至PC模块;把PC模块原有的正确加密后的哈希值与所述哈希值做对比,得到高效数字加密方法;本发明通过设计的SHA256算法,分析FPGA芯片资源特性,设计出带宽高、移植性好的算法硬实现IP,算法核的个数可以灵活配置,方便扩展。
Description
技术领域
本发明涉及加密技术领域,尤其涉及一种基于FPGA的SHA256高效数字加密方法及系统。
背景技术
随着信息技术的发展,信息的安全和可靠性问题越来越重要。我们经常需要一些措施来保护我们的数据,防止被一些别有用心的人所破坏。保护信息安全的直接办法是使用加密技术,目前主要通过微处理器实现加密技术。
哈希算法是应用在上述信息安全领域最普遍的一个算法,能够实际应用的哈希算法其必须满足单向性、抗碰撞性、映射分布均匀性和差分分布均匀性。SHA256作为国际标准杂凑算法,在国际标准协议(如DSA)、密码应用(如金融安全领域)中得到广泛的使用。
加密算法可以通过软件来完成,但面对海量数据时,加密系统存在CPU占用率过高、内存使用过大等问题。同时软件加密算法将面对像暴力破解软件、产品格式化、把存储数据的闪存芯片拆除等极端方式软件加密都可以轻易的被破解。相比之下硬件加密中所有的加密信息都是内置在硬件芯片中的从而使得黑客原本惯用的通过入侵加密信息来盗取资料的手法将会完全失效。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
鉴于上述现有存在的问题,提出了本发明。因此,本发明提供了一种基于FPGA的SHA256高效数字加密方法,用来解决实际问题中,加密系统容易被入侵,且存在CPU占用率过高、内存使用过大的问题。
为解决上述技术问题,本发明提供如下技术方案:
第一方面,本发明提供了一种基于FPGA的SHA256高效数字加密方法,包括:
通过PC模块产生待加密数据,将其作为数据源利用PCIE协议发送到FPGA模块;
使用PCIE接口控制模块接收所述数据源,并将该数据源发送到接收数据控制模块;
所述接收数据控制模块将接收到的数据源发送到SHA256算法核实现模块进行计算,得到加密后的哈希值;
将所述哈希值回发至接收数据控制模块,再将其发送到PCIE接口控制模块并通过PCIE协议,将所述哈希值返回至PC模块;
把PC模块原有的正确加密后的哈希值与所述哈希值做对比,得到高效数字加密方法。
作为本发明所述的基于FPGA的SHA256高效数字加密方法的一种优选方案,其中:所述通过PC模块产生待加密数据,包括:
发送的待加密数据为经过预处理后的256比特的数据源。
作为本发明所述的基于FPGA的SHA256高效数字加密方法的一种优选方案,其中:使用PCIE接口控制模块接收所述数据源,并将该数据源发送到接收数据控制模块,包括:
PCIE接口控制模块功能分为读写两部分,第一部分是数据的读写,第二部分是配置数据的读写。
作为本发明所述的基于FPGA的SHA256高效数字加密方法的一种优选方案,其中:所述接收数据控制模块将接收到的数据源发送到SHA256算法核实现模块,包括:
接收数据控制模块通过标准协议接受数据后,将数据存储到FIFO中做一级缓冲并与下一个模块隔离,同时拼接存储到FIFO中。
作为本发明所述的基于FPGA的SHA256高效数字加密方法的一种优选方案,其中:计算得到加密后的哈希值,包括:
首先,对存储到FIFO中的数据进行读取,采取状态机的方式对输出数据进行拼接运算,当帧数据符有效时,此时拼接数据就是待加密数据,即数据源;
其次,进行8次拼接操作,同时在第8次拼接操作时对帧限定符进行高度限定,此时会产生一个拼接数据有效信号,用于判断数据拼接信号已经经过8次拼接后成为待加密数据,在拼接完成后根据系统实际需要拉高拼接数据有效信号,得到拼接数据,同时初始化一个初始哈希值,将初始哈希值存储到一个256比特的初始哈希寄存器中;
最后,将拼接数据、拼接数据有效信号、初始哈希值送入SHA256算法核实现模块作为该模块的数据输入;将256比特的输出哈希寄存器和哈希输出有效信号作为输出。
作为本发明所述的基于FPGA的SHA256高效数字加密方法的一种优选方案,其中:计算得到加密后的哈希值还包括:
进行64次加密循环,当拼接数据有效信号为1时,8个加密数据端口位宽都是32比特,8个加密数据端口赋初值等于初始哈希寄存器,每次循环都要迭代8个加密数据端口,最后一次计算结果输出哈希值256比特的输出哈希寄存器等于8个加密数据端口;
其中,迭代循环通过状态机的方式来实现,设置状态机有66个状态,初始状态不进行操作,直到根据系统实际需要拉高拼接数据和拼接数据有效信号,状态机跳转到下一状态进行迭代循环,迭代循环消耗64个状态,每个状态执行相应的计算操作,迭代循环结束进入第66个状态,在该状态输出加密后的哈希值和哈希寄存器的值,以及输出哈希输出有效信号。
作为本发明所述的基于FPGA的SHA256高效数字加密方法的一种优选方案,其中:将所述哈希值回发至接收数据控制模块,再将其发送到PCIE接口控制模块并通过PCIE协议,将所述哈希值返回至PC模块,包括:
接收数据控制模块输入为哈希输出有效信号,256比特的输出哈希寄存器,输出为AXI4总线接口,其接受SHA256算法核实现模块计算出的哈希值,并转换成AXI4标准总线接口输出到PCIE接口控制模块;
该模块内部逻辑如下:创建一个FIFO,FIFO输入位宽为256比特,输出位宽为64比特;当哈希输出有效信号为高电平时,将输出哈希寄存器的值写入FIFO中;当FIFO不为空,FIFO读使能一直有效,将存入FIFO的数据全部都出,同时,设置一个计数器;当FIFO读使能为高电平时,计数器加一,当计数器值为3时,计数器清0。
第二方面,本发明提供了一种基于FPGA的SHA256高效数字加密系统,其包括:
PC模块,用于发送待加密消息并接受加密后的信息;
FPGA模块,用于接受待加密消息,对待加密消息进行加密处理后,再将加密后的信息再发送回所述PC模块;
PCIE接口控制模块,用于实现所述PC模块与所述FPGA模块之间的数据交换,所述PCIE接口控制模块接受所述PC模块发送的待加密消息,并将加密后的信息传回所述PC模块;
PCIE空间寄存器访问模块,用于访问所述PCIE接口控制模块的空间寄存器,实现中断使能,清中断和相关寄存器配置,检测PCIE接口关键信号,产生中断请求信号;
接受数据控制模块,用于接受所述PCIE接口控制模块接收到的所述PC模块的数据,并将数据输出到所述SHA256算法核实现模块;同时,还接受所述SHA256算法核实现模块返回的加密信息,并将其发送给所述PCIE接口控制模块;
SHA256算法核实现模块,用于计算出加密后的哈希值,将计算的哈希值发送给所述接受数据控制模块。
第三方面,本发明提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其中:所述处理器执行所述计算机程序时实现上述方法的任一步骤。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,其中:所述计算机程序被处理器执行时实现上述方法的任一步骤。
与现有技术相比,发明有益效果为:本发明通过FPGA模块的实现比软件的实现更快,延迟时间主要由门电路的延迟所产生,CPU和内存使用率更少,因此处理器就有足够的时间来处理其他的任务提高整个系统的效率;通过硬件加密的方式,硬件加密中所有的加密信息都是内置在硬件芯片中的,从而使得黑客原本惯用的通过入侵加密信息来盗取资料的手法将会完全失效;根据SHA-256算法原理,分析FPGA芯片资源特性,设计出带宽高、移植性好的算法硬实现IP,算法核的个数可以灵活配置,方便扩展。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:
图1为本发明一个实施例所述的基于FPGA的SHA256高效数字加密方法的原理框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明,显然所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
本发明结合示意图进行详细描述,在详述本发明实施例时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。
同时在本发明的描述中,需要说明的是,术语中的“上、下、内和外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一、第二或第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本发明中除非另有明确的规定和限定,术语“安装、相连、连接”应做广义理解,例如:可以是固定连接、可拆卸连接或一体式连接;同样可以是机械连接、电连接或直接连接,也可以通过中间媒介间接相连,也可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例1
参照图1,为本发明第一个实施例,该实施例提供了一种基于FPGA的SHA256高效数字加密方法,包括:
S1、PC模块产生一个待加密数据(数据源)并将其通过PCIE协议发送到FPGA模块;
S2、PCIE接口控制模块(xdma)接受待加密数据(数据源)并将数据发送到PCIE接口控制模块(rev_data_ctrl);
S3、接收数据控制模块(rev_data_ctrl)将接收到的数据送到SHA256算法核实现模块(SHA256_CORE)进行运算;
S4、SHA256算法核实现模块(SHA256_CORE)计算出加密后的哈希值,将计算的哈希值发送给接收数据控制模块(rev_data_ctrl);
S5、接收数据控制模块(rev_data_ctrl)接收SHA256算法核实现模块(SHA256_CORE)计算出的哈希值,再将其发送到PCIE接口控制模块(xdma);
S6、PCIE接口控制模块(xdma)通过PCIE协议将加密后的哈希值发送给PC模块;
应当说明的是,PC与FPGA数据传输通过PCIE 2.0x2,理论带宽是10Gb/s;FPGA模块采用xilinx xc7a100tffg484-2芯片;xdma模块调用FPGA芯片内部PCIE的IP核;ram2reg模块主要是PC模块对PCIE BAR空间寄存器访问rev_data_ctrl模块控制管理SHA256_CORE算法和PCIE端XDMA通信;
把PC模块原有的正确加密后的哈希值与所述哈希值做对比,得到高效数字加密方法;
进一步的,在S1中,发送的待加密数据(加密源)为经过预处理后的256bit的数据源;PC模块包含两个部分:PCIe卡驱动,PCIe上位机测试程序;PCIe卡驱动负责上位机测试程序与PCIe卡的数据交换;PCIe上位机测试程序负责完成功能性操作,在本发明中可以表现为可视化加密后数据,机密后数据与正确数据对比,对数字加密系统进行测速等功能;这里假设待加密数据80bit(比特)位宽,16进制表示为426c6f636b436861696e,在将数据通过PCIE接口发送到FPGA之前,先对数据进行预处理,预处理得到的数据pre_data[511:0]为{80'h426c6f636b436861696e,1'b1,367'd0,64'd80};
其中,“{}”为位拼接符,“[]”接在端口名称后面表示端口位宽,[0:0]代表1bit位宽,默认端口后面不接[],为1bit位宽;
进一步的,在S2中,XDMA是Xilinx封装好的PCIE DMA传输IP,可以很方便的把PCIE总线上的数据传输事务映射到AXI总线上面,实现上位机直接对AXI总线进行读写而对PCIE本身TLP的组包和解包无感,xdma模块负责PC模块与FPGA的通信,主要进行数据传输;XDMA读写部分分为两种,一种是数据的读写,另一种是配置数据的读写;
这里XDMA模块控制PCIE接口接受PC发送下来的pre_data数据,该模块输出采用AXI4_STREAM标准协议,再将接收到的pre_data[511:0]数据以8个64bit数据输出到rev_data_ctrl模块,输出端口表示为:
M_AXIS_H2C_0_0_tdata[63:0],
M_AXIS_H2C_0_0_tkeep[7:0],
M_AXIS_H2C_0_0_tlast,
M_AXIS_H2C_0_0_tready,
M_AXIS_H2C_0_0_tvalid;
并依次输出数据如下所示:
64'h426c6f636b436861,
{16'696e,1'b1,47'd0},
64'd0,64'd0,64'd0,
64'd0,64'd0,64'd80;
应当说明的是,在数据读写部分,DMA是直接通过AXI4_STREAM标准协议接口读写数据;配置数据读写通过BRAM与AXI-lite总线连接完成,降低了对axi lite接口直接操作的难度,提高寄存器访问的可靠性;
进一步的,在S3中,rev_data_ctrl模块接收到待加密数据(数据源),接受接口为AXI4_stream标准接口,具体接收数据端口表示为:
M_AXIS_H2C_0_0_tdata[63:0],
M_AXIS_H2C_0_0_tkeep[7:0],
M_AXIS_H2C_0_0_tlast,
M_AXIS_H2C_0_0_tready,
M_AXIS_H2C_0_0_tvalid;
模块处理后输出数据到下一模块端口表示为:
dout[64:0],rd_en,empty;
rev_data_ctrl模块通过标准协议接受数据后,将数据存储到FIFO中做一级缓冲,充分与下一个模块隔离;接收数据M_AXIS_H2C_0_0_tdata为64bit,存储到FIFO里的数据为65bit;M_AXIS_H2C_0_0_tlast和M_AXIS_H2C_0_0_tdata做拼接一同存储到FIFO中;
应当说明的是,做拼接是为了让下一模块能够正确判断帧数据界限;
rev_data_ctrl模块中创建了一个FIFO,用于模块隔离,该模块的逻辑如下:M_AXIS_H2C_0_0_tlast,M_AXIS_H2C_0_0_tready,M_AXIS_H2C_0_0_tvalid的状态(0或1)控制FIFO的写数据,FIFO读数据由SHA256_CORE模块控制;该模块在SHA256_CORE模块控制控制下,依次输出数据依次输出数据表示为:
{1'b0,64'h426c6f636b436861},{1'b0,16'696e,1'b1,47'd0},......{1'b1,64'd80};
可以看到在数据帧最末尾64bit,头部扩充1bit数值1,其他时刻头部扩充1bit数值0;
应当说明的是,AXI4_stream接口具有灵活性好,互联方式简单,数据交互可靠易控等优点,且输出端口采用的是普通接口;
进一步的,在S4中,实现SHA256算法,是整个系统算法实现的核心模块;在该模块中,首先对上一级存储到FIFO中的数据进行读取,采取状态机的方式,对输出数据进行拼接运算,当帧数据符有效时,此时拼接数据就是待加密数据(数据源);S1中已经说明发送待加密数据(数据源)为256bit,存储在FIFO中的有效数据为64bit,(1bit是帧限定符),所以数据需要进行8次拼接操作,同时在第8次拼接操作时帧限定符为高,此时会产生一个in_wr有效信号,该信号为1bit位宽,用于判断数据拼接信号已经经过8次拼接后成为待加密数据(数据源),在拼接完成后拉高in_wr信号;在这里in_wr为1时,经过拼接后的数据msg为{80'h426c6f636b436861696e,1'b1,367'd0,64'd80};
通过上述得到的拼接数据msg,和拼接数据有效信号in_wr,同时将初始化一个初始哈希值iv,在FPGA中直接将初始哈希值存储到一个256bit的寄存器iv[255:0]中;将这些数据送入SHA256_Compress模块,msg,in_wr和iv作为该模块的数据输入hvalue[255:0]和h_wr作为输出,该模块进行SHA256算法的核心处理模块;
SHA256_Compress模块中实现哈希值的计算,SHA256算法要进行64次加密循环,in_wr为1时,a~h每个端口位宽都是32bit,{a,b,c,d,e,f,g,h}赋初值等于iv[255:0],每次循环都要迭代{a,b,c,d,e,f,g,h},最后一次计算结果输出哈希值hvalue[255:0]={a,b,c,d,e,f,g,h};这种迭代循环在FPGA中可以通过状态机的方式来实现,设置状态机有66个状态,初始状态不进行操作,等到拼接数据msg和有效信号in_wr拉高,状态机跳转到下一状态进行迭代循环,迭代循环消耗64个状态,每个状态执行相应的计算操作,迭代循环结束进入第66个状态,在该状态输出加密后的哈希值hvalue[255:0],拉高输出有效信号h_wr,该信号有效用于指示输出哈希值有效;{a,b,c,d,e,f,g,h}的迭代更新在SHA256_Compress模块中实例化模块SHA256_Round(轮函数)实现该功能;经过SHA256_Compress模块计算,将在状态机第66个状态输出h_wr为1,并且计算得到:
hvalue[255:0]=16'h3a6fed5fc11392b3ee9f81caf017b48640d7458766a8eb0382899a605b41f2b9;
SHA256_Round模块完成{a,b,c,d,e,f,g,h}的迭代更新,该模块输出信号为{a_o,b_o,c_o,d_o,e_o,f_o,g_o,h_o},其迭代逻辑为:{b,c,d,f,g,h}在迭代中不发生改变,只有{a,e}的迭代是变化的;如下所示:
{b_o,c_o,d_o,f_o,g_o,h_o}={b,c,d,g,f,h}
a_o=T1+T2
e_o=d+T1
T1、T2涉及到σ0(x)、σ1(x)、∑0(x)、∑1(x)、Maj(x,y,z)、CH(x,y,z)的计算和加法操作;σ0(x)、σ1(x)、∑0(x)、∑1(x)、Maj(x,y,z)、CH(x,y,z)涉及到一些简单的逻辑操作:按位异或,按位与,按位取反,右移和循环右移,这在FPGA中直接通过逻辑运算符就可以得到,消耗的资源很少并且延迟的极低的;在SHA256_Compress模块中的最大延迟来源于加法模块,尤其是在a(32bit位宽)计算中所涉及到的加法运算最多,需要6次加法运算,e需要五次加法运算,这就需要大量的DSP资源支持加法运算;
应当说明的是,为了提高多算法核并行速度,降低单个算法对DSP的依赖,采用比特移位进位规约加的方法代替DSP,在不降低的运算速度的前提下,降低了资源消耗;
更进一步的,假设输入6个数据为x0,x1,x2,x3,x4,x5,数据位宽为32bit,输出y,数据位宽为32bit;比特移位进位规约加运行流程如下:将x0,x1,x2,x3,x4,x5对应位拼接得到32个6bit位宽数据{x0[0],...,x5[0]},......,{x0[31],...,x5[31]}将其输入到查找表得到{sum[0],...,sum[31]},sum[i]为每一组{x0[i],...,x5[i]}为二进制形式含1的个数,y={sum[31],...,sum[0]}+{sum[30],...,sum[0],1’b0}+{sum[29],...,sum[0],2’b0};
可以看到上述流程把6输入加法电路变成了一个查找表和3输入加法电路;查找表的电路延迟极低,得到一个运算速度很快的6输入加法运算方法;
进一步的,在S5中,rev_data_ctrl模块输入为h_wr,hvalue[255:0],输出为AXI4总线接口,端口为s_axis_tdata[63:0],s_axis_tvalid,s_axis_tlast;该部分接受SHA256_CORE模块计算出的哈希值,并转换成AXI4标准总线接口输出到XDMA模块;该模块内部逻辑如下:创建一个FIFO,FIFO输入位宽为256bit,输出位宽为64bit,当h_wr为1,将hvalue[255:0]写入FIFO中,当FIFO不为空,FIFO读使能rd_en一直有效,将存入FIFO的数据全部都出;同时,设置一个计数器cnt[1:0],当rd_en,计数器加一,当计数器cnt值为3,cnt清0;rd_en有效,s_axis_tvalid赋值1,当cnt等于3,s_axis_tlast赋值1;在S5中接受SHA256_CORE模块计算出加密后的哈希值,s_axis_tdata会连续输出4个64bit数据,输出数据分别为:
64'h3a6fed5fc11392b3,
64'hee9f81caf017b486,
64'h40d7458766a8eb03,
64'h82899a605b41f2b9;
输出数据期间s_axis_tvalid为1,并且在第4个数据时s_axis_tlast也为高;
进一步的,在S6中,xdma模块通过AXI4标准总线协议接受计算得到的哈希值,并控制PCIE接口将加密后的哈希值发送给PC主机;
进一步的,在S7中,事先得到一个源数据使用电脑计算得到哈希值,然后将源数据发送到FPGA端进行处理,FPGA计算得出一个哈希加密值,将电脑计算得出的哈希值与FPGA计算得到的哈希值进行对比,验证FPGA计算的正确性。
进一步的,本实施例还提供一种基于FPGA的SHA256高效数字加密系统,包括:
PC模块,用于发送待加密消息并接受加密后的信息;
FPGA模块,用于接受待加密消息,对待加密消息进行加密处理后,再将加密后的信息再发送回所述PC模块;
PCIE接口控制模块,用于实现所述PC模块与所述FPGA模块之间的数据交换,所述PCIE接口控制模块接受所述PC模块发送的待加密消息,并将加密后的信息传回所述PC模块;
PCIE空间寄存器访问模块,用于访问所述PCIE接口控制模块的空间寄存器,实现中断使能,清中断和相关寄存器配置,检测PCIE接口关键信号,产生中断请求信号;
接受数据控制模块,用于接受所述PCIE接口控制模块接收到的所述PC模块的数据,并将数据输出到所述SHA256算法核实现模块;同时,还接受所述SHA256算法核实现模块返回的加密信息,并将其发送给所述PCIE接口控制模块;
SHA256算法核实现模块,用于计算出加密后的哈希值,将计算的哈希值发送给所述接受数据控制模块。
本实施例还提供一种计算机设备,适用于一种基于FPGA的SHA256高效数字加密方法的情况,包括:
存储器和处理器;存储器用于存储计算机可执行指令,处理器用于执行计算机可执行指令,实现如上述实施例提出的基于FPGA的SHA256高效数字加密方法。
该计算机设备可以是终端,该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本实施例还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例提出的基于FPGA的SHA256高效数字加密方法。
本实施例提出的存储介质与上述实施例提出的数据存储方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例与上述实施例具有相同的有益效果。
实施例2
参照表1,为本发明第二个实施例,该实施例提供了一种基于FPGA的SHA256高效数字加密方法,包括:
通过仿真实验数据的方式,对本发明方法下的FPGA系统、ASIC系统以及CPLD系统进行了对比,如表1所示:
表1三种系统的SHA256算法对比
可以看出,在ASIC、CPLD和FPGA三种可编程电路产品中,使用SHA256算法进行哈希时,不同输入数据长度下的系统运行时间、数据传输带宽和准确率会随着输入数据长度的增加,系统运行时间和数据传输带宽都会增加,而准确率则会逐渐降低;与ASIC和CPLD相比,本发明采用的FPGA具有更高的灵活性和可编程性,可以通过重新编程来实现不同的计算任务;从表格中可以看到,在处理SHA256哈希算法时,FPGA在所有输入数据长度下都表现出了优异的性能;在输入数据长度为10字节时,FPGA的系统运行时间和数据传输带宽分别比ASIC和CPLD快约20%和10%;在输入数据长度为1000字节和10000字节时,FPGA的系统运行时间和数据传输带宽分别比ASIC和CPLD快约20%和30%;在输入数据长度为100000字节时,FPGA的系统运行时间和数据传输带宽分别比ASIC和CPLD快约30%和80%;
除了性能方面的优势,FPGA还具有更高的可编程性和可扩展性,能够快速适应不同的计算需求和算法变化;FPGA可以实现高度定制化的计算任务,而且可以通过重新编程来不断优化和升级系统性能,具有更长的使用寿命和更低的维护成本;综合来看,FPGA在处理哈希算法时表现出了明显的优势,具有更高的性能、更高的灵活性和可编程性。
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种基于FPGA的SHA256高效数字加密方法,其特征在于,包括:
通过PC模块产生待加密数据,将其作为数据源利用PCIE协议发送到FPGA模块;
使用PCIE接口控制模块接收所述数据源,并将该数据源发送到接收数据控制模块;
所述接收数据控制模块将接收到的数据源发送到SHA256算法核实现模块进行计算,得到加密后的哈希值;
将所述哈希值回发至接收数据控制模块,再将其发送到PCIE接口控制模块并通过PCIE协议,将所述哈希值返回至PC模块;
把PC模块原有的正确加密后的哈希值与所述哈希值做对比,得到高效数字加密方法。
2.如权利要求1所述的基于FPGA的SHA256高效数字加密方法,其特征在于,所述通过PC模块产生待加密数据,包括:
发送的待加密数据为经过预处理后的256比特的数据源。
3.如权利要求2所述的基于FPGA的SHA256高效数字加密方法,其特征在于,使用PCIE接口控制模块接收所述数据源,并将该数据源发送到接收数据控制模块,包括:
PCIE接口控制模块功能分为读写两部分,第一部分是数据的读写,第二部分是配置数据的读写。
4.如权利要求3所述的基于FPGA的SHA256高效数字加密方法,其特征在于,所述接收数据控制模块将接收到的数据源发送到SHA256算法核实现模块,包括:
接收数据控制模块通过标准协议接受数据后,将数据存储到FIFO中做一级缓冲并与下一个模块隔离,同时拼接存储到FIFO中。
5.如权利要求4所述的基于FPGA的SHA256高效数字加密方法,其特征在于,计算得到加密后的哈希值,包括:
首先,对存储到FIFO中的数据进行读取,采取状态机的方式对输出数据进行拼接运算,当帧数据符有效时,此时拼接数据就是待加密数据,即数据源;
其次,进行8次拼接操作,同时在第8次拼接操作时对帧限定符进行高度限定,此时会产生一个拼接数据有效信号,用于判断数据拼接信号已经经过8次拼接后成为待加密数据,在拼接完成后根据系统实际需要拉高拼接数据有效信号,得到拼接数据,同时初始化一个初始哈希值,将初始哈希值存储到一个256比特的初始哈希寄存器中;
最后,将拼接数据、拼接数据有效信号、初始哈希值送入SHA256算法核实现模块作为该模块的数据输入;将256比特的输出哈希寄存器和哈希输出有效信号作为输出。
6.如权利要求5所述的基于FPGA的SHA256高效数字加密方法,其特征在于,计算得到加密后的哈希值还包括:
进行64次加密循环,当拼接数据有效信号为1时,8个加密数据端口位宽都是32比特,8个加密数据端口赋初值等于初始哈希寄存器,每次循环都要迭代8个加密数据端口,最后一次计算结果输出哈希值256比特的输出哈希寄存器等于8个加密数据端口;
其中,迭代循环通过状态机的方式来实现,设置状态机有66个状态,初始状态不进行操作,直到根据系统实际需要拉高拼接数据和拼接数据有效信号,状态机跳转到下一状态进行迭代循环,迭代循环消耗64个状态,每个状态执行相应的计算操作,迭代循环结束进入第66个状态,在该状态输出加密后的哈希值和哈希寄存器的值,以及输出哈希输出有效信号。
7.如权利要求5或6所述的基于FPGA的SHA256高效数字加密方法,其特征在于,将所述哈希值回发至接收数据控制模块,再将其发送到PCIE接口控制模块并通过PCIE协议,将所述哈希值返回至PC模块,包括:
接收数据控制模块输入为哈希输出有效信号,256比特的输出哈希寄存器,输出为AXI4总线接口,其接受SHA256算法核实现模块计算出的哈希值,并转换成AXI4标准总线接口输出到PCIE接口控制模块;
该模块内部逻辑如下:创建一个FIFO,FIFO输入位宽为256比特,输出位宽为64比特;当哈希输出有效信号为高电平时,将输出哈希寄存器的值写入FIFO中;当FIFO不为空,FIFO读使能一直有效,将存入FIFO的数据全部都出,同时,设置一个计数器;当FIFO读使能为高电平时,计数器加一,当计数器值为3时,计数器清0。
8.一种基于FPGA的SHA256高效数字加密系统,基于权利要求1~7任一所述的基于FPGA的SHA256高效数字加密方法,其特征在于,包括:
PC模块,用于发送待加密消息并接受加密后的信息;
FPGA模块,用于接受待加密消息,对待加密消息进行加密处理后,再将加密后的信息再发送回所述PC模块;
PCIE接口控制模块,用于实现所述PC模块与所述FPGA模块之间的数据交换,所述PCIE接口控制模块接受所述PC模块发送的待加密消息,并将加密后的信息传回所述PC模块;
PCIE空间寄存器访问模块,用于访问所述PCIE接口控制模块的空间寄存器,实现中断使能,清中断和相关寄存器配置,检测PCIE接口关键信号,产生中断请求信号;
接受数据控制模块,用于接受所述PCIE接口控制模块接收到的所述PC模块的数据,并将数据输出到所述SHA256算法核实现模块;同时,还接受所述SHA256算法核实现模块返回的加密信息,并将其发送给所述PCIE接口控制模块;
SHA256算法核实现模块,用于计算出加密后的哈希值,将计算的哈希值发送给所述接受数据控制模块。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于:所述处理器执行所述计算机程序时实现权利要求1~7任一所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1~7任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310657323.7A CN116527392A (zh) | 2023-06-05 | 2023-06-05 | 一种基于fpga的sha256高效数字加密方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310657323.7A CN116527392A (zh) | 2023-06-05 | 2023-06-05 | 一种基于fpga的sha256高效数字加密方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116527392A true CN116527392A (zh) | 2023-08-01 |
Family
ID=87394343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310657323.7A Pending CN116527392A (zh) | 2023-06-05 | 2023-06-05 | 一种基于fpga的sha256高效数字加密方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116527392A (zh) |
-
2023
- 2023-06-05 CN CN202310657323.7A patent/CN116527392A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11770262B2 (en) | Odd index precomputation for authentication path computation | |
CN112398656A (zh) | 通过计算机总线的安全通信 | |
JP6154824B2 (ja) | ステートマシンラチスにおけるブール型論理 | |
CN107103472B (zh) | 一种用于区块链的算法处理模块 | |
US8566485B2 (en) | Data transformation during direct memory access | |
KR20220028132A (ko) | 암호화 순열을 위한 암호화 아키텍처 | |
US7707477B2 (en) | Checksum calculation | |
US8831221B2 (en) | Unified architecture for crypto functional units | |
US12120227B2 (en) | Efficient post-quantum secure software updates tailored to resource-constrained devices | |
US20110307759A1 (en) | Functional DMA | |
CN102866971A (zh) | 传输数据的装置、系统及方法 | |
WO2017045484A1 (zh) | 一种基于xts-sm4的存储加解密方法及装置 | |
CN112152783A (zh) | 用于快速安全启动的低时延后量子签名验证 | |
JPH04358245A (ja) | データ通信装置 | |
US6549622B1 (en) | System and method for a fast hardware implementation of RC4 | |
US20190319802A1 (en) | Parallel processing techniques for hash-based signature algorithms | |
WO2022143536A1 (zh) | 基于APSoC的国密计算方法、系统、设备及介质 | |
EP4202685A1 (en) | Algebraic and deterministic memory authentication and correction with coupled cacheline metadata | |
CN114401081A (zh) | 数据加密传输方法、应用及系统 | |
CN117113442B (zh) | 一种面向同态加密算法Paillier的数据通路的加速系统 | |
CN116070292B (zh) | 一种基于fpga的sm4加密异构加速系统 | |
CN116527392A (zh) | 一种基于fpga的sha256高效数字加密方法及系统 | |
US20190319787A1 (en) | Hardware acceleration of bike for post-quantum public key cryptography | |
CN102110066B (zh) | 一种税控加密卡的控制方法 | |
WO2023107775A1 (en) | Computation of xmss signature with limited runtime storage |
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 |