《一种基于FPGA实现的GOST加解密设备及其方法.pdf》由会员分享,可在线阅读,更多相关《一种基于FPGA实现的GOST加解密设备及其方法.pdf(13页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201410807763.7(22)申请日 2014.12.23H04L 9/06(2006.01)(71)申请人 天津光电通信技术有限公司地址 300211 天津市河西区泰山路 6 号(72)发明人 常涛 谢建庭 苗尧飞 王克张宇 莫晓婷(74)专利代理机构 天津中环专利商标代理有限公司 12105代理人 王凤英(54) 发明名称一种基于 FPGA 实现的 GOST 加解密设备及其方法(57) 摘要本发明涉及一种基于 FPGA 实现的 GOST 加解密设备及其方法。设备包括电源电路、FPGA 芯片、时钟电路、片外程序存储电路、JTAG 。
2、程序下载调试电路、EEPROM 存储器电路、第一 UART 串口电路和第二UART串口电路 ;FPGA芯片内部包括PLL时钟管理模块、自环检测模块、数据成帧解帧模块、UART 串口协议模块、数据帧结构设置模块、GOST加密模块、GOST 解密模块、EEPROM 芯片控制模块以及密钥和 S 盒处理模块。利用 FPGA 芯片实现GOST加解密设备以及加解密方法 ;利用UART串口进行外部明密文数据通信和密钥设置,从而使数据加解密过程具有灵活性、实用性、安全性以及处理速度快等特点。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书5页 附图5页(10。
3、)申请公布号 CN 104486069 A(43)申请公布日 2015.04.01CN 104486069 A1/2页21.一种基于FPGA实现的GOST加解密设备,其特征在于,包括电源电路、FPGA芯片、时钟电路、片外程序存储电路、JTAG程序下载调试电路、EEPROM存储器电路、第一UART串口电路和第二UART串口电路;所述FPGA芯片分别与片外程序存储电路、JTAG程序下载调试电路、EEPROM存储器电路、第一UART串口电路和第二UART串口电路双向连接,时钟电路与FPGA芯片连接,第一UART串口电路和第二UART串口电路分别与外部设备双向连接; FPGA芯片、时钟电路、片外程序存。
4、储电路、JTAG程序下载调试电路、EEPROM 存储器电路、第一UART串口电路和第二UART串口电路分别与电源电路相连接;所述的FPGA芯片内部包括PLL时钟管理模块、自环检测模块、数据成帧解帧模块、UART串口协议模块、数据帧结构设置模块、GOST加密模块、GOST解密模块、EEPROM芯片控制模块以及密钥和S盒处理模块 ;其中数据成帧解帧模块分别与自环检测模块、UART串口协议模块、GOST加密模块、GOST解密模块及数据帧结构设置模块相连接,UART串口协议模块分别与数据帧结构设置模块及密钥和S盒处理模块相连接,密钥和S盒处理模块分别与EEPROM芯片控制模块及GOST加密模块相连接,。
5、EEPROM芯片控制模块与数据帧结构设置模块相连接,GOST加密模块与GOST解密模块相连接。2.根据权利要求1所述的一种基于FPGA实现的GOST加解密设备,其特征在于,所述的自环检测模块包括明文数据生成模块、数据比较模块和结果输出指示模块,明文数据生成模块和数据比较模块分别与GOST加密模块及GOST解密模块相连接,GOST加密模块与GOST解密模块相连接。3.根据权利要求2所述的一种基于FPGA实现的GOST加解密设备,其特征在于,所述的自环检测模块的检测程序流程是:首先由明文数据生成模块向GOST加密模块发送一组固定内容的64位明文,GOST加密模块将明文转换成密文后送给GOST解密模。
6、块,数据比较模块将GOST解密模块输出的明文和先前发送的明文进行比对,若完全一致则输出自检正确指示,同时结果输出指示模块控制设备上相应的结果指示灯点亮,若比对不一致则输出故障信号,点亮相应的故障指示灯。4.一种采用如权利要求1所述的基于FPGA实现的GOST加解密设备的方法,其特征在于,采用GOST加解密算法实现数据的加解密,其步骤如下:(A).具有特定数据帧结构的明文信息通过第一UART串口由外部设备发送给GOST加解密模块;(B).FPGA芯片通过UART串口协议模块,将接收到的明文数据提取有效信息,并重新进行64比特分组;(C).对每一包64比特分组数据进行GOST加密过程,形成的密文重。
7、新组合成帧后通过第一UART串口发回给外部设备;(D).GOST加解密模块通过第一UART串口接收外部设备发来的密文,FPGA通过GOST解密模块将密文转换成明文,并通过第一UART串口发回给外部设备;(E).通过第二UART串口,按照约定好的数据格式进行加解密设备的密钥和S盒的设置和读取,以及对特定的数据帧结构进行设置。5.根据权利要求4所述的一种基于FPGA实现的GOST加解密方法,其特征在于,采取每轮迭代的运算方法,在所述的步骤(C)中,加密时,首先把64比特的一组明文输入分成左半部分L和右半部分R,第i轮迭代的子密钥为Ki,GOST加密的第i轮运算为:权 利 要 求 书CN 10448。
8、6069 A2/2页3Li=Ri-1Ri=Li-1f(Ri-1,Ki) -(1)(1)式中的为二进制逻辑运算异或,f为运算函数,首先,将右半部分R与第i轮的子密钥进行模232加,得到32位数据结果,分成8个4位分组,每个分组被作为不同的S盒的输入,在GOST加密中使用了8个不同的S盒,第一个4位进入第一个S盒,第二个4位进入第二个S盒,以此类推进行置换;8个S盒的输出重组为32位字,然后整个字循环左移11位,最后将移位后的32位结果与左半部分异或变为新的右半部分,原右半部分变为新的左半部分,至此一轮迭代运算完成,将此操作重复进行32次后得到加密结果。权 利 要 求 书CN 104486069 。
9、A1/5页4一种基于 FPGA 实现的 GOST 加解密设备及其方法技术领域0001 本发明涉及数字无线通信技术,特别涉及一种基于FPGA实现的GOST加解密设备及其方法。背景技术0002 数字无线通信系统对数据进行加解密一般使用专用的加解密芯片、使用基于MCU的C语言以及使用上位机软件实现加解密方法。该加解密方法从灵活性、实用性、安全性以及处理速度等方面无法满足目前数据通信设备信息加解密的技术要求。0003 目前数据加解密通常采用DES算法或GOST算法来实现。GOST算法是一个64位分组以及256位密钥的分组密码算法,该算法是一个32论简单迭代型的加密算法。而DES算法从密钥产生子密钥的过。
10、程比较复杂。GOST较DES之间有以下几个主要区别:DES有56位密钥,而GOST有256位密钥,若把S盒置换保密的话,GOST将有610位的密钥信息;GOST的S盒大小仅为DES的S盒的1/4 ;DES有16轮迭代,而GOST有32轮迭代。0004 从以上对比可以看出,GOST算法很明显优于DES算法,因此需要设计一种能够实现GOST加解密的设备及其方法,以满足数据通信设备信息加解密的技术要求。发明内容0005 鉴于现有技术存在的问题和缺陷,本发明设计一种基于FPGA实现的GOST加解密设备及其方法。新的设计方案是利用FPGA芯片实现GOST加解密设备以及加解密方法;利用UART串口进行外部。
11、明密文数据通信和密钥设置,从而使数据加解密过程具有灵活性、实用性、安全性以及处理速度快等特点。0006 本发明采取的技术方案是:一种基于FPGA实现的GOST加解密设备,其特征在于,包括电源电路、FPGA芯片、时钟电路、片外程序存储电路、JTAG程序下载调试电路、EEPROM存储器电路、第一UART串口电路和第二UART串口电路;所述FPGA芯片分别与片外程序存储电路、JTAG程序下载调试电路、EEPROM存储器电路、第一UART串口电路和第二UART串口电路双向连接,时钟电路与FPGA芯片连接,第一UART串口电路和第二UART串口电路分别与外部设备双向连接; FPGA芯片、时钟电路、片外程。
12、序存储电路、JTAG程序下载调试电路、EEPROM存储器电路、第一UART串口电路和第二UART串口电路分别与电源电路相连接;本发明所述的FPGA芯片内部包括PLL时钟管理模块、自环检测模块、数据成帧解帧模块、UART串口协议模块、数据帧结构设置模块、GOST加密模块、GOST解密模块、EEPROM芯片控制模块以及密钥和S盒处理模块;其中数据成帧解帧模块分别与自环检测模块、UART串口协议模块、GOST加密模块、GOST解密模块及数据帧结构设置模块相连接,UART串口协议模块分别与数据帧结构设置模块及密钥和S盒处理模块相连接,密钥和S盒处理模块分别与EEPROM芯片控制模块及GOST加密模块相。
13、连接,EEPROM芯片控制模块与数据帧结构设置模块相连接,GOST加密模块与GOST解密模块相连接。0007 本发明所述的一种基于FPGA实现的GOST加解密方法,其特征在于,采用GOST加说 明 书CN 104486069 A2/5页5解密算法实现数据的加解密,其步骤如下:(A).具有特定数据帧结构的明文信息通过第一UART串口由外部设备发送给GOST加解密模块;(B).FPGA芯片通过UART串口协议模块,将接收到的明文数据提取有效信息,并重新进行64比特分组;(C).对每一包64比特分组数据进行GOST加密过程,形成的密文重新组合成帧后通过第一UART串口发回给外部设备;(D).GOST。
14、加解密模块通过第一UART串口接收外部设备发来的密文,FPGA通过GOST解密模块将密文转换成明文,并通过第一UART串口发回给外部设备;(E).通过第二UART串口,按照约定好的数据格式进行加解密设备的密钥和S盒的设置和读取,以及对特定的数据帧结构进行设置。0008 本发明的优点及有益效果是:利用该GOST加解密方法解决通信信息高速加解密过程,不破坏原系统的数据结构,本设备可根据要求灵活更改数据帧结构,以适应不同的通信系统。GOST加解密算法属于分组算法,使用Verilog语言对GOST算法过程进行描述,实现过程仅使用逻辑运算,算法实现结构简单;通过FPGA实现GOST加解密方法具有速度快、。
15、使用广、保密性强等优点。GOST算法实现过程中使用有限状态机编程,密钥和S盒可通过外部设备进行更改,并保存至片外非易失存储器中,该设计可作为一个独立的加解密设备使用。附图说明0009 图1为本发明实现 GOST加解密设备的使用环境框图;图2为本发明实现GOST加解密设备整体功能框图;图3为 FPGA内部功能框图;图4为本发明实现GOST加解密设备的自环检测框图;图5为本发明实现GOST加解密设备的自环检测程序流程图;图6为本发明 GOST算法框图;图7为图6的程序流程图。具体实施方式0010 以下结合附图和实施例对本发明作进一步说明:参照图1,基于FPGA实现的GOST加解密方法用于有线或无线。
16、通信设备中,在某通信设备的发送过程下,先进行信源编码,然后将信源编码后的数字信息进行成帧处理,成帧后的数据通过UART串口发送给加解密设备进行解帧、加密、成帧等过程,保证数据帧结构和数据比特数不被改变,带有原帧结构的密文通过UART串口发送给通信设备的信道编码模块,最后将数据调制发送出去。通信设备的接收过程是发送的逆过程。这里加解密方法最为一个独立的工作单元,可以较为灵活的应用于相关通信设备中。0011 参照图2,本发明的GOST 加解密设备包括电源电路、FPGA芯片、时钟电路、片外程序存储电路、JTAG程序下载调试电路、EEPROM存储器电路、第一UART串口电路和第二UART串口电路;所述。
17、FPGA芯片分别与片外程序存储电路、JTAG程序下载调试电路、EEPROM存储说 明 书CN 104486069 A3/5页6器电路、第一UART串口电路和第二UART串口电路双向连接,时钟电路与FPGA芯片连接,第一UART串口电路和第二UART串口电路分别与外部设备双向连接; FPGA芯片、时钟电路、片外程序存储电路、JTAG程序下载调试电路、EEPROM存储器电路、第一UART串口电路和第二UART串口电路分别与电源电路相连接。0012 图中FPGA芯片是整个电路的核心。时钟电路为FPGA芯片提供工作时钟;电源电路为整个系统提供所需的电源;JTAG程序下载调试电路用于对FPGA芯片进行调。
18、试和程序下载;由于FPGA芯片是基于SRAM工艺的,掉电后程序就会消失,所以需要加入一片外程序存储电路用于永久的保存FPGA芯片的程序;EEPROM存储器电路用于存储加解密算法的密钥和S盒,每次设备上电后,FPGA芯片先将存储在EEPROM中的密钥和S盒读取到FPGA芯片内部用于加解密运算,对于密钥和S盒用户可以自行设置,只需通过另一路UART串口向加解密设备发送约定好的数据格式,加解密设备根据特定的数据格式提取出密钥和S盒,用户也可以从该串口读出先前使用的密钥和S盒;UART串口电路用于实现标准的串口电气信号。0013 参照图3,本发明所述的FPGA芯片内部包括PLL时钟管理模块、自环检测模。
19、块、数据成帧解帧模块、UART串口协议模块、数据帧结构设置模块、GOST加密模块、GOST解密模块、EEPROM芯片控制模块以及密钥和S盒处理模块;其中数据成帧解帧模块分别与自环检测模块、UART串口协议模块、GOST加密模块、GOST解密模块及数据帧结构设置模块相连接,UART串口协议模块分别与数据帧结构设置模块及密钥和S盒处理模块相连接,密钥和S盒处理模块分别与EEPROM芯片控制模块及GOST加密模块相连接,EEPROM芯片控制模块与数据帧结构设置模块相连接,GOST加密模块与GOST解密模块相连接。0014 本发明实现GOST加解密设备的FPGA芯片是该设备的核心单元,其主要实现UAR。
20、T串口通信协议、GOST加解密算法、自环检测等。PLL时钟管理模块使用FPGA芯片IP核设计,具有倍频、分频、调相等功能,可以根据需要得到系统所需的工作频率,设备可根据通信系统的实际技术要求更改自身的工作频率以适应需要;UART串口协议模块用于实现UART串口通信,由于FPGA芯片本身不带有UART串口硬件,所以需要编写该模块的功能代码;数据成帧解帧模块用于将通过串口接收到的带有帧格式的明文解帧,以提取出有效的待加密数据,并将明文以64比特为一组进行重新分组,以便进行下一步的加密运算,并将加密后的数据按照之前的帧格式重新成帧,这样就不会影响原通信系统的正常工作;GOST加密模块和解密模块用于实。
21、现GOST加解密算法,输入64位明文或密文,根据已设定好的密钥和S盒进行加解密运算;EEPROM芯片控制模块用于FPGA对其进行读写操作;密钥和S盒处理模块和数据帧结构设置模块用于设备上电后FPGA从EEPROM芯片中读取密钥、S盒以及数据帧结构等重要信息,并可通过UART串口对EEPROM芯片内容进行读写操作;自环检测模块用于实现设备自身的环路检查,并将检查结果(正常或故障)通过指示灯显示。FPGA内部功能模块的核心是GOST加解密模块。0015 参照图4,本发明实现GOST加解密设备具有自检功能,以免由于设备自身故障影响整个通信系统正常工作。自环检测模块包括明文数据生成模块、数据比较模块和。
22、结果输出指示模块,明文数据生成模块和数据比较模块分别与GOST加密模块及GOST解密模块相连接,GOST加密模块与GOST解密模块相连接。0016 参照图5,本发明实现的GOST加解密设备的自环检测模块检测程序流程是:首先说 明 书CN 104486069 A4/5页7由明文数据生成模块向GOST加密模块发送一组固定内容的64位明文,GOST加密模块将明文转换成密文后送给GOST解密模块,数据比较模块将GOST解密模块输出的明文和先前发送的明文进行比对,若完全一致则输出自检正确指示,同时结果输出指示模块控制设备上相应的结果指示灯点亮,若比对不一致则输出故障信号,点亮相应的故障指示灯。0017 。
23、参照图6,GOST算法框图给出了GOST算法每轮迭代的运算方法,采取每轮迭代的运算方法,在GOST加解密算法步骤(C)中,加密时,首先把64比特的一组明文输入分成左半部分L和右半部分R,第i轮迭代的子密钥为Ki,GOST加密的第i轮运算为:Li=Ri-1Ri=Li-1f(Ri-1,Ki) -(1)(1)式中的为二进制逻辑运算异或,f为运算函数,首先,将右半部分R与第i轮的子密钥进行模232加,得到32位数据结果,分成8个4位分组,每个分组被作为不同的S盒的输入,在GOST加密中使用了8个不同的S盒,第一个4位进入第一个S盒,第二个4位进入第二个S盒,以此类推进行置换;例如 盒可能为:7,10,。
24、2,4,15,9,0,3,6,12,5,13,1,8,11,在这种情况下,如果S盒的输入若为0,则输出为7;若输入为1,则输出为10,等等。所有8个S盒都不同,这些被认为是附加的密钥。8个S盒的输出重组为32位字,然后整个字循环左移11位,最后将移位后的32位结果与左半部分异或变为新的右半部分,原右半部分变为新的左半部分,至此一轮迭代运算完成,将此操作重复进行32次后得到加密结果。0018 参照表1,表1列出了GOST加密轮数与子密钥关系。子密钥的产生过程是将256位密钥分为8个32位分组:K1、K2、K8。每一轮使用不同子密钥,解密过程除了密钥Ki逆序外与加密过程相同。0019 表1 GOS。
25、T 不同轮中使用的子密钥参照表2,表2列出了GOST加密一个S盒列表,分为8组,每组由16个4比特数构成,用十进制表示范围是0到15,并且同一组中的16个数据不能相同。S盒是GOST加密算法的核心所在,该加密算法的安全性主要由S盒来决定,所以S盒的设计是关键。0020 表2 GOST 的S盒说 明 书CN 104486069 A5/5页8参照图7,GOST加解密模块采用有限状态机实现,按照图6所示的GOST算法框图设计出程序工作流程:首先将64位明文数据保存到该模块的内部寄存器中,将其分成左半部分Li和右半部分Ri各32位(左半部分对应64位明文的高32位,右半部分对应64位明文的低32位),按照表1根据当前迭代的轮数选择一组子密钥,这里的子密钥是将256位密钥顺序分成8组,每组32位;将子密钥与右半部分Ri进行模32的加法运算,然后根据表2的S盒进行替代,替代后的32位数据循环左移11位,再与左半部份Li进行按位异或运算,得到新的右半部分Ri+1,而本轮迭代开始的右半部分Ri直接成为新的左半部分Li+1,这样一轮迭代运算完成,将Li+1和Ri+1用于下一轮迭代,这种迭代重复32次后输出密文结果。说 明 书CN 104486069 A1/5页9图1图2说 明 书 附 图CN 104486069 A2/5页10图3图4说 明 书 附 图CN 104486069 A。