流密码器实验

本实验为信息安全专业选做实验。

实验目的

(1) 了解硬件加密解密的应用。

(2) 用HDL语言设计流密码器。

实验原理

流密码是将明文划分成字符(如单个字母)或其编码的基本单元(如0, 1数字),逐个与密钥流作用进行加密,接收端使用同样的密钥流解密,属于对称加密技术。流密码强度完全依赖于密钥序列的随机性和不可预测性,其核心问题是密钥流生成器的设计。线性反馈移位寄存器(LFSR,Linear Feedback Shift Register)因其实现简单、速度快、有较为成熟的理论等优点而成为构造密钥流生成器的最重要的部件之一。LFSR可以生成伪随机序列,n级LFSR其输出伪随机序列的周期小于等于2n-1,通过选择合适的反馈函数可使序列的周期达到最大值2n-1,该序列称为m序列。反馈函数可用一个一元高次多项式表示,称这个多项式为LFSR的特征多项式,其中本原多项式产生的非零序列均是m序列。一般可通过查表的方式得到常用的本原多项式的反馈系数。

参考设计

虚拟面板如图 1,实验材料给出的HDL代码基本与虚拟面板一致,但是线性反馈移位寄存器与图中不同。参考设计是简单的循环右移移位寄存器,并未构成图中的线性反馈网络。使用移位寄存器实验任务1完成的右移移位寄存器,实验材料并未包含。

image
图 1. 流密码器参考设计的虚拟面板

任务1:流密码器

修改参考设计,按照特征多项式

f(x)=1+x2+x3+x4+x8

构造反馈网络(即图中电路),形成8级LSFR。

验证测试加密、解密过程。自己拟定多组初始密钥和验证数据,但必须包含以0xEB作为密钥,0xFE0作为明文输入,得到密文后再用密文作为输入得到解密的明文。将实验结果与理论计算进行分析对比,解密还原与原文对比,并得出结论。

【拓展】修改反馈网络,重新构造为5级LSFR,观察伪随机序列的周期是否为31。注:可以查反馈系数表,得到本原多项式的特征方程。

任务2:流密码器的控制

在任务1中,用按键产生时钟信号,人工计数12次移位。这个任务用连续的时钟作为移位寄存器的时钟信号,并且用一个计数器控制移位的次数,当移位12次后自动停止移位,用有限状态机设计一个控制逻辑来实现这个过程,其状态图如图 2

状态图-全自动
图 2. 流密码器的状态图

图中start是启动信号,用开关产生。“LOAD IR”状态将开关数据装入输入寄存器;“LOAD LFSR”状态将开关数据装入线性反馈移位寄存器;“SHIFT”状态移位所有的寄存器,移位次数由一个减法计数器控制,当移位12次后进入“DONE”状态;在“DONE”状态,如果start信号尚未撤销,则停留在这个状态,直到start信号撤销再回到空闲状态。

用HDL设计实现该状态机,并将状态机输出填入下表:

IDLE LOAD IR LOAD LFSR SHIFT DONE
前面计数器实验中已经完成将10MHz的时钟分频为1Hz时钟的分频器。