一种fpga加密数据流的解密电路及解密方法

文档序号:7987281阅读:341来源:国知局
一种fpga加密数据流的解密电路及解密方法
【专利摘要】本发明公开了一种FPGA加密数据流的解密电路,包括:数据输入接口、指令解码器、移位寄存器、密钥存储器、密钥界面模块、密钥扩展模块以及解密模块;数据输入接口分别连接指令解码器和解密模块;指令解码器连接移位寄存器和密钥界面模块;密钥界面模块连接密钥存储器和密钥扩展模块;其中,数据输入接口用于输入加密的数据文件或密钥指令,并将加密的数据文件送到解密模块,或将密钥指令送到指令解码器。本发明实施例的FPGA加密数据流的解密电路及方法,有专门的非易失性密钥存储电路用以存储多个密钥,可进行多重加密和损坏加密,不但没有增加解密电路的复杂度和降低解密电路的编程速度,而且增强了加密数据的安全性,使FPGA的解加密更加可靠安全。
【专利说明】—种FPGA加密数据流的解密电路及解密方法
【技术领域】
[0001]本发明涉及数字电路【技术领域】,尤其涉及FPGA数据流的加解密领域,具体的讲是一种FPGA加密数据流的解密电路及解密方法。
【背景技术】
[0002]在当下竞争日益激烈的商业以及军事环境中,设计(IP)安全对于数字设计人员而言是一个至关重要的考虑因素。随着FPGA在更庞大、更关键的系统组件中扮演着愈来愈重要的角色,保护设计免受非法复制、逆向工程以及篡改也愈加显得重要。FPGA通过使用128(或更高数位)高级加密标准(AES)算法来对配置数据流进行解密能力可以消除这些顾虑。
[0003]FPGA器件在操作过程中,将配置数据存储在SRAM配置单元中。由于SRAM存储器的易失性,每次器件上电后,都必须将配置数据加载到SRAM单元中。通常将配置数据从外部存储器源(例如闪存或配置器件)发送至FPGA,但在此过程中,数据有可能会被拦截,不法分子可以使用截获的配置数据来配置另一个全新的FPGA,使其具有同样的功能。
[0004]而使用加密的配置数据流,即使被截获,在不知道密钥的情况下,也无法使用在新的FPGA器件上,因为密钥是被存储在FPGA当中的。
[0005]美国专利US6931543公开了一种数据流解密方法,但是其加密和解密的算法是基于64位的自行开发出来的算法。相对于当今广泛商业应用的AES128,192和256位的算法比较,保密性较低。而且,其密钥存储在FPGA当中的易失性存储器中,为保持器件掉电后密钥不丢失,需采用电池供电,如电池出现问题或供电不稳定,系统将会出现严重问题。
[0006]美国专利US7675313也公开了一种数据流解密的方法,其解密模块的算法采用了AES标准,安全性大大提高;并且其密钥存储在非易失性的存储器中,从而不再需要外加电池。但是,在此方案中采用了 3组存储器,即多数胜出的解码方法。这种增加电路复杂度的作法是为了解决非易失性的存储器良率过低的问题,对解密方法没有任何帮助。并且,此方案只能存放一个密钥,如用户想更换密钥或想利用多个密钥作更进一步的加密则没有可倉泛。

【发明内容】

