在DSP/BIOS中实现的信号产生和加解密模块的设计

描述

1 引言

混沌是非线性动力系统所特有的一种运动形式,它广泛地存在于自然界。一般而言,混沌现象隶属于确定性系统而难以预测,隐含于复杂系统但又不可分解,呈现多种混沌无序却又颇有规则的图像。

混沌信号的表现形式非常复杂,具有类噪声,非周期等特点。但是混沌系统本身又是确定的,由方程,参数所完全决定,是确定性非线形系统产生的不确定的信号,其状态完全可以重现。混沌系统对初值敏感。初值X0的微小的差异,Xn将有很大的差异。这种对初值的敏感性,很小的初值误差就能被系统放大,使得两个完全相同的混沌系统从几乎相同的初始条件开始演化,很快它们的轨道就变得差异很大,互不相关。因此,系统的长期性是不可预测的。这些性质使得混沌信号具有长期不可预测性和很强的抗截获能力。所以将混沌掩盖引入保密通信领域具有极其广阔的前景和巨大的潜力]。

混沌信号的产生是混沌加密实现的关键,由某些硬件电路组成的物理系统(例如蔡氏电路和模拟Lorenz系统的振荡器等)所产生的连续混沌信号是不可预测的,传统的采用模拟电路产生混沌信号的方法虽然有很多优点,但仍存在着由于通信两端模拟电路的器件精度难以完全一致,导致同步性能不是很好的问题。而DSP具有小型嵌入式操作系统,实时加密,应用方便,又不存在器件的精度问题[3] ,可以在保密通信中实现很好的同步。

2 混沌加密的基本理论

2.1 Lorenz方程

混沌信号的质量是加密效果的关键。文中选用Lorenz 系统。Lorenz 方程为三维,属于高维混沌系统。应用Lorenz 方程等高维系统构造序列密码的优点在于:一是可以对多个系统变量进行处理产生序列密码。产生序列密码的原始混沌浮点数序列既可以是一个混沌变量的序列值,也可以是多个变量的函数值。这样序列密码的设计更灵活,有更大的空间。提高安全性、改善有限精度造成的短周期效应。二是能提供大量密钥空间。Lorenz 方程具有3个系统变量,也就是有3 个初始值,还有3 个系统参数,这些都可以用来作为序列密码系统的种子密钥[4]

dsp

选取系统参数:u=16,r=45.2,b=4,初值的选取可以是不为零的任意数,最好能选取在系统混沌吸引子中,这样可以使系统快速地进入混沌状态。

2.2 混沌信号的产生

混沌信号的产生主要借助于DSP 强大的运算能力,采用数值计算的方法。混沌方程的微分数值计算方法主要有:欧拉方法、改进欧拉方法和四阶龙格-库塔法。这三种方法精度由低到高,计算量同样由低到高。文中采用欧拉法。运用欧拉法将方程化为差分方程:定义x、y、z 为双精度型,选取初值x0=0.15、y0=0.1、z0=0.1。方程参数值选取A=16、B=45.2、C=4,并定义步长为k,在给定初值的情况下,运用下面三个方程产生混沌信号:

dsp

3 基于DSP 的混沌信号产生器

3.1.硬件构成与系统框图

考虑到算法复杂度与开发便利,本系统采用TI 公司生产的通用高性能32 位定点DSP即TMS320DM642 作为主处理器。该处理器工作主频高达720MHZ,处理性能可达5760MIPS,完全可以满足算法的要求。整个加密系统的硬件是由上位机、两台DSP 及其外设组成[5] ,硬件框图如图1 所示。PC 机通过JTAG 仿真器接口与DSP 相连,以方便PC 机对系统进行调试,DSP 负责混沌信号的产生与数据的加密。实时语音数据经过AD 采样传输到DSP 片内RAM 中。由于片内RAM 空间有限,DSP 将把所接受到的数据写到片外SRAM 中加以保存。DSP 调用特定的混沌加密算法,对所接受的数据进行加密处理,将加密后的数据通过DSP 的以太网口用网络传输到另一台DSP 上,然后在另一台DSP 上解密,最后经DA输出,还原原始的实时语音信号[6]。

dsp

3.2.软件流程

