微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP+FPGA的多混沌实时视频图像加密系统

基于DSP+FPGA的多混沌实时视频图像加密系统

时间:10-10 来源:互联网 点击:

摘要:针对视频图像在数字通信中存在着安全和隐私问题,提出了基于DSP+FPGA技术来实现实时视频图像加密的系统设计方案,并详细介绍了多混沌加密算法在DSP和FPGA上的实现。实验结果表明多混沌实时视频图像加密增强了视频图像传输的安全性,同时证明了本系统对实时视频图像能快速地进行加密。
关键词:图像加密;混沌加密;DSP;FPGA

0 引言
随着数字通信在网络中使用越来越频繁,视频的安全保密也显得越来越重要。在数字通信领域,许多在存储和传输中安全可靠的视频产品得到广泛应用,例如:付费电视、机密视频会议和医学图像系统等。从1970年开始就有许多优秀的密码技术已经确定并得到广泛的应用,如DES、IDEA和RSA等,同时也有许多密码技术由于加密速度不是很快,不能直接应用于视频加密中。因此,为了保护传输中的实时视频内容,研究一些专门的实时视频图像加密算法显得十分重要。针对上述问题,本文提出一种基于DSP+FPGA技术来实现实时视频图像加密。

1 多混沌图像加密
多混沌图像加密算法是通过多路选择器选择针对某一段数据采取哪种加密方式和密钥,然后对明文进行加密生成密文,多混沌图像加密算法框架如图1所示。多混沌图像加密算法涉及到流加密、分组加密及多路选择器。

1.1 流加密
流加密的密钥是利用两个不同的一维逐段性混沌映射x1(i+1)=F1(x1(i),p1),x2(i+1)=F2(x2(i),p2)来生成x1(i+1)和x2(i+1)两个拟混沌轨道变量,然后利用非线性变换生成伪随机比特序列。采用的一维逐段性混沌映射如下:

其中x(i)∈(0,1),p∈(0,0.5),x(0)作为初始条件,p是控制参数。
伪随机比特序列是利用非线性原则来生成比特序列,其生成器如下:

流加密是将64bit的明文pi和64bit的伪随机序列Si进行异或运算,公式如下:
Pi’=Pi⊕Si (3)
1.2 分组加密
分组加密是首先将64bit的明文分组成8组,然后读入流加密生成的64bit伪随机序列Si,最后将和Si异或运算后左循环移8位得到,将替代,重复变换n=18次。其变换公式如下:


1.3 多路选择器
多路选择器是利用一个一维逐段性混沌映射x3(i+1)=F3(x3(i),p3)迭代多次来生成一个混沌轨道变量x3(i+1),然后依据式(7)来生成伪随机比特r,最后根据r来决定采用哪种加密算法,r=0时采用流加密,r=1时采用分组加密。


2 系统的总体设计
选用TI公司的TMS320C6713 DSP,该款DSP为高性能32位浮点型,其主频可达到300MHz,处理速度高达2400MIPS,片上共有264k×8位存储器,内置2个MCASP、2个MCBSP、2个I2C、1组GPIO、2个32位定时器、1个16位主机接口HPI和32位EMIF总线。选用Altera公司CycloneII系列的EP2C5 FPGA,该款FPGA拥有4608个逻辑单元,片上共计119808比特的RAM,2个高性能的锁相环,13个18×18的硬件乘法器以及具有142个用户可用的IO口。
系统的CCD摄像头直接与视频解码芯片SAA7111相连,SAA7111将采集到的模拟图像数据转换成RGB565格式的图像数据,FPGA将接收到的图像数据存入到SDRAM1,然后发送一个信号给DSP;FPGA同时检测DSP对SDRAM2的数据加密完了的标志信号,这时FPGA读取SDRAM2中的数据,将数字图像数据通过ADV7123转换模拟图像数据,通过VGA接口显示。当DSP得到FPGA发送过来中断信号后读取SDRAM1的图像数据,然后根据多混沌加密算法对其进行加密,然后将加密后的数据存储到SDRAM1中,同时发送一个加密完成的标志信号给FPGA。系统整体设计框图如图2所示。

