CN109190413A - 一种基于fpga和md5加密的串行通信系统 - Google Patents
一种基于fpga和md5加密的串行通信系统 Download PDFInfo
- Publication number
- CN109190413A CN109190413A CN201811213113.4A CN201811213113A CN109190413A CN 109190413 A CN109190413 A CN 109190413A CN 201811213113 A CN201811213113 A CN 201811213113A CN 109190413 A CN109190413 A CN 109190413A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- value
- state
- encryption
- 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
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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Power Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
一种基于FPGA和MD5加密的串行通信系统,涉及通信技术领域。本发明为了提高UART自适应波特率的接收通讯硬件电路的安全性。所述系统包括:波特率自适应识别接收模块,自动接收主机发送的UART数据并识别其波特率;MD5数据处理模块,处理波特率自适应识别接收模块接收的UART数据,对UART数据进行移位操作后,如果不满足512位数据则进行补位和补数据位操作,使UART数据的大小为512位,最终输出符合MD5加密算法要求的512位数据;MD5加密运算模块,接收512位数据进行MD5加密运算操作,最终输出4路32位的加密变量。本发明提高了运算效率,提高加密算法的执行速度。
Description
技术领域
本发明涉及一种具有加密功能的串行通信系统,涉及通信技术领域。
背景技术
在信息社会,信息技术的应用也越来越广泛,然而如何保障信息在传输中的安全已成为社会研究的热点和趋势。信息加密是保障信息安全的关键因素和有效方法。
异步串行通信协议由于成本低廉,实现简单,传输数据可靠,传输距离远而在自动化控制、汽车、军事、仪器、通信等得到了广泛的应用[1]。UART(通用异步收发传输器)是一种异步通信方式,UART通讯协议在嵌入式领域被普遍采用,几乎所有的嵌入式处理器具有完善的UART接口,用于实现主机和辅助设备之间的通信。在星载仪器单机内部通讯中经常用UART来实现通讯[3]。随着嵌入式系统复杂程度的不断提高,对于串行通信的速度和安全性要求也不断增加。因此可以对通讯数据进行加密处理。MD5加密算法作为一种信息加密算法在信息通讯安全等诸多方面得到广泛应用。可以把MD5加密算法引入到底层工业控制通讯中,用MD5加密算法来实现通讯的安全服务。MD5加密算法计算量很大,运算MD5时会占用大量的CPU资源,增加了系统的功耗[4]。嵌入式处理数据能力有限,一般无法胜任MD5加密过程的数据处理能力。近几年,随着现场可编程门阵列(FPGA)在电子设计中的发展,其包含的资源越来越丰富,实现功能越来越多,成本也在降低因此得到广泛应用[2]。现有技术中没有提出基于FPGA和MD5相结合的加密串行通信系统。
发明内容
本发明的目的是提供一种基于FPGA和MD5加密的串行通信系统,用FPGA来实现UART自适应波特率通讯的MD5加密,以提高接收通讯硬件电路的安全性。
本发明为解决上述技术问题采取的技术方案是:
一种基于FPGA和MD5加密的串行通信系统,所述系统包括:
波特率自适应识别接收模块,自动接收主机发送的UART数据并识别其波特率;
MD5数据处理模块,处理波特率自适应识别接收模块接收的UART数据,对UART数据进行移位操作后,如果不满足512位数据则进行补位和补数据位操作,使UART数据的大小为512位,最终输出符合MD5加密算法要求的512位数据;
MD5加密运算模块:接收512位数据进行MD5加密运算操作,最终输出4路32位的加密变量,所述MD5加密运算操作是指依次经过四个非线性压缩函数FF、GG、HH、II分别进行16步压缩操作。
进一步地,所述波特率自适应识别接收模块包括四个子模块:电平检测子模块、波特率自动检测子模块,波特率产生子模块和接收控制模块子模块;
电平检测子模块不断检测接收的信号,如果电平由高变低(信号下降沿)输出正脉冲信号h2l;
波特率自动检测子模块以频率f(50MHz)频率对信号进行采样,来确定接收波特率的值,输出接收波特率的值baud_rate[15:0]和检测完成信号auto_done;
波特率产生子模块根据接收的波特率值baud_rate[15:0]和各个典型波特率特征值进行比较,若误差在0.5%范围内,确定接收的波特率;
接收控制子模块在h2l和auto_done信号控制下,完成对模块的整体控制,实现数据波特率的自适应接收并输出接收完成信号rx_done、接收到数据rx_date[7:0]和产生的波特率baud_rate[15:0]。
进一步地,波特率自适应识别接收模块进行波特率的识别的过程为:
特点是该方法检测0电平的信号识别波特率,首先处于空闲状态,接收测量信号,并判断是否有效,结果为是,则将i置0,并执行等待步骤,结果为否,则返回空闲状态,等待接收测量信号;其中i表示一个计数器;
在等待状态时令第i个测量值cnt[i]=0,并判断UART接收引脚是否有时钟下降沿,结果为是,则执行运行步骤,结果为否,则重新执行等待步骤;
在运行状态,每个时钟上升沿将cnt[i]的值加1,即cnt[i]←cnt[i]+1,并判断接收引脚上是否有时钟上升沿,结果为否,则继续对低电平持续时钟数统计,结果为是,对低电平持续时钟数统计结束,i的值加1,该值为测量次数,判断i是否为30时,结果为否,则重新执行等待操作,结果为是,则执行求和操作;
在求和状态时,令i变为初始值,sum等于原sum的值加cnt[i],判断i的值是否等于30,结果为否,则i的值加1,并重新执行求和操作,结果为是,则执行计算操作。在计算时,令sum除以30求得平均值avg,即得到对应一位数据的时间的均值,根据所得到的时间均值计算得出波特率。
进一步地,所述MD5数据处理模块包括六个子模块:数据接收模块、延迟模块、数据处理模块、数据缓存模块、FSM有限状态机控制模块和标志位模块,其中:
数据接收模块uart_rx用于接收波特率自适应识别接收模块发出的UART数据;
延时模块delay_counter为用以延时判断的计数器;delay_counter的信号delay_en为计数器使能,clear为同步清零,当计数器溢出时,输出一个时钟周期的max_tick高脉冲信号,告知FSM延时完成,计数器模的设定根据实际情况而定,但不应使延时小于上位机串口的发送间隔;
数据处理模块process,用以完成数据的移位和补位操作,其中内部包括一个用来存储数据的数据寄存器md5_reg、一个8位移位操作、一个数据选择器以及完成移位、补位和补数据位的若干组合逻辑电路;
数据缓存模块md5_buffer为512位的缓存器,用于缓存数据处理模块process处理的数据,最终输出处理好的512位数据。
标志位模块flag用于表示MD5数据处理模块已经完成数据的补位和补数据位操作,可以输出512位的数据,用来与MD5加密运算模块通讯。
FSM有限状态机控制模块通过directive来控制数据选择器进行不同的移位、补位和补数据位操作;当控制模块FSM处于接收状态时,把UART接收的数据进行shift向左移位操作;接收的数据分为三种情况:
当接收到512位时选择directive为000直接输出;
当接收的数据对512取余小于448位时,进行fill_0移位,补位,补数据位操作处理;计数器count值为接收的数据位大小,用来控制移位、补位、补数据位的多少;经fii_0进行如下处理处理:(1)将md5_reg中的所有有效数据左移置md5_reg的最高位,留下低位空余;(2)将低位空余部分最高位置1;(3)以二进制的MD5待加密数据长度count值填充md5_reg的低64位后变成512位,由directive为001选择输出;
当接收的数据对512取余大于等于448时,由于要补位成两个512位,进行fill_1操作和fill_2操作处理,其中fill_1进行移位和补位操作:(1)将md5_reg中所有有效数据左移置md5_reg最高位,留下低位空余;(2)将低位空余部分最高位置1,使其满足512位,经directive为010时输出;而fill_2进行补数据位操作,将二进制的MD5待加密数据长度count值填充一个全零md5_reg的低64位补出一个512位的数据,经directive为011时输出;
FSM有限状态机控制模块,用来控制各个模块之间的协同工作,其工作过程如下:在初始时,状态机工作在idle状态,等到上位机UART发送串行数据,当接收到第一个字节数据后,rx_done_tick为1,FSM通过directive信号控制完成移位操作,并且立即进入receive状态;在receive状态中,系统将一直接收数据,数据的多少由count计数器计算,每输入一个字节,计数器的值加8,count为明文长度计数器(64位)用来计算并且保存原始明文长度,其值可以用来补数据位操作;当count等于511时,既有512位数据完成移位,FSM进入transmit状态,将en和clear置1,从而控制md5_buffer接收一次数据,并且flag表示不为空,延迟模块进行清零操作;FSM在transmit状态后将立即返回receive状态;若在数据接收过程中,上位机长时间未发送数据,此时延时计数器的max_tick为1,如果count值大于等于448,FSM由receive状态进入process_1状态,且directive为010来控制process完成数据操作;接着进入process_2状态,directive为011来控制process进行不同的补位操作;如果count值小于448时,FSM由receive进入process_0状态,directive为001来控制process完成移位,补位和补数据位操作,最终FSM进入done状态,使en和clear为1,控制md5_buffer存储处理好的512位数据,通过clear信号将延时计数器清零。
进一步地,所述MD5加密运算模块采用自底向上的设计方法,共分为八个模块:FSM_MD5有限状态机控制模块、两个存储模块、两个译码器模块、数据选择器模块、运算模块和输出模块;
有限状态机模块FSM_MD5用于控制其它模块的状态,其控制过程为:在初始时,状态机工作在idle状态,当start与inread有效时,内存ROM0模块的使能信号有效,sel0为00值,进入initial状态;计数器开始计数,控制ROM0模块中的数据输出,当计数器计数到3时,计数器重新清零;内存ROM1的使能信号有效,sel0变为01值,sel1为11值,有限状态机进入done状态,计数器开始计数,在计数器到63之前,计数器的每一个状态控制内存ROM1的数据输出;sel1变化为01值,当计数器为63时,完成这次操作,内存ROM1模块的使能信号变成无效,sel0由01态变为11值,sel1由01值变为00值;执行完这些操作,再判断inread是否有效,如果有效,sel1由00值变成11值,状态机回到done状态,然后循环执行,否则,状态机进入到idle状态,等待满足条件再执行。
进一步地,两个存储模块由ROM0模块和ROM1模块组成,其中ROM0用来存储初始变量A/B/C/D,ROM1用来存储64个Ti[31:0]值的查找表;两个译码器模块由译码器TRANS0和译码器TRANS1构成,初始变量A/B/C/D是MD5定义的初始值;
存储模块ROM0(存储器)大小为数据宽度32、地址宽度为4,存储模块ROM1大小为数据宽度32、地址宽度64;ROM0和ROM1存储器使用内部ROM的IP核来实现;TRANS0、TRANS1分别为64的4位宽译码器和64的8位宽译码器组成;其中TRANS0的输出来控制变量512位数据的输入,TRANS1输出来控制数据的移位数S[7:0]的值。
进一步地,数据选择器模块Xigen为一个16路数据选择器,输入I为四位宽的数,X为要处理的512位数,四轮循环,每轮都依次输出32位宽的数。
进一步地,FUNCTION运算模块用来实现数据的运算功能,运算步骤根据MD5算法的定义而设置;对于每一步计算器其中X[31:0]的值和Ti[31:0]的值都是不同的,而“<<”代表循环左移移位运算,移位的数值每一步都由S[7:0]决定,经过一步运算,输出ai/bi/ci/di四个32位值,作为下一步的值运算;F/G/H/I为逻辑运算函数,每轮16步使用其中一种函数,其中Ti[31:0]为常数序列,X[31:0]为输入512位的数据分为16个32位宽的数组。
进一步地,数据输出模块MD5_OUT由有限状态机输出的sel0和sel1来控制运算状态,输入数据32位的A/B/C/D为初始值,在sel0信号控制下,经过四个移位寄存器后,依次存入寄存器中;然后在sel1信号控制下,A/B/C/D的值经一个时钟周期传递到下一个四个并行寄存器中;这四个初值,经FUNCTION模块的一步运算,其结果输出位32位的ai/bi/ci/di经过sel1控制信号,存入四个并行寄存器中;然后依次类推第一步的过程,进行第二步,第三步,直到六十四步运算结束,输出的值再加上初值,作为最终结果A/B/C/D的输出,输出是一个512位的模块的MD5加密结果,如果有多个这样的512位数据,依次重复上述运算过程,求得最终的128位输出加密结果。
本发明的有益效果是:
本发明是根据串行通信安全可靠性的需求而提出的。本发明提高了运算效率,提高加密算法的执行速度,对关键路径B值进行了优化处理,在内部模块中添加了Buffer,把串行数据流,存储起来,进行并行数据处理。本发明在设计中,把系统分成波特率自适应接口,数据处理模块和MD5加密运算模块。对UART进行配置,设计出波特率自适应的串行通信接收模块。由于UART发送数据较慢,通过实验与modelsim仿真对MD5算法进行分析,设计出迭代循环结构,使MD5运算处理速度为365Mbps。使得数据处理模块和MD5加密运算模块两部分在处理数据的吞吐量能相对平衡。
由于其高速的运算和处理数据的能力,用FPGA硬件实现MD5加密算法比较方便,且能更好的满足通信的物理安全性,达到更快的计算速度。为了保障串行UART的通信的准确和安全,利用FPGA设计波特率自适应的UART异步串行通讯电路,在芯片上实现所需要的UART串行通讯功能,提高了程序的实用性和灵活性,有利于进行扩展和移植。
根据UART串行通讯加密安全性的设计需求,以及MD5加密算法较高的安全性,本发明利用FPGA设计了一款异步串行通信要求的MD5加密运算电路,实现了高度安全的UART自适应波特率的接收的MD5加密算法的通讯硬件电路。
附图说明
图1是一步MD5算法操作流程图(其中round_num[5:0]为执行的步数),图2是本发明所述系统的整体框图(其中rx为输入的串口UART数据),图3是波特率自适应模块的结构框图(其中h2l表示高电平变成低电平,rx_done表示一次传输完成),图4是波特率识别的状态转换流程图,图5是串行通信MD5数据处理的整体框图,图6是process模块结构框图,图7是FSM模块的算法状态机流程图,图8是MD5加密运算模块整体框图,图9是FSM_MD5模块的算法状态机流程图,图10Xigen模块的结构图,图11是MD5_OUT模块结构框图,图12是数据123和abcd的modelsim仿真验证结果截图。
具体实施方式
结合图1至11详细说明本发明所述的基于FPGA和MD5加密的串行通信系统:
1、MD5算法
MD5算法是麻省理工学院Ron Rivest开发的消息摘要算法。它是在MD2、MD4算法的基础上演变而来的安全版本,其中MD5运算速度比MD4要慢,安全性高的不可逆加密算法。MD5算法是将输入长度不大于2^64bit的消息,将其补位和补数据位预处理成512bit的分组消息并将每个512bit的消息分成16个32bit消息块,经过加密处理后,输出128bit的消息摘要[5]。
假设有一个任意大的消息作为输入,程序要找到它的加密消息摘要。MD5算法的运算操作涉及以下步骤。
(1)补位
首先对输入数据进行补位,使得消息长度位能加上64bit可以整除512bit。也就是说,其长度除以512bit余数为448bit。即使消息长度已经为448bit也要在后面补上512bit。为了考虑MD5加密算法的安全性,也会执行后面的补位。执行步骤是在数据位后面先填充单个1位,后面跟所需数量的0位组成。
(2)补长度
在进行完第一步补位操作的后面,用一个64位的二进制数据来表示消息的原始长度(低位有效位在前)。经过上述两步操作,可得到消息扩展总长度为512的整数倍。
(3)初始的变量
在进行运算之前,MD5算法需要四个32位的缓冲区(A/B/C/D)表示,并以十六进制初始化为以下值:
A=0X01234567
B=0X89abcdef
C=0Xfedcba98
D=0X76543210
其中A/B/C/D以低字节在前,高字节在后的小端存储方式保存[6]。
(4)(4轮,每轮16步运算)消息处理循环操作
消息处理为MD5算法的核心,其逻辑如图1所示。
将四个初始变量分别赋值给A/B/C/D、其中包括四轮循环处理,每轮循环还有十六步操作。然而每一轮循环,每一步操作都具有图1相似的结构。MD5加密算法每一步将B的值赋给C,将C的值赋给D,将D的值赋值给A。A经过一系列运算,先对BCD三个变量做一次逻辑运算,即非线性函数运算,将所得结果加上A,再加上消息文本的分组X和常数Ti,将所得结果向左移常数S,并加上B且赋值给B。因此每步运算将会改变变量的值,经过四步运算就可以得到全新的A/B/C/D的值,经过16步运算为一轮,再下一步运算即更换非线性函数进入下一轮。
每一次操作中用到的四个逻辑运算函数如表1所示。
表1四个非线性函数表达式
MD5算法中每步运算运用表1非线性逻辑运算函数进行压缩运算,四轮运算结构
相似但每次消息文本分组的运算顺序和移位数都不同。四个压缩函数FF,GG,
HH和II分别为
FF(A,B,C,D,X[k],s,T[i])表示:B=B+((A+F(B,C,D)+X[k]+T[i])<<s)
GG(A,B,C,D,X[k],s,T[i])表示:B=B+((A+G(B,C,D)+X[k]+T[i])<<s)
HH(A,B,C,D,X[k],s,T[i])表示:B=B+((A+H(B,C,D)+X[k]+T[i])<<s)
II(A,B,C,D,X[k],s,T[i])表示B=B+((A+I(B,C,D)+X[k]+T[i])<<s)
其中X[k]表示的第k(k=0~15)个分组。每个步骤使用正弦函数构造的64个元素T[i](i=1~64),其中T[i]表示的第i个元素值为T[i]=232×abs(sin(i))的整数部分其中i为弧度。每次都将当前的512位块和128位的连接变量作为输入。其中16个32位的数组为X[k]保存当前的512位数,对于第一轮运算,这些数组以原始顺序执行。然而对于第2,3,4轮,定义为以下排序,X2[k]=(1+5k)%16X3[k]=(5+3k)%16,X4[k]=7k%16
MD5算法中每一步运算还包括循环左移位数S,每一轮循环左移的位数都不同,位数是按照四个数字循环使用的,定义为,第一轮循环左移数为:s=(7,12,17,22)第二轮循环左移数为:s=(5,9,14,10)第三轮循环左移数为:s=(4,11,16,23)第四轮循环左移数为:s=(6,10,15,21)。
(5)结果输出
在进行完以上四步,输入的512位会处理成输出的128位消息摘要。分别为A/B/C/D再加上初始的变量值,作为下一个512块的初始值,直到完成所有的模块,最后的输出结果为128位数字。
2串行通信MD5算法的FPGA实现
采用FPGA完成MD5加密算法有多种实现方式,迭代循环方式、循环展开方式、流水线方式、混合方式[8]。不同的实现方式占用逻辑资源和吞吐量不一样。由于UART串行通信处理数据效率低,为了权衡模块占用逻辑资源和吞吐量之间的矛盾,本文采用了UART串行通信MD5加密算法的迭代循环方式实现。
本发明系统分为三个模块,分别为波特率自适应接收模块,数据处理模块和MD5加密运算模块,整体框图如图2所示。波特率自适应模块接收主机发送的数据流,并自动识别主机的波特率,并接收UART数据。数据处理模块进行处理接收UART发出的待加密数据,经input端口输入,在每个模块中进行预处理,最终输出符合MD5加密算法要求的512位数据。MD5加密运算模块接收512位数据进行MD5加密运算操作,最终输出4路32位的加密变量[9]。
2.1波特率自适应接收
波特率自适应接收串口发送来数据,并检测其中波特率,整体框图如图3所示。
波特率自适应部分主要有电平检测、波特率自动检测,波特率产生和接收控制模块组成。电平检测模块不断检测接收的信号,如果电平由高变低(信号下降沿)输出正脉冲信号h2l。波特率自动检测模块以f(50MHz)频率对信号进行采样,来确定接收波特率的值,输出接收波特率的值baud_rate[15:0]和检测完成信号auto_done。波特率产生模块根据接收的波特率值baud_rate[15:0]和各个典型波特率特征值进行比较,若误差在0.5%范围内,确定接收的波特率。接收控制模块在h2l和auto_done信号控制下,完成对模块的整体控制,实现数据波特率的自适应接收并输出接收完成信号rx_done、接收到数据rx_date[7:0]和产生的波特率baud_rate[15:0]。
波特率的自适应接收模块中最主要的为波特率的识别,其结构如框图4所示。
特点是该方法检测0电平的信号识别波特率,首先处于空闲状态,接收测量信号,并判断是否有效,结果为是,则将i置0,并执行等待步骤,结果为否,则返回空闲状态,等待接收测量信号。其中i表示一个计数器。在等待状态时令第i个测量值cnt[i]=0,并判断UART接收引脚是否有时钟下降沿,结果为是,则执行运行步骤,结果为否,则重新执行等待步骤。在运行状态,每个时钟上升沿将cnt[i]的值加1,即cnt[i]←cnt[i]+1,并判断接收引脚上是否有时钟上升沿,结果为否,则继续对低电平持续时钟数统计,结果为是,对低电平持续时钟数统计结束,i的值加1,该值为测量次数,判断i是否为30时,结果为否,则重新执行等待操作,结果为是,则执行求和操作。在求和状态时,令i变为初始值,sum等于原sum的值加cnt[i],判断i的值是否等于30,结果为否,则i的值加1,并重新执行求和操作,结果为是,则执行计算操作。在计算时,令sum除以30求得平均值avg,即得到对应一位数据的时间的均值,根据所得到的时间均值计算得出波特率。
2.2MD5数据处理模块
串行通讯MD5数据处理的整体框图如图5所示。其中包括六个模块,数据接收模块,延迟模块,数据处理模块,数据缓存模块,FSM有限状态机控制模块,标志位模块。uart_rx为串行数据波特率自适应数据接收模块。delay_counter为延时模块,它其实是一个计数器,用以延时判断。信号delay_en为计数器使能,clear为同步清零。当计数器溢出时,输出一个时钟周期的max_tick高脉冲信号,告知FSM有限状态机控制模块延时完成,计数器模的设定根据实际情况而定,但不应使延时小于上位机串口的发送间隔。process为数据处理模块,用以完成数据的移位和补位操作,如图6所示,其中内部包括一个数据寄存器md5_reg,用来存储数据,一个8位移位操作,一个数据选择器,以及完成移位,补位和补数据位的若干组合逻辑电路。控制模块FSM通过directive来控制数据选择器,进行不同的移位,补位和补数据位操作。当FSM处于接收状态时,把UART接收的数据进行shift向左移位操作。接收的数据分为三种情况,当接收到512位时选择directive为000直接输出。当接收的数据对512取余小于448位时,进行fill_0操作处理。count的值为接收的数据位大小,用来控制移位,补位,补数据位,经fii_0操作处理(1)将md5_reg中的所有有效数据左移置md5_reg的最高位,留下低位空余。(2)将低位空余部分最高位置1。(3)以二进制的MD5待加密数据长度count值填充md5_reg的低64位后变成512位。由directive为001选择输出。当接收的数据对512取余大于等于448时,由于要补位成两个512位,进行fill_1操作和fill_2操作处理,其中fill_1进行移位和补位操作,(1)将md5_reg中所有有效数据左移置md5_reg最高位,留下低位空余。(2)将低位空余部分最高位置1。使其满足512位,经directive为010时输出。而fill_2进行补数据位操作,将二进制的MD5待加密数据长度count值填充一个全零md5_reg的低64位补出一个512位的数据,经directive为011时输出。
FSM有限状态机控制模块,用来控制各个模块之间的协同工作,有限状态机的算法状态机如图7所示。在初始时,状态机工作在idle状态,等到上位机UART发送串行数据,当接收到第一个字节数据后,rx_done_tick为1,FSM通过directive信号控制完成移位操作,并且立即进入receive状态。在receive状态中,系统将一直接收数据,数据的多少由count计数器计算,每输入一个字节,计数器的值加8,count为明文长度计数器(64位)用来计算并且保存原始明文长度,其值可以用来补数据位操作。当count等于511时,既有512位数据完成移位,FSM进入transmit状态,将en和clear置1。从而控制md5_buffer接收一次数据,并且flag表示不为空,延迟模块进行清零操作。FSM在transmit状态后将立即返回receive状态。若在数据接收过程中,上位机长时间未发送数据,此时延时计数器的max_tick为1。如果count值大于等于448,FSM由receive状态进入process_1状态,且directive为010来控制process完成数据操作。接着进入process_2状态,directive为011来控制process进行不同的补位操作。如果count值小于448时,FSM由receive进入process_0状态,directive为001来控制process完成移位,补位和补数据位操作,最终FSM进入done状态,使en和clear为1,控制md5_buffer存储处理好的512位数据,通过clear信号将延时计数器清零。
2.3 MD5加密运算模块
MD5加密运算采用模块化设计,使用自底向上的设计方法,共分为八个模块。为FSM_MD5有限状态机模块,两个存储模块,两个译码器模块,数据选择器模块,运算模块和输出模块。MD5加密运算模块如图8所示。
FSM_MD5为有限状态机模块,用来控制其它模块的状态,其算法状态机图如图9所示。在初始时,状态机工作在idle状态,当start与inread有效时,内存ROM0模块的使能信号有效,sel0为00值,进入initial状态。计数器开始计数,控制ROM0模块中的数据输出,当计数器计数到3时,计数器重新清零。内存ROM1的使能信号有效,sel0变为01值,sel1为11值,有限状态机进入done状态,计数器开始计数,在计数器到63之前,计数器的每一个状态控制内存ROM1的数据输出。sel1变化为01值,当计数器为63时,完成这次操作,内存ROM1模块的使能信号变成无效,sel0由01态变为11值,sel1由01值变为00值。执行完这些操作,再判断inread是否有效,如果有效,sel1由00值变成11值,状态机回到done状态,然后循环执行,否则,状态机进入到idle状态,等待满足条件再执行。
存储模块由ROM0模块和ROM1模块组成,其中ROM0用来存储初始变量A、B、C、D,ROM1用来存储64个Ti值的查找表。ROM0大小为数据宽度32、地址宽度为4和ROM1大小为数据宽度32、地址宽度64,这个存储器可以由FPGA内部提供,也可以由外部芯片提供,比较灵活。本设计使用内部ROM的IP核来完成的。TRANS0、TRANS1分别为64的4位宽译码器和64的8位宽译码器组成。其中TRANS0的输出来控制变量512位数据的输入,TRANS1输出来控制数据的移位数S的值。Xigen模块为一个16路数据选择器,如图10所示,输入I为四位宽的数,X[511:0]为要处理的512位数,四轮循环,每轮都依次输出32位宽的数。FUNCTION模块用来实现数据的运算功能,运算步骤根据MD5算法的定义而设置。其中Ti[31:0]为常数序列,X[31:0]为输入512位的数据分为16个32位宽的数组,对于每一步计算器其中X[31:0]的值和Ti[31:0]的值都是不同的,而“<<”代表循环左移移位运算,移位的数值每一步都由S[7:0]决定,经过一步运算,输出ai/bi/ci/di四个32位值,作为下一步的值运算。F/G/H/I为逻辑运算函数,每轮16步使用其中一种函数。
MD5_OUT为数据输出模块,结构如图11所示。MD5_OUT模块由有限状态机输出的sel0和sel1来控制运算状态,输入数据32位的A/B/C/D为初始值,在sel0信号控制下,经过四个移位寄存器后,依次存入寄存器中。然后在sel1信号控制下,A/B/C/D的值经一个时钟周期传递到下一个四个并行寄存器中。这四个初值,经FUNCTION模块的一步运算,其结果输出位32位的ai/bi/ci/di经过sel1控制信号,存入四个并行寄存器中。然后依次类推第一步的过程,进行第二步,第三步,直到六十四步运算结束,输出的值再加上初值,作为最终结果A/B/C/D的输出。这是一个512位的模块的输出结果,如果有多个这样的512位数据,依次重复上述运算过程,求得最终的128位输出结果。
3仿真综合结果验证
本发明提出的UART串行通信的MD5加密算法实现使用Verilog HDL语言编写,通过Altera公司的QuartusⅡ软件进行综合设计,并用Modelsim_Altera10.1仿真验证。设计运用UART串行通信接口发送波特率不同的大量数据,用本设计进行接收处理,并对每一次UART传输的数据进行加密处理和modelsim仿真验证。为了确保本设计的UART串行通信MD5加密安全可靠性,对同一明文数字,用UART串行通信MD5加密的modelsim仿真结果和用权威软件求得结果进行对比,从中随机抽取一些数据,得到的结果如下表2所示。
表2验证结果对比
用Modelsim_Altera10.1仿真验证结果如图12所示,对于相同的输入值,经UART串行通信MD5加密后的仿真结果和权威软件MD5的结果一致。验证了本文设计的UART串行通信MD5加密算法硬件实现的正确性。分别从UART波特率自适应接口模块、MD5数据处理和MD5加密运算模块来设计本系统。由于UART串行通信模块发送数据比较慢,设计采用了常用波特率为115200bps,而MD5加密运算模块数据处理速度较快,为了平衡与串行通信模块的差距。从节约占用逻辑资源,和降低吞吐量考虑,采用了迭代循环的设计方式,设计出吞吐量为(1)其中PMD5为最大处理速度,Fmax为工作频率,为50Mhz。B为一个明文长度512位。N为处理单个明文的周期数,本设计为N=70。带入(1)公式得到PMD5=365Mbps。如果采用流水线方式实现可以提高吞吐量达到Gbps,但是会占用大量的逻辑资源,功耗增加。从平衡前后模块吞吐量考虑,因此采用了迭代循环方式实现MD5加密运算模块。
4结论
由于对UART通信协议安全的特殊要求,且MD5加密算法的高度安全性。本文设计UART串行通信协议MD5加密算法的FPGA实现。由于串行通信UART发送数据比较慢,采用比较合适的迭代循环结构,设计出MD5算法使用资源占用少,执行速度要求不高,MD5算法的执行速度为365Mbps,满足了UART接受数据的速度要求。合理的利用FPGA的资源,使得串行通信接口模块和MD5加密运算模块之间占用资源和执行速度达到一个最优解。设计这种迭代循环的结构,减少功耗和降低成本有重大研究意义。当今各种串口数据通信与UART串行数据有许多相似之处,本文提出的UART串行通信MD5加密也适用于其它的串行数据进行加密处理有指导意义,具有一定的实用价值。
本发明中援引的参考文献明细如下:
[1]Janaka deepakumara,Howard M.heys and R.Venkatesan Faculty ofEngineering and applied science Memorial University of Newfoundland.FPGAimplementation of MD5hash algorithm[C].Electrical and Computer Engineering,Canadian Conference on,St.John's,13-16May,2001:919-924.
[2]WANG J M,TIAN X H,JIANG X L.Verilog HDL Digital System Design[M].Harbin:Harbin Institute of Technology Press,2010:1-300.王建民,田晓华,江晓林.Verilog HDL数字系统设计[M].第一版.哈尔滨:哈尔滨工业大学出版社,2010:1-300.
[3]DAI Z B,DUO Y H,SUN W Z.Design and Implementation of MD5AlgorithmIP Core[J].Microelectronics and Computer,2004(5):163-168.戴紫彬,杜艳华,孙万忠.MD5算法IP核的设计与实现[J].微电子学与计算机,2004,(5):163-168.
[4]PAN G Z.Counting and Realization of High Speed Serial PortTransmission Based on FPGA[D].Shanghai:Fudan University,2009.潘国祯.基于FPGA实现的高速串口传输计数与实现[D].上海:复旦大学,2009.
[5]B.Preneel,“Cryptographic Primitives for InformationAuthentication-State of the Art in Applied Cryptography”,Lecture Notes inComputer Science vol.1528,Springer-Verlag Berlin Heidelberg NY 1998.
[6]R L Rivest.The MD5Message-Digest Algorithm[S].MIT Laboratory forComputer Science and RSA Data Security,Inc.April,1992:1-21.
[7]Dongjing He,Zhi Xue.Multi-parallel architecture for MD5implementations on FPGA with gigabit-level throughput[C].IntelligenceInformation Processing and Trusted Computing(IPTC),International Symposiumon,Huanggang,28-29October,2010:535-538.
[8]K Jarvinen,M Tommiska,J Skytta.Hardware implementation analysis ofthe MD5hash algorithm[C].Proceedings of the 38th Annual Hawaii InternationalConference on System Sciences,Finland,03-06January,2005:1530-1605.
[9]Wang Yuliang,Zhao Qiuxia,Jiang liehui,et al.Ultra high throughputimplementations for MD5Hash algorithm on FPGA[J].Lecture Notes in ComputerScience,2010,5938:433-441.
Claims (9)
1.一种基于FPGA和MD5加密的串行通信系统,其特征在于,所述系统包括:
波特率自适应识别接收模块,自动接收主机发送的UART数据并识别其波特率;
MD5数据处理模块,处理波特率自适应识别接收模块接收的UART数据,对UART数据进行移位操作后,如果不满足512位数据则进行补位和补数据位操作,使UART数据的大小为512位,最终输出符合MD5加密算法要求的512位数据;
MD5加密运算模块:接收512位数据进行MD5加密运算操作,最终输出4路32位的加密变量,所述MD5加密运算操作是指依次经过四个非线性压缩函数FF、GG、HH、II分别进行16步压缩操作。
2.根据权利要求1所述的一种基于FPGA和MD5加密的串行通信系统,其特征在于,
所述波特率自适应识别接收模块包括四个子模块:电平检测子模块、波特率自动检测子模块,波特率产生子模块和接收控制模块子模块;
电平检测子模块不断检测接收的信号,如果电平由高变低输出正脉冲信号h2l;
波特率自动检测子模块以频率f为50MHz的频率对信号进行采样,来确定接收波特率的值,输出接收波特率的值baud_rate[15:0]和检测完成信号auto_done;
波特率产生子模块根据接收的波特率值baud_rate[15:0]和各个典型波特率特征值进行比较,若误差在0.5%范围内,确定接收的波特率;
接收控制子模块在h2l和auto_done信号控制下,完成对模块的整体控制,实现数据波特率的自适应接收并输出接收完成信号rx_done、接收到数据rx_date[7:0]和产生的波特率baud_rate[15:0]。
3.根据权利要求2所述的一种基于FPGA和MD5加密的串行通信系统,其特征在于,波特率自适应识别接收模块进行波特率的识别的过程为:
特点是该方法检测0电平的信号识别波特率,首先处于空闲状态,接收测量信号,并判断是否有效,结果为是,则将i置0,并执行等待步骤,结果为否,则返回空闲状态,等待接收测量信号;其中i表示一个计数器;
在等待状态时令第i个测量值cnt[i]=0,并判断UART接收引脚是否有时钟下降沿,结果为是,则执行运行步骤,结果为否,则重新执行等待步骤;
在运行状态,每个时钟上升沿将cnt[i]的值加1,即cnt[i]←cnt[i]+1,并判断接收引脚上是否有时钟上升沿,结果为否,则继续对低电平持续时钟数统计,结果为是,对低电平持续时钟数统计结束,i的值加1,该值为测量次数,判断i是否为30时,结果为否,则重新执行等待操作,结果为是,则执行求和操作;
在求和状态时,令i变为初始值,sum等于原sum的值加cnt[i],判断i的值是否等于30,结果为否,则i的值加1,并重新执行求和操作,结果为是,则执行计算操作。在计算时,令sum除以30求得平均值avg,即得到对应一位数据的时间的均值,根据所得到的时间均值计算得出波特率。
4.根据权利要求3所述的一种基于FPGA和MD5加密的串行通信系统,其特征在于,所述MD5数据处理模块包括六个子模块:数据接收模块、延迟模块、数据处理模块、数据缓存模块、FSM有限状态机控制模块和标志位模块,其中:
数据接收模块uart_rx用于接收波特率自适应识别接收模块发出的UART数据;
延时模块delay_counter为用以延时判断的计数器;delay_counter的信号delay_en为计数器使能,clear为同步清零,当计数器溢出时,输出一个时钟周期的max_tick高脉冲信号,告知FSM延时完成,计数器模的设定根据实际情况而定,但不应使延时小于上位机串口的发送间隔;
数据处理模块process,用以完成数据的移位和补位操作,其中内部包括一个用来存储数据的数据寄存器md5_reg、一个8位移位操作、一个数据选择器以及完成移位、补位和补数据位的若干组合逻辑电路;
数据缓存模块md5_buffer为512位的缓存器,用于缓存数据处理模块process处理的数据,最终输出处理好的512位数据。
标志位模块flag用于表示MD5数据处理模块已经完成数据的补位和补数据位操作,可以输出512位的数据,用来与MD5加密运算模块通讯。
FSM有限状态机控制模块通过directive来控制数据选择器进行不同的移位、补位和补数据位操作;当控制模块FSM处于接收状态时,把UART接收的数据进行shift向左移位操作;接收的数据分为三种情况:
当接收到512位时选择directive为000直接输出;
当接收的数据对512取余小于448位时,进行fill_0移位,补位,补数据位操作处理;计数器count值为接收的数据位大小,用来控制移位、补位、补数据位的多少;经fii_0进行如下处理处理:(1)将md5_reg中的所有有效数据左移置md5_reg的最高位,留下低位空余;(2)将低位空余部分最高位置1;(3)以二进制的MD5待加密数据长度count值填充md5_reg的低64位后变成512位,由directive为001选择输出;
当接收的数据对512取余大于等于448时,由于要补位成两个512位,进行fill_1操作和fill_2操作处理,其中fill_1进行移位和补位操作:(1)将md5_reg中所有有效数据左移置md5_reg最高位,留下低位空余;(2)将低位空余部分最高位置1,使其满足512位,经directive为010时输出;而fill_2进行补数据位操作,将二进制的MD5待加密数据长度count值填充一个全零md5_reg的低64位补出一个512位的数据,经directive为011时输出;
FSM有限状态机控制模块,用来控制各个模块之间的协同工作,其工作过程如下:在初始时,状态机工作在idle状态,等到上位机UART发送串行数据,当接收到第一个字节数据后,rx_done_tick为1,FSM通过directive信号控制完成移位操作,并且立即进入receive状态;在receive状态中,系统将一直接收数据,数据的多少由count计数器计算,每输入一个字节,计数器的值加8,count为明文长度计数器(64位)用来计算并且保存原始明文长度,其值可以用来补数据位操作;当count等于511时,既有512位数据完成移位,FSM进入transmit状态,将en和clear置1,从而控制md5_buffer接收一次数据,并且flag表示不为空,延迟模块进行清零操作;FSM在transmit状态后将立即返回receive状态;若在数据接收过程中,上位机长时间未发送数据,此时延时计数器的max_tick为1,如果count值大于等于448,FSM由receive状态进入process_1状态,且directive为010来控制process完成数据操作;接着进入process_2状态,directive为011来控制process进行不同的补位操作;如果count值小于448时,FSM由receive进入process_0状态,directive为001来控制process完成移位,补位和补数据位操作,最终FSM进入done状态,使en和clear为1,控制md5_buffer存储处理好的512位数据,通过clear信号将延时计数器清零。
5.根据权利要求1、2、3或4所述的一种基于FPGA和MD5加密的串行通信系统,其特征在于,所述MD5加密运算模块采用自底向上的设计方法,共分为八个模块:FSM_MD5有限状态机控制模块、两个存储模块、两个译码器模块、数据选择器模块、运算模块和输出模块;
有限状态机模块FSM_MD5用于控制其它模块的状态,其控制过程为:在初始时,状态机工作在idle状态,当start与inread有效时,内存ROM0模块的使能信号有效,sel0为00值,进入initial状态;计数器开始计数,控制ROM0模块中的数据输出,当计数器计数到3时,计数器重新清零;内存ROM1的使能信号有效,sel0变为01值,sel1为11值,有限状态机进入done状态,计数器开始计数,在计数器到63之前,计数器的每一个状态控制内存ROM1的数据输出;sel1变化为01值,当计数器为63时,完成这次操作,内存ROM1模块的使能信号变成无效,sel0由01态变为11值,sel1由01值变为00值;执行完这些操作,再判断inread是否有效,如果有效,sel1由00值变成11值,状态机回到done状态,然后循环执行,否则,状态机进入到idle状态,等待满足条件再执行。
6.根据权利要求5所述的一种基于FPGA和MD5加密的串行通信系统,其特征在于,两个存储模块由ROM0模块和ROM1模块组成,其中ROM0用来存储初始变量A/B/C/D,ROM1用来存储64个Ti[31:0]值的查找表;两个译码器模块由译码器TRANS0和译码器TRANS1构成,初始变量A/B/C/D是MD5定义的初始值;
存储模块ROM0大小为数据宽度32、地址宽度为4,存储模块ROM1大小为数据宽度32、地址宽度64;ROM0和ROM1存储器使用内部ROM的IP核来实现;TRANS0、TRANS1分别为64的4位宽译码器和64的8位宽译码器组成;其中TRANS0的输出来控制变量512位数据的输入,TRANS1输出来控制数据的移位数S[7:0]的值。
7.根据权利要求6所述的一种基于FPGA和MD5加密的串行通信系统,其特征在于,
数据选择器模块Xigen为一个16路数据选择器,输入I为四位宽的数,X为要处理的512位数,四轮循环,每轮都依次输出32位宽的数。
8.根据权利要求7所述的一种基于FPGA和MD5加密的串行通信系统,其特征在于,FUNCTION运算模块用来实现数据的运算功能,运算步骤根据MD5算法的定义而设置;对于每一步计算器其中X[31:0]的值和Ti[31:0]的值都是不同的,而“<<”代表循环左移移位运算,移位的数值每一步都由S[7:0]决定,经过一步运算,输出ai/bi/ci/di四个32位值,作为下一步的值运算;F/G/H/I为逻辑运算函数,每轮16步使用其中一种函数,其中Ti[31:0]为常数序列,X[31:0]为输入512位的数据分为16个32位宽的数组。
9.根据权利要求8所述的一种基于FPGA和MD5加密的串行通信系统,其特征在于,
数据输出模块MD5_OUT由有限状态机输出的sel0和sel1来控制运算状态,输入数据32位的A/B/C/D为初始值,在sel0信号控制下,经过四个移位寄存器后,依次存入寄存器中;然后在sel1信号控制下,A/B/C/D的值经一个时钟周期传递到下一个四个并行寄存器中;这四个初值,经FUNCTION模块的一步运算,其结果输出位32位的ai/bi/ci/di经过sel1控制信号,存入四个并行寄存器中;然后依次类推第一步的过程,进行第二步,第三步,直到六十四步运算结束,输出的值再加上初值,作为最终结果A/B/C/D的输出,输出是一个512位的模块的MD5加密结果,如果有多个这样的512位数据,依次重复上述运算过程,求得最终的128位输出加密结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811213113.4A CN109190413B (zh) | 2018-10-17 | 2018-10-17 | 一种基于fpga和md5加密的串行通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811213113.4A CN109190413B (zh) | 2018-10-17 | 2018-10-17 | 一种基于fpga和md5加密的串行通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109190413A true CN109190413A (zh) | 2019-01-11 |
CN109190413B CN109190413B (zh) | 2022-07-19 |
Family
ID=64945448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811213113.4A Active CN109190413B (zh) | 2018-10-17 | 2018-10-17 | 一种基于fpga和md5加密的串行通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109190413B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124969A (zh) * | 2019-12-26 | 2020-05-08 | 山西银河电子设备厂 | 一种基于fpga的改进型串口转换模块 |
CN113157623A (zh) * | 2021-04-02 | 2021-07-23 | 中国工程物理研究院总体工程研究所 | 一种高速自定义通信方法 |
CN113517976A (zh) * | 2021-09-14 | 2021-10-19 | 佛山冠湾智能科技有限公司 | 一种基于fpga的比特流快速采样装置及方法 |
CN115834304A (zh) * | 2023-02-14 | 2023-03-21 | 苏州萨沙迈半导体有限公司 | Lin协议波特率检测装置及芯片设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714917A (zh) * | 2009-08-24 | 2010-05-26 | 黑龙江大学 | 一种基于混沌密钥的数据加密传输卡 |
CN102156434A (zh) * | 2011-04-20 | 2011-08-17 | 上海交通大学 | 基于fpga实现的超高吞吐量md5暴力破解装置 |
CN103973533A (zh) * | 2014-05-22 | 2014-08-06 | 哈尔滨理工大学 | 隔离型rs485/rs422中继隔离器的波特率识别方法及数据流控制方法 |
CN103530963B (zh) * | 2013-09-25 | 2015-02-11 | 江苏智联天地科技有限公司 | 智能触摸屏pos机密码安全保护装置及方法 |
-
2018
- 2018-10-17 CN CN201811213113.4A patent/CN109190413B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714917A (zh) * | 2009-08-24 | 2010-05-26 | 黑龙江大学 | 一种基于混沌密钥的数据加密传输卡 |
CN102156434A (zh) * | 2011-04-20 | 2011-08-17 | 上海交通大学 | 基于fpga实现的超高吞吐量md5暴力破解装置 |
CN103530963B (zh) * | 2013-09-25 | 2015-02-11 | 江苏智联天地科技有限公司 | 智能触摸屏pos机密码安全保护装置及方法 |
CN103973533A (zh) * | 2014-05-22 | 2014-08-06 | 哈尔滨理工大学 | 隔离型rs485/rs422中继隔离器的波特率识别方法及数据流控制方法 |
Non-Patent Citations (1)
Title |
---|
王波涛等: "基于FPGA的MD5算法设计与实现", 《通信技术》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124969A (zh) * | 2019-12-26 | 2020-05-08 | 山西银河电子设备厂 | 一种基于fpga的改进型串口转换模块 |
CN111124969B (zh) * | 2019-12-26 | 2023-08-04 | 山西银河电子设备厂 | 一种基于fpga的改进型串口转换模块 |
CN113157623A (zh) * | 2021-04-02 | 2021-07-23 | 中国工程物理研究院总体工程研究所 | 一种高速自定义通信方法 |
CN113517976A (zh) * | 2021-09-14 | 2021-10-19 | 佛山冠湾智能科技有限公司 | 一种基于fpga的比特流快速采样装置及方法 |
CN115834304A (zh) * | 2023-02-14 | 2023-03-21 | 苏州萨沙迈半导体有限公司 | Lin协议波特率检测装置及芯片设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109190413B (zh) | 2022-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109190413A (zh) | 一种基于fpga和md5加密的串行通信系统 | |
Gaj et al. | Fair and comprehensive methodology for comparing hardware performance of fourteen round two SHA-3 candidates using FPGAs | |
CN100470464C (zh) | 基于改进的蒙哥马利算法的模乘器 | |
CN105912501B (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 | |
WO2020163308A1 (en) | Systems and methods for artificial intelligence hardware processing | |
CN110321162A (zh) | 基于粗粒度可重构计算单元的present加密算法实现方法及系统 | |
CN105335331A (zh) | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 | |
Rote et al. | High performance SHA-2 core using the round pipelined technique | |
CN108959168B (zh) | 基于片上内存的sha512全流水电路及其实现方法 | |
CN104679474A (zh) | 有限域gf(2^227)上的乘法器及模乘算法 | |
CN114297571A (zh) | 一种适用于格密码算法的多项式乘法硬件实现系统 | |
CN113078996A (zh) | Sm4密码算法的fpga优化实现方法、系统及应用 | |
Gonzalez et al. | Ciphering algorithms in MicroBlaze-based embedded systems | |
Kamadi et al. | Implementation of TRNG with SHA-3 for hardware security | |
CN107092462B (zh) | 一种基于fpga的64位异步乘法器 | |
Sun et al. | Design and optimized implementation of the SHA-2 (256, 384, 512) hash algorithms | |
CN113342310A (zh) | 一种应用于格密码的串行参数可配快速数论变换硬件加速器 | |
Zhao et al. | An efficient ASIC implementation of QARMA lightweight algorithm | |
CN109271137A (zh) | 一种基于公钥加密算法的模乘装置及协处理器 | |
Lan | The AES encryption and decryption realization based on FPGA | |
Li et al. | A high speed NTT accelerator for lattice-based cryptography | |
Wang et al. | Ultra high throughput implementations for MD5 hash algorithm on FPGA | |
Kiningham et al. | Cipher Implementation for CESEL | |
Liang et al. | A cryptographic algorithm based on Linear Feedback Shift Register | |
CN109672524A (zh) | 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210907 Address after: 201 Fenghua Road, Ningbo City, Zhejiang Province Applicant after: Ningbo University of Technology Address before: 150080 No. 52, Xuefu Road, Nangang District, Heilongjiang, Harbin Applicant before: HARBIN University OF SCIENCE AND TECHNOLOGY |
|
GR01 | Patent grant | ||
GR01 | Patent grant |