[0007]本发明提供一种FPGA加密数据流的解密电路及解密方法,以解决现有技术中的解密电路和方法无法在密钥存储器中存放多个密钥,实现多重解密或损坏解密的问题。
[0008]为了达到上述目的,本发明实施例公开了一种FPGA加密数据流的解密电路,所述解密电路包括:数据输入接口、指令解码器、移位寄存器、密钥存储器、密钥界面模块、密钥扩展模块以及解密模块;所述数据输入接口分别连接所述指令解码器、移位寄存器和解密模块;所述指令解码器连接所述移位寄存器和密钥界面模块;所述密钥界面模块连接所述密钥存储器和密钥扩展模块;其中,所述数据输入接口用于输入加密的数据文件或密钥指令,并将所述加密的数据文件送到所述解密模块,或将所述密钥指令送到所述指令解码器;当所述密钥指令为密钥写入指令时,所述数据输入接口接收输入的数据文件为密钥,所述指令解码器根据所述密钥写入指令将所述密钥移入所述移位寄存器,当所述移位寄存器位满后,将所述密钥加载到所述密钥界面模块中的密钥移位寄存器上,并写入到所述密钥存储器进行存储;当所述密钥指令为数据解密指令时,所述数据输入接口接收输入的数据为加密数据流,所述加密数据流经字节整合后进入到所述解密模块;所述指令解码器根据所述数据解密指令从所述密钥存储器中选取相应的AES密钥,送至所述密钥界面模块中的密钥移位寄存器,所述密钥扩展模块对所述密钥移位寄存器中的AES密钥进行扩展操作后送至所述解密模块;所述解密模块结合所述扩展后的AES密钥,对所述加密数据流进行解密。
[0009]为了达到上述目的,本发明实施例还公开了一种FPGA加密数据流的解密方法,包括:输入加密数据流和解密指令;根据所述解密指令从密钥存储器中选取相应的AES密钥;对所述AES密钥进行运算生成最终解密码;将所述最终解密码进行扩展操作;根据所述扩展操作后的解密码,对所述解密数据流进行解密。
[0010]本发明实施例的FPGA加密数据流的解密电路及方法,有专门的非易失性密钥存储电路用以存储多个密钥,可进行多重加密和损坏加密,不但没有增加解密电路的复杂度和降低解密电路的编程速度,而且增强了加密数据的安全性,使FPGA的解加密更加可靠安全。
【专利附图】

