aes解密流程图_史上最全经典设计案例:基于AES加密算法的保密通信系统设计,完整软硬件协同方案-通信/网络-与非网...

背景与意义

在被称为“信息时代”的今天,“信息”的价值越来越受到人们的重视,甚至被视为国家和社会发展的重要资源。互联网技术、通信技术的发展在带给我们获取信息便利的同时,也为一些受限信息、保密信息的泄密提供了机会。因此,发展信息安全技术是目前面临的迫切要求,正如知名安全专家沈昌祥院士呼吁的那样,要像重视“两弹一星”那样去重视信息安全。信息安全是一门综合、交叉学科,它综合了数学、物理、通信和计算机等诸多学科的长期积累的知识和最新发展成果。目前在信息安全领域人们所关注的焦点主要有密码理论与技术、安全协议理论与技术、安全体系结构理论与技术、信息对抗理论与技术、网络安全与安全产品等几方面。

数据加密是信息安全的重要手段,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

已加密数据

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值