基于单片机和FPGA的网络数据加密实现

发布者:火箭少年最新更新时间:2011-12-15 关键字:FPGA  单片机  VHDL 手机看文章 扫描二维码
随时随地手机看文章
1 引言
    随着信息技术和网络化进程的发展,网络通信安全问题日益突出。现场可编程门阵列(FPGA)以其自身设计灵活、可靠性高的优点广泛应用于加密领域。硬件实现的加密算法不占用计算机资源.加密过程完全与外部总线隔离,具有较高的数据保护能力。算法可灵活改变,具有较强的独立性。加密机由单片机,FPGA和El通信接口组成。FPGA内部算法由VHDL语言编写。该系统适用于要求数据安全较高的场合,其终端可为计算机,银行POS机等,提供数据传输的安全性和保密性。


2 流加密解密原理及算法
2.1 流加密解密原理
    流密码由密钥和密码算法两部分组成,密钥一般存储在加解密设备内部,在数据传输前已设置完成。密码算法在较长时间内是不变的。在同步流密码中,只要发送端和接收端有相同的密钥和内部状态,就能产生相同的密钥流。
    数据传输时,加密端和解密端使用同一个初始密钥,加密时密码流与明文相异或得到密文,同时每隔一定时间加入同步数据;解密时以同步模式产生的密文与密码流进行异或得到明文,同步模式采用63位Gold码。整个加解密过程与发送数据格式如图1所示。在发送密文中加入初始同步码,接收端利用Gold码的三值特性检测Gold码实现同步数据。对接收数据流和Gold码做互相关运算,相关结果满足Gold码的三值特性,说明当前数据流是发送端加入的同步Gold码.标志为密文的起始,然后调用解密算法对后续的密文解密,恢复传输的数据。

                     [page]

2.2 A5/1算法原理
    A5/1引是GSM移动通信中数据传输的流密码加密算法。A5/1密码流产生器生成的密码与明文数据帧的每一位相异或得到密文序列。A5/1算法由3个不同长度的线性反馈移位寄存器R1,R2,R3组成,其长度分别为19,22,23位,其反馈特征方程分别为:x18+x17+x16+x13+1,x22+x21+x20+x7+1。算法的初始密钥是64位向量。密码流输出位为3个移位寄存器的异或输出。移位寄存器的使能由多数函数控制。Rl的第8位、R2的第10位、R3的第10位为多数函数数据输入,它们决定3个移位寄存器的移位状况。在这3个数据位中,如果有两个或两个以上的都为0,多数函数值就为0;如果有两个或两个以上的都为1,多数函数值就为1。多数函数输入的3个数据位中与多数函数值相同,相应的移位寄存器就移位。A5/1的硬件实现原理如图2所示。密码流的产生分两个阶段.第一阶段给寄存器装人64位初始值;第二阶段则根据时钟节拍和使能控制产生密码流。
2.3 W7算法原理
    W7H算法与A5/1算法在结构原理上有相似之处。W7算法由8个类似于A5/1算法硬件结构模块并行组成,每一个模块都包含3个线性反馈移位寄存器和多数函数。不同的是w7算法是128位的初始密钥,线性反馈移位寄存器的长度图2 A5/1算法的硬件实现原理和反馈结构都不同于A5/1算法。3个线性反馈移位寄存器长度分别为38、43、47位。8个并行模块采用同一初始密钥。但反馈结构和多数函数的输入位均各不相同。8个模块的输出组成8位密码流,加密效率更高。各线性移位寄存器由固定数据位通过逻辑与产生1位数据,再将该位数据与最高位输出异或,最后将3个移位寄存器输出再异或输出作为本并行块的密码位输出。由于有8个并行块,最后总的输出8 bit,即1字节。设计时,每隔8个时钟周期输出一次,保证数据速率的一致性。

                  

3 系统硬件设计
    该系统硬件设计由单片机,FPGA和El接121等组成,如图3所示。单片机用于输入用户初始密钥;FPGA负责密钥流产生以及加解密;E1接口实现数据流的发送和接收,完成HDB3码和TTL电平之间的转换,实现通信接口单元和协议数据处理单元之间的全双工通信。

                 

    由于通信链路采用E1标准,该系统设计的外部数据链路接121采用E1接口,选用接口器件DS21348。DS21348支持El和T1线接口单元,通过寄存器设置选择E1线接口单元。DS21348可配置为硬件模式,完成HDB3到TTL、TTL到HDB3的电平转换,时钟同步、数据信号格式转换以及数据帧处理。该系统可并行处理两路数据,一路加密,一路解密,实现全双工通信。

