一种基于FPGA的Keccak算法故障检测系统技术方案

技术编号:20566508 阅读:24 留言:0更新日期:2019-03-14 09:21
本发明专利技术公开了一种基于FPGA的Keccak算法故障检测系统,包括填充和冗余码生成模块、Keccak函数运算模块和冗余码校验模块,填充和冗余码生成模块将原数据填充到指定比特数形成原码,存于寄存器中并生产对应比特数的时间冗余码和动态冗余校验码X,再由Keccak函数运算模块中三级流水线同时运算该三个编码生成其对应的Keccak值,最后由冗余码校验模块校验原码、时间冗余码和动态冗余校验码X的Keccak值,输出校验结果。所述系统只在极少量降低吞吐率和增加资源使用率的情况下实现故障检测方案,并且双冗余码的方案保证了既能检测临时性故障也可以检测永久性故障还能够抵御大多数硬件木马的攻击。

A Fault Detection System of Keccak Algorithms Based on FPGA

The invention discloses a fault detection system of Keccak algorithm based on FPGA, which includes filling and redundancy code generation module, Keccak function operation module and redundancy code verification module. Filling and redundancy code generation module fills the original data into a specified number of bits to form the original code, stores the original data in a register and produces the corresponding number of bits of time redundancy codes and dynamic redundancy check codes X, which are then processed by Keccak function. In the operation module, the three codes are simultaneously processed by three pipelines to generate their corresponding Keccak values. Finally, the Keccak values of the original code, the time redundancy code and the dynamic redundancy check code X are checked by the redundancy code check module, and the check results are output. The system only achieves fault detection scheme with very little throughput reduction and resource utilization increase, and the scheme of double redundant codes ensures that it can detect both temporary and permanent faults and resist most hardware Trojan horses.