DSP 的实时操作系统(RTOS)是一段嵌入在目标代码中的软件,用户的其他程序都建立在这一操作系统之上,具有很高的可靠性和可行性的内核,可以根据优先级合理的分配资源和CPU 的时间。在实现过程中可以屏蔽掉一些具体的硬件操作细节。本系统的开发就采用了DSP/BIOS,DSP/BIOS 是TI 公司针对其生产的DSP 芯片而开发的一个实时操作系统,可实时调度和同步以及进行主机/目标系统通信和实时监控的应用。它具有抢占式多任务内核,硬件抽象层,实时系统工具,配置工具。可以轻易地实现多线程的实时调度与同步,硬件中断响应时间一般在微秒级(us)。DSP/BIOS 是由许多功能模块构成的,每个功能模块都提供了大量标准的API 接口,从而实现了对硬件的抽象,程序员通过调用API 可以很容易利用DSP/BIOS 所提供的各种功能,如线程创建,撤销,唤醒等等。总之,利用DSP/BIOS 极大地提高了DSP 软件开发的可靠性,大大加快了开发进度。

RTOS 中最重要的概念就是任务,每一个线程有一些任务组成,本系统的软件结构采用多线程同步工作方式,主要分为三个线程:(1)网络处理线程tsk1,主要负责启动TCP/IP 协议栈与上位机进行以太网数据交换,并把接收到的数据通过SCOM 模块传输给加解密线程;

(2)加解密处理线程tsk2,主要负责调用特定的混沌加解密算法对收到的数据进行加解密处理,并通过SCOM 模块传递给输出线程;(3)I/O 线程tsk3,负责将语音信号通过AD 输入,同时把tsk2 传来的数据通过DA 模块进行输出,整个软件流程图如图2 所示。

dsp

系统的I/O 采用了DSP/BIOS 的SIO(Stream I/O)模块。该模块对底层硬件操作作了抽象,为用户提供了一个与设备无关的交互接口,完全不用关心IO 设备的细节特。Stream(流)是应用程序和IO 设备之间的数据通道,采用异步的方式进行IO 操作,利用SIO 模块的issue/reclaim 模式,应用程序就可以通过与SIO 交换缓存地址进行数据的输入输出了,开辟了双缓存bufa,bufb。应用程序将一缓存区bufa 填满数据,然后将首地址传递给SIO,SIO将自动调用底层驱动程序操作外设,对bufa 进行数据IO,无需应用程序的干预。待bufa 数据IO 完毕后,SIO 将空缓冲交还给应用程序,同时接收新缓存区bufb, 这种IO 管理方式,采用指针,避免了数据的拷贝,减少了应用程序的开销,如此可以达到高效的数据IO 效率,减少CPU 时间占用消耗,并且大大地提高了程序的可移植性和易于维护,很好的满足了实时性的要求。

4 混沌序列的验证

通过DSP的DA输出,将信号引到示波器,分别可以得到XY,YZ,XZ的两维信号相图见图3。由此可见,示波器输出的波形和理论值是基本吻合的,以此验证了加密序列是混沌序列。

dsp

5 语音实时信号加解密验证

由于采用的DSP/BIOS系统是一个实时操作系统,它能很方便的应用在实时信号处理方面。可以基于DSP/BIOS建立一个语音加密系统,对输入的实时语音信号进行混沌加密。为了验证这一系统以及观察方便,实验采用1KHz正弦波作为实时语音输入,将其通过高速AD输入DSP中,由DSP调用混沌信号产生以及加密算法对其加解密,再通过DSP的左右声道的DA输出到示波器进行实验,实验结果如图4所示。

dsp

对比这几组实验结果,可知通过系统加密模块,原始语音信号已不能辨认,解密模块在解密密钥完全相同时才可以还原出原始信号。另外可以用实际的语音信号在系统一端通过麦克风输入,经过加密再从扬声器输出,语音已经不能辨认,再将其输入另一台解密DSP中,又可以很好的还原原始信号,不过整个过程会存在一定的延时。系统速度瓶颈在于产生混沌序列算法部分,由于混沌运算对精度要求较高,所以混沌序列运算中采用了浮点运算,对于DM642定点DSP会产生较大的处理时间开销,因此需要通过编写定点化程序来提高处理速度。实验表明,优化程序后,系统可以实时处理的最高音频信号频率达到4KHz,完全满足实时语音通信的带宽要求。

6 总结

本文提供了一种基于小型嵌入式实时操作系统下混沌信号产生和对语音实时加密的方法,所有的编程都是在DSP/BIOS下完成的, DSP/BIOS有很强的实时分析和任务实时管理能力,可以对程序进行实时跟踪与分析,提高应用程序开发的可靠性。在设计中由于采用的是定点DSP,在对采样点进行定点化截尾时,会有很小的误差出现,如果能够采用浮点DSP,就可以很好的解决这个问题。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分