[page]

    由于TI公司的MSP430系列微处理器平台具有低功耗和小体积等特点,适合便携式应用场合,所以单片机采用MSP430系列,并通过SPI接口实现与FPGA的数据通信。单片机外接一键盘,用于输入初始密钥。考虑到用户输入密钥位数不能很多,可设置简短的密钥,并在单片机内部扩展至算法所需的位数,然后通过单片机SPI接口传送至FGPA。SPI接口共4条信号线:串行时钟(SCK),主机输出/从机输入(MOSI),主机输入/从机输出(MISO),从机片选(SS)。SPI接口可配置为主或从模式。设计配置为主模式。当单片机向FPGA传输命令或数据时,应用SPIO模式。当片选信号丙拉低,在每个时钟(SCK)的上升沿发送数据,无需FPGA向单片机输人数据,所以不使用MISO数据线。片选信号SS与FP-CA的RAM的使能相连,控制数据读入。当用户输人初始密钥后,经过数据扩展,与算法选择数据通过SPI接口传送至FPGA。SPI接口时序如图4所示。

                      

    FPGA采用CyeloneII系列中的EP20F256C6,该器件是低成本架构FPGA,可提供多达18 752个逻辑单元.152个用户IO,239 616 bit的存储位,密度超过CyeloneI FPGA的3倍,完全满足系统设计需要。CycloneII FPGA内部的逻辑资源可实现复杂应用。CyeloneII器件采用的低成本串行配置器件,这种串行配置器件最大可提供64 Mbit的nash存储器。所以,采用EP20F256C6可高效完成系统核心算法,有效节约成本。其内部算法由VHDL语言编程实现。主要程序模块:加解密算法模块(A5/1和W7)、数据存储模块、同步产生模块、同步检测模块。加密和解密各有一套独立的模块集合。其中A5/1算法模块的VHDL代码如下:

[page]

    FPGA的模块控制由两个独立的状态机组成,用于处理加密算法和解密算法,其状态转换如图5所示。

                

    系统上电初始化后,由用户向单片机输入初始密钥和算法选择数据,通过SPI接口送入FPGA,FPGA接收到密钥后将初始密钥传给算法模块,算法模块初始化后产生同步Gold码,并等待数据,当待加密数据有效时,启动加密算法;当数据无效时,再次进入等待数据状态。相应地,解密模块先检测起始的同步Gold码,检测到后,当待解密数据有效时,启动解密算法,当待解密数据无效时,再次进入等待数据状态。如此往复,完成数据的加密解密过程。在密钥传输过程中,由于两种算法所需的初始密钥位数不同,当使用w7算法时,初始密钥在送入FPGA中后还需二次扩展达到所需的位数。


4 仿真与分析
    采用QuartuslI 8.0软件仿真FPGA功能。共用4 865个逻辑单元,1 024 bit的片上存储位,时序分析得到最大工作频率为95.79 MHz。仿真加密时序如图6所示。

             

5 结论
    通过对整个设计的调试验证,结果满足设计要求。整个系统具有较高的安全性和保密性,可为要求通信安全的网络应用提供一种基于硬件的加密方式,基于FPGA的加密算法设计具有很高的灵活性,如果采用更加先进的加密算法,可进一步提高系统的安全性和保密性。

 

 

关键字:FPGA  单片机  VHDL 引用地址:基于单片机和FPGA的网络数据加密实现

上一篇:一种单片机实现的嵌入式视频切换器
下一篇:基于单片机和FPGA的远程温度监控系统

推荐阅读最新更新时间:2024-03-16 12:48