【技术实现步骤摘要】
一种基于FPGA的Keccak算法故障检测系统
本专利技术涉及加密算法领域,具体涉及一种基于FPGA的Keccak算法故障检测系统。
技术介绍
Hash算法广泛应用于数字签名、消息认证、密码协议等方面,在信息安全领域中扮演着极其重要的角色。自2004年我国学者王小云教授提出的模差分和消息修改的攻击方法以来,采用Merkle-Damgard结构的一系列Hash函数MD5、SHA-1、SHA-2被暴露出了严重的安全问题。因此,在2007年NIST(美国国家标准与技术研究所)发起了在全球范围内征集新Hash函数标准SHA-3的计划,最终于2015年正式采用Keccak算法为新的安全Hash函数标准SHA-3。Keccak算法的映射分布均匀性和Sponge迭代结构,使得电路微小的故障都会导致输出的Keccak值发生根本性的变化。而Keccak算法的抗原像攻击性(单向性)导致无法只通过原码的Keccak值来确认电路是否正常工作。因此在Keccak算法电路中加入故障检测系统就非常必要。目前业内对与Keccak算法的故障检测方案,无论软硬件都是基于传统的时间冗余方案或结构冗余方案。前者会导致Keccak算法的吞吐率减半并且无法检测永久性故障,后者会导致消耗两倍的硬件资源,且两种方案均无法检测硬件木马攻击导致的硬件故障。
技术实现思路
本专利技术的目的是针对现有技术的不足,提供了一种基于FPGA的Keccak算法故障检测系统,使得在只降低极少吞吐率和增加极少电路资源的前提下,既可以检测临时性故障又可以检测永久性故障还可以抵御大部分的硬件木马攻击。本专利技术的目的可以通过如下技术方案实现:一种基于FPGA的Keccak算法故障检测系统,包括填充和冗余码生成模块、Keccak函数运算模块和冗余码校验模块,填充和冗余码生成模块将原数据填充到指定比特数形成原码,存于寄存器中并生产对应比特数的时间冗余码和动态冗余校验码X,再由Keccak函数运算模块中三级流水线同时运算该三个编码生成其对应的Keccak值,最后由冗余码校验模块校验原码、时间冗余码和动态冗余校验码X的Keccak值,输出校验结果。进一步地,所述填充和冗余码生成模块按照Keccak算法标准将原数据填充到指定比特数形成原码,在填充后一个周期产生时间冗余码,再下一个周期产生动态冗余校验码X,并于这三个周期分别将这三个编码传送给Keccak函数运算模块。进一步地,所述时间冗余码是与原码相同的编码,用于检测暂时性故障。进一步地,动态冗余校验码成对存储于FPGA中,由动态冗余校验码X和动态冗余校验码Y组成,分别存储于填充和冗余码生成模块以及冗余码校验模块,动态冗余校验码Y是已知正确的由动态冗余校验码X经Keccak算法运算的Keccak值;动态冗余校验码能够检测永久性故障,且随时间增加其故障覆盖率动态增加,还能够检测大部分硬件木马导致的故障。进一步地,所述Keccak函数运算模块按照Keccak算法标准构建RTL电路,并由三级流水线组成,将原本Keccak的Sponge迭代结构拆分重组后在其中插入两级流水线,与原本的一级寄存器共同形成三级流水线。进一步地,所述冗余码校验模块先将上述原码的Keccak值与上述时间冗余码的Keccak值比较,不匹配则输出暂时性故障,再将上述动态冗余校验码X的Keccak值与上述动态冗余校验码Y比较,不匹配则输出永久性故障,如果无故障,则输出原码的Keccak值。进一步地,所述系统的运作过程如下:S1、将原数据在填充和冗余码生成模块填充到指定比特数形成原码,并于到填充完成的一个周期将数据传输给Keccak函数运算模块,在下两个周期分别生成对应比特数的时间冗余码和动态冗余校验码X,并于这两个周期分别将时间冗余码和动态冗余校验码X传输给Keccak函数运算模块;S21、Keccak函数运算模块将连续三个周期分别传输来的原码、时间冗余码和动态冗余效验码X经过第一级运算存储到流水线1中,然后分别经过第二级运算存储到流水线2中,再经过第三级运算存储到流水线3中,最后分别通过流水线3于三个周期进入下一轮迭代;S22、数据在Keccak函数运算模块经过24轮Keccak轮函数算法迭代后,即完成Keccak轮函数运算生成相应的Keccak值,再将数据传输给冗余码校验模块;S3、冗余码校验模块接收到数据后,第一个周期将原码的Keccak值保存;第二个周期将原码的Keccak值与时间冗余码的Keccak值比较,如果不同则输出临时性故障;第三个周期将动态冗余效验码X的Keccak值与动态冗余效验码Y比较,如果不同则输出永久性故障,如果均无故障则输出原码的Keccak值。本专利技术与现有技术相比,具有如下优点和有益效果:本专利技术提供的基于FPGA的Keccak算法故障检测系统,只在极少量降低吞吐率和增加资源使用率的情况下实现故障检测方案,并且双冗余码的方案保证了既能检测临时性故障也可以检测永久性故障还能够抵御大多数硬件木马的攻击。附图说明图1为本专利技术实施例基于FPGA的Keccak算法故障检测系统的数据流程示意图。图2(a)为无故障检测的Keccak模块所消耗的时间成本示意图,图2(b)为无流水线结构的Keccak故障检测方案所消耗的时间成本示意图,图2(c)为流水线结构的Keccak故障检测方案所消耗的时间成本示意图。具体实施方式下面结合实施例及附图对本专利技术作进一步详细的描述,但本专利技术的实施方式不限于此。实施例:本实施例提供了一种基于FPGA的Keccak算法故障检测系统,包括填充和冗余码生成模块、Keccak函数运算模块和冗余码校验模块,填充和冗余码生成模块将原数据填充到指定比特数形成原码,存于寄存器中并生产对应比特数的时间冗余码和动态冗余校验码X,再由Keccak函数运算模块中三级流水线同时运算该三个编码生成其对应的Keccak值,最后由冗余码校验模块校验原码、时间冗余码和动态冗余校验码X的Keccak值,输出校验结果;所述填充和冗余码生成模块按照Keccak算法标准将原数据填充到指定比特数形成原码,在填充后一个周期生产时间冗余码,再下一个周期产生动态冗余校验码X,并于这三个周期分别将这三个编码传送给Keccak函数运算模块;填充和冗余码生成模块以及冗余码校验模块分别生成动态冗余校验码X和动态冗余校验码Y,用于解决传统时间冗余方案无法检测永久性故障和硬件木马故障的问题。动态冗余校验码是存储在电路中、可以动态存取的编码对,每对动态冗余效验码是由动态冗余校验码X和动态冗余校验码Y组成的,动态冗余校验码Y是已知正确的由动态冗余校验码X经Keccak算法运算的Keccak值。当动态冗余校验码X经过被测Keccak运算电路之后,将计算后的动态冗余校验码X的Keccak值与冗余码校验模块的动态冗余校验码Y比较,如果相同则表明没有永久性故障和木马攻击故障。且由于其为动态码,校验码组越多则故障覆盖率越高。所述冗余码校验模块先将上述原码的Keccak值与上述时间冗余码的Keccak值比较,不同则输出暂时性故障,再将上述动态冗余校验码X的Keccak值与上述动态冗余校验码Y比较,不匹配则输出永久性故障,如果无故障,则输出原码的Keccak值。具体地,所述Keccak函数运算模块按照Kecca本文档来自技高网...

