李雪梅;陈亚云;王若鑫
【摘 要】设计了一种基于FPGA的密码算法测试平台.讨论了该平台的系统架构,设计模块的划分及解决方案.该测试平台利用实验箱资源,包括键盘数据输入,数码管及发光二极管显示输出等功能进行密码算法的设计与实现.该测试平台有助于学习、了解和掌握密码算法硬件实现以及数字系统的FPGA设计.基于该测试平台,可以在相同的架构下设计实现对不同密码算法的验证. 【期刊名称】《北京电子科技学院学报》 【年(卷),期】2014(022)002 【总页数】4页(P70-73)
【关键词】密码算法;FPGA;测试平台;数字系统 【作 者】李雪梅;陈亚云;王若鑫
【作者单位】北京电子科技学院电子信息工程系 北京100070;北京电子科技学院电子信息工程系 北京100070;北京电子科技学院电子信息工程系 北京100070 【正文语种】中 文
【中图分类】TN918.1;TP311.55 引 言
信息安全是计算机科学技术的热点领域,数据加密则是信息安全的重要手段。随着可编程技术的飞速发展,高速集成电路的不断出现,采用FPGA实现对称密码算
法已越来越受到广泛的关注和重视[1-2]。与软件实现相比较,密码算法的硬件实现具有速度快、资源少的特点,成为数字系统研究重点。
在对称密码算法的硬件设计研究中,最常用到的密码算法有DES算法,AES算法以及SMS4等。文献[6]提出一种新型的基于FPGA硬件实现的SMs4分组密码算法电路设计,将流水线技术与迭代运算相结合,在速度和资源方面得到了较好的性能。在[7]中,作者分析了DES安全性的相关公式,提出一种简单实用的改进方案。针对AES算法特点,[9]提出一种适于FPGA实现的改进的快速AES算法。在现有的密码算法硬件实现的研究中,大多是针对工程技术应用而进行的,主要考虑在芯片资源和算法实现速度等性能方面是否有提升的空间和可能。这些研究对密码算法的硬件实现技术有很大的帮助。本文基于DES算法,提出一种密码算法硬件实现的测试平台设计。讨论了该平台的系统架构,设计模块的划分及解决方案。基于该测试平台可以在相同的架构下设计实现不同密码算法。 1 测试平台的设计与实现
密码算法测试平台包括数据输入、算法实现及数据输出显示等部分。在设计中,针对这几部分将测试平台进行模块划分,总体框架如图1所示。数据输入模块是通过4*4键盘,将算法的明文和密钥送入FPGA芯片进行处理,同时可以在数码管显示每次按下的数据;算法实现模块是在FPGA芯片中实现算法的加密过程。算法以DES算法为例进行设计。由于DES算法是比较成熟的分组密码算法,这里不再对算法内容进行赘述;数据输出显示模块是将加密后的密文分组在数码管上分组输出,观察加密结果。 图1 系统设计框图 1.1数据输入模块设计
设计中采用实验箱的4*4键盘输入算法的明文和密钥。DES算法的明文和密钥分别为64比特,连续按下并存储键盘的按键值,启动算法加密信号,就可以将明文
和密钥送入算法模块执行。
4*4键盘是是一种共阳极的电路。该键盘的列选择信号以及行选择信号均为为低电平有效。通过对键盘行列信号扫描,确定输入数据的值。键盘行列扫描如图2所示。例如当扫描信号为1101时表示正在扫描“159D”一列,如果该列没有按键被按下,则由行信号读出的值为1111;反之,当按键9被按下时,则由列信号读出的值为1011。
对键盘行列扫描的VHDL代码如下所示。 图2 4X4矩阵键盘行列扫描
其中count为循环加一计数器, KBCol为输出列扫描信号,KBRow为行扫描信号,sta 为中间变量。当sta为000时,表示扫描到第一列,此时行扫描代码中根据按键位置可以判断键值。 列扫描代码: case count is
when \"000\"=>KBCol<=\"0111\"; sta<=\"000\";
when \"001\"=>KBCol<=\"1011\"; sta<=\"001\";
when \"010\"=>KBCol<=\"1101\"; sta<=\"010\";
when \"011\"=>KBCol<=\"1110\"; sta<=\"011\";
when others=>KBCol<=\"1111\"; end case; 行扫描代码:
case sta is when \"000\"=> case KBRow is
when \"1110\"=> d0<=\"11100\"; --c when \"1101\"=> d0<=\"11000\";--8 when \"1011\"=> d0<=\"10100\"; --4 when \"0111\"=> d0<=\"10000\"; --0 when others=> d0<=\"00000\";
按键按下后,一方面将数值保存在寄存器,另一方面,将送到数码管显示。每个按键值都可以用四位二进制数表示,因此,只需要一个数码管显示即可。 1.2 算法实现模块设计
当明文和密钥输入完成后,就送入算法模块进行加密运算了。设计中判断是否更改密钥来确定是否执行密钥扩展运算。在轮加密过程中将轮函数设计为例化元件进行调用,经过16个时钟可以完成一次加密运算。算法执行过程如图3所示。对于DES算法的设计,在很多文献中都有详细讨论,读者可参阅相关文献,这里不再赘述。
图3 算法实现模块流程图 1.3 数据输出显示模块设计
设计中采用实验箱数码管显示加密结果。DES算法为64比特输出,实验箱有8个数码管,这样就需要分2组显示。通过拨码开关选择分组输出密文显示。 一般情况下,实验箱上的多个数码管引脚是连在一起的,共享数据线,如图4所示为8个数码管的连接方式。通过选通控制端si(i=1,2,3,4,5,6,7,8)选择某个数码管来显示数字。使用一个数码管显示的时候,可以将其他数码管的选通信号置为无效即可。比如,若控制端高有效,则当s1=1,s2=s3…=s8=0时,左边第一个数
码管被选中,其他数码管均不工作。此时数码管根据a-g的情况显示相应的数字。如果8个数码管的选通信号同时有效,那么8个数码管根据a-g的值同时显示相同的数字。如果要想使多个数码管显示不同的数字,就需要设计动态扫描电路。动态扫描的原理是在时钟的作用下,多数码管循环选通扫描,任一时刻只有一个数码管有数据显示,但是由于扫描的频率较高,而视觉有一定的暂留效应,人眼观察到的现象就是多个数码管同时显示不同数据了。 图4 数码管连接图
动态扫描的VHDL程序如下。其中scan为8位选通信号,seg7为数码管显示信号,data1-data7分别为需要显示的数据。 case state is
when s0=> state<=s1; scan<=\"00000001“; seg7<=data1;
when s1=> state<=s2; scan<=\"00000010 “; seg7<=data2; ……
when s6=> state<=s7; scan<=\"01000000 “; seg7<=data7;
when s7=> state<=s0; scan<=\"10000000 “; seg7<=data8; end case;
需要说明的是,seg7信号为4位变量。如果实验箱的数码管接收4位二进制数显示,那么之间将seg7输出即可。如果数码管接收的是7位数据,还需要将seg7信号经过7段译码器之后在输出显示。 2 测试平台的验证
测试平台基于QuartusII软件,采用VHDL编程实现;FPGA芯片为Cyclone系类的EP1C6Q240C8器件。数据输入通过实验箱的4*4键盘实现,同时使用一个数码管显示该数据;数据输出在8个数码管上分两组进行显示。
下面是输入一组明文和密钥加密的验证结果。输入明文:0123456789ABCDEF,密钥:0123 456789ABCDEF。得到密文:01635476D8A FCDAE。由于使用8个数码管显示60位数,需要分2组显示。设计中使用拨码开关选择输出数据的顺序,使用一位拨码开关,通过拨码开关的0、1值选择输出那组密文。加密后的密文在数码管显示的结果。说明,加密过程是正确的。 3 结束语
本文基于DES算法,设计实现了一种密码算法硬件测试平台设计,讨论了该平台的系统架构,设计模块的划分及解决方案。该测试平台有助于学习、了解和掌握密码算法硬件实现以及数字系统的FPGA设计。设计中如果加入流水线设计方法,可以进一步了解和掌握密码算法的设计技术,这也是本设计将来的研究工作。 参考文献:
[1] 路而红.电子技术自动化应用技术[M], 北京:高等教育出版社, 2009. [2] 刘嘉勇.应用密码学[M].北京:清华大学出版社. 2008.
[3] 路而红, 专用集成电路设计与电子设计自动化[M], 北京,清华大学出版社,2004.
[4] 王振红.VHDL数字电路设计与应用实践教程[M],北京:机械工业出版社, 2003. [5] 倪奎, 王安, 文旷捷, 等. 一种新型的基于FPGA的SMS4密码算法电路设计[J],
电子技术应用, 2009, 35(6): 26-30.
[6] 赵波,熊泉,韩碧霞. SMS4算法在嵌入式系统中的硬件实现方法[J]. 武汉大学学报(信息科学版) .2008, 10:1015-1017.
[7] 付秀伟, 基于DES算法的系统优化设计, 吉林化工学院 信息与控制工程学院。2012, 29(11): 127-129.
[8] 戴紫彬; 孙万忠; 张永福.DES算法IP核设计。解放军信息工程大学电子技术学院。2003年05期.
[9] 吴瑕, 周焰,谷京朝.一种AES算法的FPGA设计与快速实现,系统工程与电子技术[J],2007, 29(10): 1773-1776.
[10] 基于CPLD/FPGA技术的数字系统设计, 基于CPLD/FPGA技术的数字系统设计, 2003, 20(1):69-73.
因篇幅问题不能全部显示,请点此查看更多更全内容