【附图说明】
[0011]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0012]图1为本发明实施例的FPGA加密数据流的解密电路的结构示意图;
[0013]图2为本发明实施例的包括密钥移位寄存器以及运算模块的FPGA加密数据流的解密电路的结构示意图;
[0014]图3为利用图2所示实施例进行密钥写入的流程示意图;
[0015]图4为利用图2所示实施例进行数据流解密的流程示意图;
[0016]图5为利用图2所示实施例进行数据流解密的另一个实施例的流程示意图;
[0017]图6为本发明实施例的FPGA加密数据流的解密方法的流程图。
【具体实施方式】
[0018]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0019]图1为本发明实施例的FPGA加密数据流的解密电路的结构示意图。如图所示,所述解密电路包括:数据输入接口 1、指令解码器2、移位寄存器3、密钥存储器4、密钥界面模块5、密钥扩展模块6以及解密模块7。其中,所述数据输入接口 I分别连接所述指令解码器2、移位寄存器3和解密模块7 ;所述指令解码器2连接所述移位寄存器3和密钥界面模块5 ;所述密钥界面模块5连接所述密钥存储器4和密钥扩展模块6。所述数据输入接口 I用于输入加密的数据文件或密钥指令,并将所述加密的数据文件送到所述解密模块7,或将所述密钥指令送到所述指令解码器2。
[0020]在本发明实施例中,所述数据输入接口 I为JTAG接口、专用串行接口或8位CPU接口,加密数据流可以从JTAG接口、专用串行接口或8位CPU接口任一个接口输入。
[0021]在本发明实施例中,密钥存储器4为非易失性密钥存储器,可存储多个密钥,有足够的存储空间及相应的地址解码器。如N个128位的密钥需要有N*128个存储单元,地址解码器负责将密钥存在相应地址的存储单元中。
[0022]在本发明实施例中,密钥可以为128位、192位或256位,即可以是AES中认可的所有长度,对应的移位寄存器3也可以是128位移位寄存器、192位移位寄存器或256位移位
寄存器。
[0023]在图1所示实施例中,如图2所示,密钥界面模块5还包括密钥移位寄存器502以及运算模块501,其中,密钥移位寄存器502用以将密钥从移位寄存器3中移入到密钥存储器4中,或者将密钥从密钥存储器4中移入到密钥扩展模块6中。运算模块501用于在利用本发明的解密电路进行解密时,将从密钥存储器4中取出的密钥进行运算,生成一最终解密码。其中,运算包括加、减、乘、除等数学运算或者逻辑运算等。当然,在本发明实施例中,也可以不应用运算模块501对取出的密钥进行运算,直接将其作为最终的解密码,因此,运算模块501的功能是可以选择使用的。
[0024]本发明实施例的FPGA加密数据流的解密电路的原理是:
[0025]当输入的数据流为非加密数据流时,如图1和2所示,非加密数据流直接送至SRAM数据整合单元中进行数据整合后,送至FPGA的SRAM存储器编程处理。
[0026]当所述密钥指令为密钥写入指令时,如图3所示,所述数据输入接口 I接收输入的数据文件为密钥,所述指令解码器2根据所述密钥写入指令将所述密钥移入所述移位寄存器3,当所述移位寄存器3位满后,将所述密钥加载到所述密钥界面模块5中的密钥移位寄存器502上,然后密钥存储器4经过密钥编程将密钥写入到所述密钥存储器4中。如图3所示,密钥存储器4进行密钥编程的过程为:首先收到编程指令,判断第I位是否为“0”,因为非易失性存储器的初始状态为“0”,所以可以开始看下一位而不需启动写入电路。如果是“1”,则启动写入电路,写入“1”,直到“I”被写入后可开始看下一位。看下一位的动作是由密钥向低一位移位来完成的。地址解码器会自动指向下一个要写的非易失性存储器的位置,此过程在密钥移位128次后结束(以128位移位寄存器为例说明)。如此,可在非易失性密钥存储器4中存储有多个密钥。
[0027]当所述密钥指令为数据解密指令时,如图4所示,所述数据输入接口 I接收输入的数据为加密数据流,所述加密数据流经字节整合后进入到所述解密模块7 ;所述指令解码器2根据所述数据解密指令从所述密钥存储器4中选取相应的AES密钥,送至所述密钥界面模块5中的密钥移位寄存器502,所述密钥扩展模块6对所述密钥移位寄存器502中的AES密钥进行扩展操作后送至所述解密模块7 ;所述解密模块7结合所述扩展后的AES密钥,对所述加密数据流进行解密。以128位密钥为例,解密模块7结合密钥,一次解密128位数据,直到整个加密数据流结束。在解密的同时,解密的数据也被送至一数据移位寄存器,开始对FPGA的SRAM存储器编程。整个解密,编程过程是连续的,不需要再加缓存。除开始的读密钥步骤,编程速度并未因数据加密而变得缓慢。[0028]在本发明一实施例中,当用户存储一个密钥时,自动使用这一个,当用户存储新的密钥时,则自动使用新的密钥。并且,本发明还可以实现:当从密钥存储器4中取出的第一个密钥失效后,所述密钥存储器4自动激活下一个密钥进行解密。因此,本发明实施例的解密电路可以进行损坏加密,如果密钥损坏或者用户想更换密钥都可以实现。
[0029]在另一实施例中,如图5所示,当所述密钥指令为数据解密指令时,所述数据输入接口 I接收输入的数据为加密数据流,加密数据流经字节整合后进入到所述解密模块7 ;所述指令解码器2根据所述数据解密指令从所述密钥存储器4中选取相应的AES密钥,送至所述密钥界面模块5中的密钥移位寄存器502,此时,选取的对应的AES密钥为多个,在将所述多个AES密钥送到密钥扩展模块6前,先利用运算模块501对多个AES密钥进行一系列运算,生成最终的一个密钥送至所述密钥扩展模块6进行扩展操作;所述解密模块7结合所述扩展后的最终的密钥,对所述加密数据流进行解密。
[0030]在此实施例中,从密钥存储器4中选取对应的多个密钥,例如为密钥A和B,在运算单元501中对其进行加法运算后得到最终密钥C=A+B,然后将密钥C送至密钥扩展模块6中进行扩展操作。根据此实施例,即使不法分子同时截获了加密数据流和放置密钥的存储器数据,如果不知道运算法则,也无法对加密数据流进行解密,因此,安全性更强,使FPGA的解加密更加可靠安全。
[0031]图6为本发明实施例的FPGA加密数据流的解密方法的流程图。如图所示,所述解密方法包括:步骤SlOl,输入加密数据流和解密指令;步骤S102,根据所述解密指令从密钥存储器中选取相应的AES密钥;步骤S103,对所述AES密钥进行运算生成最终解密码;步骤S104,将所述最终解密码进行扩展操作;步骤S105,根据所述扩展操作后的解密码,对所述解密数据流进行解密。
[0032]在本实施例中,步骤SlOl中的加密数据流和加密指令是通过数据输入接口输入的,所述数据输入接口可为JTAG接口、专用串行接口或8位CPU接口,加密数据流或加密指令可以从JTAG接口、专用串行接口或8位CPU接口任一个接口输入。
[0033]在本发明实施例中,密钥存储器为非易失性密钥存储器,可存储多个密钥,有足够的存储空间及相应的地址解码器。如N个128位的密钥需要有N*128个存储单元,地址解码器负责将密钥存在相应地址的存储单元中。
[0034]在本发明实施例中,密钥可以为128位、192位或256位,即可以是AES中认可的所
有长度。
[0035]本发明实施例的FPGA加密数据流的解密电路及方法,有专门的非易失性密钥存储电路用以存储多个密钥,可进行多重加密和损坏加密,不但没有增加解密电路的复杂度和降低解密电路的编程速度,而且增强了加密数据的安全性,使FPGA的解加密更加可靠安全。
[0036]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种FPGA加密数据流的解密电路,其特征在于,所述解密电路包括:数据输入接口、指令解码器、移位寄存器、密钥存储器、密钥界面模块、密钥扩展模块以及解密模块; 所述数据输入接口分别连接所述指令解码器、移位寄存器和解密模块;所述指令解码器连接所述移位寄存器和密钥界面模块;所述密钥界面模块连接所述密钥存储器和密钥扩展模块;其中, 所述数据输入接口用于输入加密的数据文件或密钥指令,并将所述加密的数据文件送到所述解密模块,或将所述密钥指令送到所述指令解码器; 当所述密钥指令为密钥写入指令时,所述数据输入接口接收输入的数据文件为密钥,所述指令解码器根据所述密钥写入指令将所述密钥移入所述移位寄存器,当所述移位寄存器位满后,将所述密钥加载到所述密钥界面模块中的密钥移位寄存器上,并写入到所述密钥存储器进行存储; 当所述密钥指令为数据解密指令时,所述数据输入接口接收输入的数据为加密数据流,所述加密数据流经字节整合后进入到所述解密模块;所述指令解码器根据所述数据解密指令从所述密钥存储器中选取相应的AES密钥,送至所述密钥界面模块中的密钥移位寄存器,所述密钥扩展模块对所述密钥移位寄存器中的AES密钥进行扩展操作后送至所述解密模块;所述解密模块结合所述扩展后的AES密钥,对所述加密数据流进行解密。
2.如权利要求1所述的FPGA加密数据流的解密电路,其特征在于,所述密钥界面模块还包括有运算模块,用于对从所述密钥存储器中选取的多个密码进行运算,生成最终的解密码。
3.如权利要求1所述的FPGA加密数据流的解密电路,其特征在于,所述密钥存储器为非易失性密钥存储器。
4.如权利要求1所述的FPGA加密数据流的解密电路,其特征在于,所述移位寄存器为128位、192位或256位。
5.如权利要求1所述的FPGA加密数据流的解密电路,其特征在于,所述数据输入接口为JTAG接口、专用串行接口或8位CPU接口。
6.如权利要求1所述的FPGA加密数据流的解密电路,其特征在于,当利用所述密钥存储器中的密钥进行解密时,当从密钥存储器中取出的第一个密钥失效后,所述密钥存储器自动激活下一个密钥进行解密。
7.—种FPGA加密数据流的解密方法,其特征在于,所述解密方法包括: 输入加密数据流和解密指令; 根据所述解密指令从密钥存储器中选取相应的AES密钥; 对所述AES密钥进行运算生成最终解密码; 将所述最终解密码进行扩展操作; 根据所述扩展操作后的解密码,对所述解密数据流进行解密。
【文档编号】H04L9/06GK103873227SQ201210539362
【公开日】2014年6月18日 申请日期:2012年12月13日 优先权日:2012年12月13日
【发明者】朱璟辉, 高三达, 李灯伟 申请人:艺伦半导体技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1