【技术保护点】
1.一种基于FPGA的Keccak算法故障检测系统,其特征在于,所述系统包括填充和冗余码生成模块、Keccak函数运算模块和冗余码校验模块,填充和冗余码生成模块将原数据填充到指定比特数形成原码,存于寄存器中并生产对应比特数的时间冗余码和动态冗余校验码X,再由Keccak函数运算模块中三级流水线同时运算该三个编码生成其对应的Keccak值,最后由冗余码校验模块校验原码、时间冗余码和动态冗余校验码X的Keccak值,输出校验结果。

【技术特征摘要】
1.一种基于FPGA的Keccak算法故障检测系统,其特征在于,所述系统包括填充和冗余码生成模块、Keccak函数运算模块和冗余码校验模块,填充和冗余码生成模块将原数据填充到指定比特数形成原码,存于寄存器中并生产对应比特数的时间冗余码和动态冗余校验码X,再由Keccak函数运算模块中三级流水线同时运算该三个编码生成其对应的Keccak值,最后由冗余码校验模块校验原码、时间冗余码和动态冗余校验码X的Keccak值,输出校验结果。2.根据权利要求1所述的一种基于FPGA的Keccak算法故障检测系统,其特征在于:所述填充和冗余码生成模块按照Keccak算法标准将原数据填充到指定比特数形成原码,在填充后一个周期产生时间冗余码,再下一个周期产生动态冗余校验码X,并于这三个周期分别将这三个编码传送给Keccak函数运算模块。3.根据权利要求2所述的一种基于FPGA的Keccak算法故障检测系统,其特征在于:所述时间冗余码是与原码相同的编码,用于检测暂时性故障。4.根据权利要求2所述的一种基于FPGA的Keccak算法故障检测系统,其特征在于:动态冗余校验码成对存储于FPGA中,由动态冗余校验码X和动态冗余校验码Y组成,分别存储于填充和冗余码生成模块以及冗余码校验模块,动态冗余校验码Y是已知正确的由动态冗余校验码X经Keccak算法运算的Keccak值;动态冗余校验码能够检测永久性故障,且随时间增加其故障覆盖率动态增加,还能够检测大部分硬件木马导致的故障。5.根据权利要求1所述的一种基于FPGA的Keccak算法故障检测系统,其特征在于:所述Keccak函数运算模块按照Keccak算法标准构建RTL电路,并由三级流水线组成,将原本Keccak的Sponge迭代结...

【专利技术属性】
技术研发人员:王子甲李国元贺小勇
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1