基于HASH算法的伪随机数发生器的FPGA实现

 2022-08-24 09:08

论文总字数:27104字

摘 要

伪随机数发生器在信息领域极为关键,而发生器系统的安全性,随机性和不可预测性都对整个系统产生着巨大的影响。对于伪随机数发生器的研究是一个至关重要的课题。在本文设计了一种基于Keccak函数的伪随机数发生器,并利用FPGA完成了其硬件实现和性能测试。

论文对Keccak函数和随机数产生器的原理,设计方法和检测内容进行了深入的探究。并设计了一种以Keccak函数作为核心算法的确定性数随机数发生器。首先读入一组具有随机性的熵输入作为随机种子,然后读入附加输入包括时间随机数,个性化字符串进行初始化,产生内部状态后传输至产生模块。在产生模块中,需要根据当前的内部状态产生需要的随机数,并产生新的内部状态。为了保证系统的安全性,当种子超过其设定寿命后,系统则读入新的熵输入并重新进行初始化产生新的内部状态,进行新一轮的产生过程。

为了对系统完成功能检测和性能测试,本文通过Verilog HDL在FPGA上完成了硬件实验。另外通过NIST的检测套件对产生结果进行检测,发现该系统产生的随机数具有良好的随机性。另外该系统因为良好的内部状态产生方式和采用的Keccak函数置乱算法,具有非常显著的抗回溯性和抗预测性,具有良好的安全体现,具有一定的实用价值。

关键字:伪随机数发生器,哈希算法,现场可编程门阵列

Abstract

Pseudo-random number generator plays a very important role in the field of information security. And the randomness and safety of the generator system have a great impact on the whole system. The study of pseudo-random number generator is a crucial issue. In this paper, we design a pseudo-random number generator based on Keccak function, and complete its hardware implementation and performance test using FPGA .

The principle and design method of Keccak function and random number generator are discussed in depth. And a deterministic random number generator with Keccak function as the core algorithm is designed. First of all, a set of random entropy inputs is read as random seeds, and then the additional input is initialized including the time random number and the personalized character string. The internal state is generated and transmitted to the generating module. In the generation module, it is necessary to generate the random number according to the current internal state and generate a new internal state. In order to ensure the safety of the system, when the seed exceeds its set life, the system reads the new entropy input and re-initializes to generate a new internal state. Then a new round of the production process begins.

In order to complete the functional testing and performance testing of the system, through the Verilog HDL this paper complete the hardware experiment of PRNG. In addition, the NIST randomness detection standard was used to detect the random performance. It was found that the numbers generated by the system had very good randomness. In addition, the system has a good anti-retrospective and anti-predictive performance because of good internal state generation and Keccak function scrambling algorithm, which has a good practical value.

KEY WORDS:PRNG, Hash algorithm, field programmable gate array (FPGA)

目 录

摘要 I

Abstract II

第一章 绪论 1

1.1 课题背景 1

1.2 发展概述 1

1.3 本文工作 2

1.4 结构安排 2

第二章 伪随机数发生器介绍 4

2.1 NIST SP800-90A标准介绍 4

2.2 伪随机数发生器的构架 4

2.3 系统的框架分析 5

2.3.1 熵输入 5

2.3.2 附加输入加入 6

2.3.3 密码学算法 6

2.3.4 补种模块 6

2.4 Keccak算法 7

2.4.1 Keccak算法简介 7

2.4.2 海绵结构 7

2.4.3 置换函数 8

2.4.4 Keccak函数的优势和应用 11

2.5 小结 12

第三章 伪随机数发生器的实现 13

3.1 伪随机数发生器的算法实现 13

3.1.1 初始化阶段 13

3.1.2 产生阶段 14

3.1.3 补种阶段 15

3.2 系统定义 16

3.3 伪随机数发生器的硬件实现 17

3.3.1 数据控制模块 18

3.3.2 初始化模块 18

3.3.3 产生模块 19

3.4 Keccak函数的硬件实现 19

3.4.1 Padding模块 21

3.4.2 Permutation模块 21

3.5 Keccak函数实现结果和分析 22

3.6 伪随机数发生器实现结果及分析 23

3.7 小结 25

第四章 系统的分析 26

4.1 系统的安全性分析 26

4.2 系统产生的随机数分析 27

4.2.1 随机性检测套件介绍 27

4.2.2 产生序列随机检测结果 29

4.3 小结 30

结论 31

致谢 32

参考文献 33

第一章 绪论

1.1 课题背景

在信息化时代的今天,随机数在网络购物,电子交易,信息传输等应用系统已经深入人们的生活之中,让日常生活更加轻松,但是信息的安全性也成为一个越来越严峻的问题。因此,一个运行高速,造价低廉,能够产生统计性能良好的随机数的随机数发生器在全球信息化的今天是至关重要的。

随机数在密码学中是一项极为重要的安全要素,并广泛应用于密钥产生[1],数字加密,认证协议等诸多领域。密码系统的安全性除了建立在数据的随机性上外,与系统的安全性同样息息相关。而随机数发生器,即随机数的产生算法,更是决定了随机数随机性能和安全性能的关键要素。因此,在信息时代的今天,研究和发展更加安全的随机数发生器是至关重要并极具现实意义的。

剩余内容已隐藏,请支付后下载全文,论文总字数:27104字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;