微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于AES的网络加解密系统系统硬件图及完整源代码

基于AES的网络加解密系统系统硬件图及完整源代码

时间:07-01 来源:3721RD 点击:

函数

#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 处理器支持下,可以高效的对该加/解密系统进行控制,充分发挥该系统应对不同资源,不同要求,可灵活配置的特性,并扩展了本系统对网络实时数据进行处理的应用。

由于时间的关系,系统功能还不够完善,在应用程序上还需更合理的安排缓冲区的读写,更好的发挥系统可高效并行处理相同密钥连续数据的速度优势,以应对网络环境下高速数据流的加/解密需求。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top