单片机c语言教程:C51数据类型
每写一个程序,总离不开数据的应用,在学习 c51 语言的过程中掌握理解数据类型也是 很关键的。先看表 3-1,表中列出了 KEIL uVision2 单片机c语言编译器所支持的数据类型。在标准C语言中基本的数据类型为 char,int,short,long,float 和 double,而在c51编译器中int 和 short 相同,float 和 double 相同,这里就不列出说明了。下面来看看它们的具体定 义: 数据类型 长 度 值 域 unsigned char 单字节 0~255 signed char 单字节 -128~+127 unsigned int
[单片机]
单片机 MSP430 独立按键检测
可以不用while等待。 定义函数 #define CPU_F ( (double) 8000000) #define delay_us( x ) __delay_cycles( (long) (CPU_F * (double) x / 1000000.0) ) #define delay_ms( x ) __delay_cycles( (long) (CPU_F * (double) x / 1000.0) ) #define CO 1 #define SET 2 #define UP 3 #define DOWN 4 #define key_01 (P2IN&BIT5) #define key_02 (P2IN&
[单片机]
FPGA配置芯片EPCS读写操作--STM32读写
注意事项: (1)首先STM32需要设置nCE和nConfig信号,即nCE置高,nConfig拉低,获得EPCS的控制权,而后对EPCS操作,操作完成后需要释放这两个管脚,即nCE拉低,nConfig置高。 (2)EPCS的极性为:sck为空闲状态为高电平,采样边沿为SCK的第二个跳变沿,(即上升沿,注意前提是SCK空闲为高) SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex; SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b; SPI_InitStruct.SPI_Mode = SPI_Mode_M
[单片机]
单片机的FLASH引导装载系统设计
前言 DSP系统的引导装载是指在系统加电时,由DSP将一段存储在外部非易失性存储器中的代码移植到内部高速存储器单元并执行的过程。这种方式即可利用外部存储单元扩展DSP本身有限的ROM资源,又能充分发挥DSP内部资源的高速效能。因此,引导装载系统的性能直接关系到整个DSP系统的可靠性和处理速度,是DSP系统设计中必不可少的重要环节。在装载系统中,外部非易失性存储器和DSP的性能尤为重要。FLASH是一种高密度、非易失性的电可擦写存储器,而且单位存储比特的价格比传统EPROM要低。为此,本文介绍了TMS320C6713浮点DSP芯片和SST公司提供的SST39VF400A FLASH存储器的基本特点,给出了使用该FLASH存储器设计
[单片机]
MSP430 F5529 单片机 时钟 闹钟 倒计时 OLED
为了便于开发,我做了一块扩展板子: https://blog.csdn.net/x1131230123/article/details/108772807 扩展板有一些常用器件,这样开发MSP430 F5529程序的时候,就不用杜邦线连接了。当然也可以选择杜邦线连接器件,效果都一样。 功能要求: 1.在oled屏上面显示出年月日,小时,分钟,秒,可以通过按键来调整时间 2.一个闹钟功能,通过按键设置闹钟的时间,到点了需要蜂鸣器响和LED闪烁 3.一个倒计时,跟闹钟差不多,也是通过按键设置时间,到时间了LED闪烁 硬件上需求: 1 蜂鸣器一个,有源蜂鸣器和无源蜂鸣器都可以。闹钟到了或者倒计时到了都需要响。 连接: 蜂鸣器------
[单片机]
MSP430 F5529 <font color='red'>单片机</font> 时钟 闹钟 倒计时 OLED
51单片机脉冲调制(PWM)控制源程序
要用51产生PWM去控制LED,首先要确定PWM的周期T和占空比D,确定了这些以后,可以用定时器产生一个时间基准T,比如定时器溢出N次的时间是PWM的高电平的时间,则D*T=N*T,类似的可以求出PWM低电平时间需要多少个时间基准N'。 那么就可以编写程序,根据定的时间基准T给定时器赋值初始化,然后开启定时器,定义一个标志位Flag,根据Flag的状态决定输出高平还是低电平,假设 定义Flag=1的时候输出高电平,用一个变量去记录定时器中断的次数,每次中断就让记录中断次数的变量+1,在中断程序里面判断这个变量的值是否到了 N,如果到了说明高电平的时间够了,那么就改变Flag为0,输出低电平,同时记录中断变量
[单片机]
STC单片机知识点
1.单片机内部三大资源:FLASH(程序存储空间也叫ROM),RAM(内存),SFR(特殊功能寄存器)。我们对单片机的操作基本都是对SFR的操作。 2.stc89c52 特点:8K FLASH,512B RAM,1个UART,2个定时器,8个中断源,P0口无上拉功能。 3.对FLASH的写操作,一般都是按页擦除,只有先把一页数据擦除后 才能写入,相当于先把数据清理后才能写。 4.对于一款新的单片机,要用sizeof,测试char,short,int等类型所占的空间大小。
[单片机]
基于单片机的GPIB-RS232C接口转换设计及应用
1 引言   在电子测量与仪器领域内,GPIB和RS232C属于应用较广泛的标准接口总线。GPIB适于建立自动测试系统(ATS),RS232C常用于数据终端设备(DTE)和数据通信设备(DCE)之间的联接。目前,已研制了许多专用大规模集成电路芯片来帮助设计者实现GPIB和RS232C接口,且这些芯片都与微处理器的内部总线相容。标准接口总线解决了设备与设备之间,或者功能组件与功能组件之间的接口问题。借助适当的接口总线把若干设备或功能组件联接起来就可构成一个ATS。如果把基于一种标准接口系统的测试装置作为子系统,再把若干子系统联接起来构成大系统或测试和控制网络,则实际需解决的就是不同标准接口总线之间的转换问题。   2 接口转
[单片机]
基于<font color='red'>单片机</font>的GPIB-RS232C接口转换设计及应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved