基于AES的网络加解密系统系统硬件图及完整源代码
函数
#include < aes.h>
#include <string.h>
void aes_init(avs_aes_handle* context){
context->key = (unsigned int*) KEY_ADDR;
context->payload= (unsigned int*) DATA_ADDR;
context->result = (unsigned int*) RESULT_ADDR;
context->control = (unsigned int*) AESCTRLWD;
*(context->control) = 0x00000000;
}
void aes_setKey(avs_aes_handle* context, unsigned int* key){
int i=0;
unsigned int* target_ptr = (unsigned int* )context->key;
// Invalidate old key;
*(context->control) &= (~0x00000080);
for(i=0; i<KEYWORDS; i++){
*(target_ptr++) = *(key++);
}
// validate key;
*(context->control) |= 0x00000080;
}
void aes_setPayload(aes_handle* context, unsigned int* payload){
int i=0;
unsigned int* target_ptr = (unsigned int* )context->payload;
for(i=0; i<4; i++){
*(target_ptr++) = *(payload++);
}
}
void aes_setKeyvalid(aes_handle* context){
*(context->control) |= 0x00000080;
}
void aes_encrypt(aes_handle* context){
*(context->control) |= 0x00000001;
}
void aes_decrypt(aes_handle* context){
*(context->control) |= 0x00000002;
}
int aes_isBusy(aes_handle* context){
unsigned int mycontrol = *(context->control);
return mycontrol & 0x03;
}
3、作品仿真测试
本作品以Xilinx的XC6LX16-CS324为目标芯片,在Quartus II 8.0平台上进行了综合、布局、布线,利用ModelSim进行仿真测试。
AES加/解密组件仿真测试:仿真时钟为100MHz的情况下,其仿真波形分别如图3.1、图3.2所示。
图3.1 AES加/解密组件功能仿真结果
图 2.3 AES加/解密组件时序仿真结果
其中,输入的密钥为:
A1234567_B1234567_C1234567_D1234567_E1234567_F1234567_A7654321_B7654321(长度为256Bit),
测试数据为:
11223344_AABBCCDD_11AA22CC_AB34CD56(长度为128Bit),
AES加/解密结果为:
1F44C1DD_15123C9C_6701A28F_3409C9A5。
仿真结果与软件运行的加/解密结果一致,该IP核在功能与时序上都达到了预期的目的。
系统测试:
根据编写好应用软件后,完成硬件设计并将其下载到Spartan6开发板上,用户可通过键盘和键盘接口逻辑,输入密钥、测试数据和操作指令,然后通过软件界面窗口的输出获得对测试数据的处理结果,实现了简易的人机交互功能。通过测试程序,可以看到系统能够正确运行。
4、作品的创新和优势分析
创新点:
(1)利用时分复用的AES-128/192/256 IP核,实现网络加/解密的动态可配置。
(2)对设计增加输入安全机制,采用了在内核上对密钥及原始数据进行输入锁定的技术。一旦输入,用户不能再从总线上读取,从而避免从内存窃取信息的可能,增加了系统的安全级别。
优势分析:
(1)可以选择3种不同长度的密钥(128,192,256)对数据进行加/解密,根据具体应用资源数与安全系数需求灵活的配置以达到最佳性能;
(2)可以对一组或几组离散数据进行加密或解密,也可以对一个连续的数据堆进行加密或解密;
(3)在S盒的设计上采用可重构技术,并使整个设计具有了更高的安全性、可靠性与灵活性。
(4)针对组件编写了相关驱动函数,使该网络适配器能够更灵活应用于各种加/解密场所,具有良好的通用性。
6、总结
本作品介绍了一种基于AES算法的动态可配置加/解密网络适配器,采用自动机控制技术辅以软件控制的工作方式,充分利用了FPGA的灵活性和高可配置性,以及硬件加/解密的高效实时性, 较好地兼顾了资源和速度两方面的性能。
Microblaze是Xilinx公司利用各种IP模块集成的软核。它是可编程的,具有灵活的设计方式。在SOPC系统的设计过程中,可根据用户的需要添加Microblaze处理器等相应的IP Core 来完成所需的功能,也可快速裁剪不需要的模块,开发周期短。
本系统以Spartan6实验板为硬件平台,加入了Microblaze处理器、大容量片外内存和网络控制器等IP Core,从而组建起一个完整的SOPC系统。在Microblaze 处理器支持下,可以高效的对该加/解密系统进行控制,充分发挥该系统应对不同资源,不同要求,可灵活配置的特性,并扩展了本系统对网络实时数据进行处理的应用。
由于时间的关系,系统功能还不够完善,在应用程序上还需更合理的安排缓冲区的读写,更好的发挥系统可高效并行处理相同密钥连续数据的速度优势,以应对网络环境下高速数据流的加/解密需求。
MicroBlaze AES-128 FPGA 解密系统 IP核 相关文章:
- 一种基于电力线的家庭以太网络实现方法(10-10)
- 基于DSP和FPGA的机器人声控系统设计与实现 (04-16)
- 面向大众市场的千兆位级收发器(05-04)
- 利用以太网硬件在环路实现高带宽DSP仿真(05-04)
- 采用软处理器IP规避器件过时的挑战(05-04)
- WCDMA系统基带处理的DSP FPGA实现方案(01-02)