2.1 FPGA子系统设计
FPGA子系统需要实现的功能包括SAA7111的初始化、SDRAM接口控制以及VGA实时显示模块。
视频解码芯片SAA7111在系统的视频输入处理部分,需要对其进行合理的配置后,才能实现将模拟视频信号转换成相应格式的数字图像数据。SAA7111片内有32个控制寄存器,其中20个是可编程的,FPGA需通过I2C接口对其进行初始化,初始化流程图如图3所示。在对SAA7111进行配置时,首先时钟信号采用400kHz较为可靠,其次是I2C总线的开始信号、停止信号和应答信号,再次是设置好SAA7111相应寄存器的数据。

SDRAM的主要任务是完成图像数据的存储及加密数据输出。FPGA控制SDRAM程序主要由命令状态机模块和数据传输2个子模块组成。系统上电时需有100-200μs的等待时间,然后FPGA对其进行初始化。在进行完初始化之后,便可以对SDRAM进行读写控制。对SDRAM进行读写操作时,需先激活要读写的行和列,才可以对相应的行列进行数据读写,读写完成后FPGA将对SDRAM产生一个预充电的命令。
FPGA对SDRAM1和SDRAM2是采取乒乓缓存的方式控制。假如这时FPGA对SDRAM1进行存储图像数据,写完数据后对SDRAM2进行读数据;当FPGA对SDRAM1写完数据后,DSP读取SDRAM1里的数据,加密后将数据存入SDRAM1;下一次就是FPGA对SDRAM2进行写数据,如此反复交叉进行操作。
VGA显示子模块主要是产生VGA时序控制信号,VGA时序控制信号主要包括RGB数据信号、行同步信号及场同步信号。
2.2 DSP子系统设计
DSP子系统的主要工作是完成多混沌加密算法及对SDRAM数据的读写。多混沌图像加密算法在DSP中实现步骤如下:
(1)对式(1)中xj(0)和pj(j=1,2,3)的系统参数进行初始化设置;
(2)为确保系统进入混沌状态,首先将Fj(xj(i),(pj)迭代256次得到x1(i)和x2(i),然后将其代入l=[x1(i)+x2(i)+p1+p2)×1015]mod 256+1,得到F3(x3(i),p3)在第(3)步中需要迭代的次数,其中[y]表示对数据y进行下取整;
(3)继续迭代F1(x1(i),p1)和F2(x2(i),P2)并利用式(2)来生成密钥Si;同时将F3(x3(i),p3)迭代1次后,根据式(7)生成伪随机比特r,如果r=0,这时进入第(4)步流加密,否则进入第(5)步分组加密;
(4)将64bit的明文pi成8组(即pi=pi,0,pi,1,……,pi,7)与密钥Si进行异或操作,得到密文pi’=p’i,0,p’i,1,……,P’i,7,然后得到迭代次数1:

最后进入第(6)步;
(5)首先将明文分成8组得到pi=pi,0,pi,1,…,pi,7,然后将其按照式(4)、(5)、(6)进行变换,得到密文,最后根据式(8)得到下一次F3(x3(i),p3)需迭代次数1,进入第(6)步;
(6)判断一帧的图像数据是否全部加密,如果没有完成则进入第(3)步,否则就进入第(1)步。

3 实验结果
为了验证系统的实时性和可靠性,对其进行了3种实验:FPGA单独工作实验、DSP单独工作实验和系统正常运行的实验。第一种实验是检验FPGA对实时视频图像数据在SDRAM中的读写是否正确,实验结果如图4所示,从图4可以看出FPGA对实时视频图像的传输是正确的。第二个实验是DSP直接读入一幅图片对其进行加密,加密完后FPGA将其读出并显示出来,实验结果如图5所示。同时通过Matlab软件编程对该幅图片进行相同的加密,实验结果如图6所示。图6证明了DSP对图像的加密是非常准确的。系统正常运行的实验结果如图7所示。

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

网站地图

Top