背景与意义
在被称为“信息时代”的今天,“信息”的价值越来越受到人们的重视,甚至被视为国家和社会发展的重要资源。互联网技术、通信技术的发展在带给我们获取信息便利的同时,也为一些受限信息、保密信息的泄密提供了机会。因此,发展信息安全技术是目前面临的迫切要求,正如知名安全专家沈昌祥院士呼吁的那样,要像重视“两弹一星”那样去重视信息安全。信息安全是一门综合、交叉学科,它综合了数学、物理、通信和计算机等诸多学科的长期积累的知识和最新发展成果。目前在信息安全领域人们所关注的焦点主要有密码理论与技术、安全协议理论与技术、安全体系结构理论与技术、信息对抗理论与技术、网络安全与安全产品等几方面。
数据加密是信息安全的重要手段,2000年l0月,美国国家标准与技术研究所( NIST )宣布由比利时人Joan Daemen设计的Rijndael算法为先进密码标准算法(AES)。该算法是一种迭代型分组密码,设计简单;与公钥密码算法不同,没有复杂的乘法运算,并行执行度高,加解密速度快,易于实现,灵活性强。可以预见,随着AES取代3重DES成为事实上的标准,该算法必将广泛应用于我国电子商务等领域的互联网数据加密业务,为我国信息安全的发展提供强有力的保障。
用硬件芯片实现加密算法及产生与之相关的密钥是当前的趋势,因为数据封装在芯片中,与当前常用的纯软件加密相比,信息不易被非法读取或更改,有较高的物理安全性。FPGA以其自身所固有的特点——既具有硬件的安全性和高速性又有软件的灵活性和易维护性,已经成为分组密码算法硬件实现的热点研究方向,与以往的主流硬件(如DSP芯片、单片机)实现加密方式相比,具有低成本、高速度、保密性强等优点,与ASIC相比具有设计灵活、成本低、周期短等优点。另一个明显的优点在于:在对时间代价和空间代价的取舍上,基于FPGA实现的加密技术提供了多种实现方案,分别对时间代价和空间代价有不同的偏重,有利于在各种应用环境中进行优化。
系统描述
2.1 系统的总体设计
本系统框图如图2-1所示,信息源来自PC机,待发送数据经AES加密、数据成帧后发送,由信道传输到另一通信终端。接收端将接收到的帧进行数据提取、AES解密并将解密的信息显示在PC机上,从而实现了基于AES加密算法的保密通信。
图2-1 基于AES加密算法的保密通信系统框图
系统设计思路
本系统采用了有线和无线两种通信方式来实现基于AES加密算法的保密通信。用硬件描述语言VHDL在FPGA数字逻辑层面上实现AES加解密,通过UART这种有线通信实现PC机与终端、加密终端和解密终端的信息通信。为了系统的可扩展性和构建良好的人机交互界面,设计了通过PS/2键盘输入加密密钥,并将其显示在LCD上。在软核MicroBlaze上,采用C语言可以容易地实现AES加密算法,并且软核支持SPI总线,能够灵活方便地控制射频芯片CC2420,使系统具有信道选择、地址识别、自动CRC校验功能,使系统更加安全、通信误码率更低。再用滑动开关做辅助,实现不同功能模式间的转换。
2.3 系统架构
2.3.1 FPGA硬件实现AES加解密
原理框图如图2-2所示:
图2-2 FPGA硬件实现AES加密算法的有线通信原理框图
数据通信信道都是串口线。加密端通过UART接口从PC机接收数据,当接收够16字节(128bit),或不足时能自动补零成128bit后送给硬件AES加密模块。加密完成后可将密文返显到PC机上,以便观察AES加密对传输信息的影响,同时通过开发板上DTE接口向解密端输出数据。解密端将解密出来的信息显示在PC机上。AES加解密算法所需要的密钥key由键盘输入,并在LCD上显示出来。必须保证两终端key相同才能保证正常通信。
软核MicroBlaze实现AES加解密
原理框图如图2-3所示:
图2-3 基于软核实现的AES加解密无线通信框图
源数据从PC机串口输入后,通过中断和数据缓存解决接收速率和加密速率间的矛盾,以保证数据通信的完整性。通过软核的SPI口对CC2420进行工作模式的选择,使系统具有地址识别、信道选择、自动CRC校验的功能。滑动开关可以选择系统的是否工作在加密/解密模式,再加上程序的控制,系统能实现收发转换,以达到双工通信。
2.4系统功能与性能指标
本系统以Xilinx Spartan 3E为开发板,配以CC2420 RF模块。以PC机串口为输入输出终端,采用AES加密算法,通过硬件和软核两方面对数据进行加解密,整个系统的功能和指标如下:
2.4.1 实现的功能:
基于XILINX Spartan 3E开发板上,本系统实现了如下的功能:
基于VHDL串口的有线通信
数据通过串口进行高速通信,为9600baud,8为数据位,2位停止位。
数据传输的自适应
数据可以自适应1-16个字节数据的加密传输。
密钥的输入与显示
可以通过PS/2口对KEY进行实时改变,并通过LCD显示出来,增加了数据的安全性。
硬件AES加解密
实现了AES的高速加解密,误码率很低
基于CC2420的无线通信
实现了CC2420的双工通信,波特率为11520baud,8为数据,1位停止位,无校验。
数据帧的传输
通过加目的地址,通道识别,CRC校验等组成数据帧结构,确保了数据的成功,安全传输
基于软核的AES加解密
不同工作模式的切换
通过拨键,可以改变不同的工作状态,使系统工作于有或没有加解密的状态,便于利用。
2.4.2 系统指标
表2-1 系统指标说明表
指标要点
达到的指标
硬件描述语言的AES加密时间
6.74 us
硬件描述语言的AES解密时间
7.74us
基于软核的AES加密时间
100ms
基于软核的AES解密时间
120ms
硬件的有线通信串口波特率
9600baud
硬件的有线通信串口波特率
11520baud
无线通信误码率
0%
有线通信误码率
0%
加密数据长度
自适应
无线通信方法
双工
有线通信方法
单工
AES加密算法
AES密码的明文和密文分组长为128比特,密钥长度可以为128,192和256比特3种[1]。AES的数据处理单元是字节,128比特的分组信息做分成l6个字节,分组的l6个字节按顺序放复制到一个4×4的矩阵中,称为状态(State),AES的所有变换都基于状态的变换。AES变换是由圈函数通过多圈迭代实现的,根据密钥长度的不同,函数的迭代次数也不一样,对应上面的3种密钥长度,迭代次数分别为l0、l2、l4。在圈函数的每一圈迭代中,包括4步变换,分别是字节代换运算、行变换、列混合以及圈密钥的加法变换,其作用就是通过重复简单的非线性线件变换 、混合函数变换 ,将字节代换运算产生的非线性扩散,达到充分的混合,使加密后的分组信息统计特性分布均匀,在每次迭代中引入不同的密钥,这样便以最简单的运算代价得到了最好的加密效果,实现了加密的高效性。其加解密的流程图如图3-1:
图3-1AES加解密流程
FPGA硬件实现AES加解密的有线通信
4.1 AES加密模块
1)功能描述
AES加密模块实现将输入的待加密数据128比特和128 位密钥(key)进行AES加密,并给出加密过程中的一些状态标志。其包括5个底层模块和1个顶层模块。
2) 顶层模块(表4-1)
表4-1 AES顶层模块接口定义表
管脚
功能
管脚
功能
Clk
全局时钟
reset
开始新一轮加密
data_done
数据加密完成标志
Key_done
密钥扩展完成
Add_done
数据加密成标志
Key_in
密钥输入
data_in
待加密数据输入
data_out
已加密数据