交织器输出的调制字符上进行,通过交织器输出字符与长码PN码片的二进制模工相加而完成。
1.3 伪随机序列研究现状
迄今为止,人们获得的伪随机序列仍主要是PC(相控)序列,移位寄存器序列(m和M序列),Gold序列,GMW序列,级联GMW序列,Kasami序列,Bent序列,No序列。
其中m序列是最有名和最简单的,也是研究的最透彻的序列。m序列还是研究其它序列的基础。它序列平衡,有最好的自相关特性,但互相关满足一定条件的族序列数很少(对于本原多项式的阶数小于等于13的m序列,互为优选对的序列数不多于6),且线性复杂度很小。M序列族序列数极其巨大(当寄存器级数等于6时,有226个序列)。但其生成困难,且其互相关特性目前知之甚少,一般很少用。Gold序列互相关函数为3值,序列部分平衡,有良好的相关特性,族序列数相对较大,但它有致命的弱点,线性复杂度很低,仅是相同长度的m序列的两倍,这制约了Gold序列的广泛应用,特别在抗干扰及密码学中的应用。GMW序列具有序列平衡,线性复杂度大,自相关性能好(同m序列)等优点。它是非线性序列,且数量比m序列多。作为单个序列GMW序列有优势,但一族GMW序列满足一定互相关条件的序列数很少。一般不用于多址通信作地址码。级联GMW序列平衡性和相关性同于GMW序列,族数比GMW序列多,一般情况下,线性复杂度比GMW序列大。Kasami序列分小集Kasami序列和大集Kasami序列。小集Kasami序列族序列数大,且互相关值达welch下界,大集Kasami序列族序列数非常大,互相关较小集Kasami序列为劣。它们都有共同的弱点,序列是不平衡的,线性复杂度不大(但比m, Gold序列稍大)。Bent序列是80年代初构造出来的,具有序列平衡,相关值达welch下界,族序列数多,线性复杂度大等优点。它在整个80年代,90年代大放光芒,也是目前综合性能最好的伪随机序列。但Bent序列构造较难,未有满足一定要求的快速算法。No序列是80年代末构造出来的一种新型伪随机序列,它的突出优点是线性复杂度很大,且相关值可达welch下界,族序列数多,但有序列不平衡的弱点。
1.4设计内容
首先研究生成序列的反馈移位寄存器、反馈逻辑函数。主要研究它们的生成、随机特性以及相关特性,并分析它们的优缺点以及存在的问题。最后在理论证明的基础上应用MATLAB仿真验证随机特性,并用仿真作出m序列和Gold序列相关特性图形并加以比较。
6
第二章 伪随机序列与仿真工具的简介
通过抛硬币的方法可以得到一个随机序列,它具有两个方面的特点:一是预先不可确定、不可重复实现。即在实验前无法预知序列是怎样的,而且在所有的序列中不可能有两个是完全一致的。另一方面所有序列都具有某些共同的随机特性,对二元序列Golomb总结了三条随机性假设:
R1 若序列的周期L为偶数,则0的个数与1的个数相等;若L为奇数,则0的个数比1的个数多1或少1。
R2 长为1的游程占1/2,且0游程和1游程的个数相等或至多差一个。 R3 序列的异相自相关函数为一个常数,即序列为二值自相关序列。
能否产生真正的随机序列一直都处在激烈的争论中,但可以肯定的是随机序列的产生、复制和控制在实际中都是难以实现的。如果一个序列,一方面它的结构是可以预先确定的,并且可以重复的产生和复制;另一方面又具有某种随机特性(R1--R3),便称这种序列为伪随机序列.简单的讲,伪随机序列就是具有某种随机特性的确定序列。
2.1 伪随机序列理论的发展历史
伪随机序列的理论与应用研究大体上可以分成三个阶段:(1)纯粹理论研究阶段 (1948年以前);(2)m序列研究的黄金阶段(1948-1969); (3)非线性生成器的研究阶段 (1969-)。
1948年以前,学者们研究伪随机序列的理论仅仅是因为其优美的数学结构。最早的研究可以追溯到1894年,作为一个组合问题来研究所谓的De Bruijn序列;上世纪30年代,环上的线性递归序列则成为人们的研究重点.
1948年Shannon信息论诞生后,这种情况得到了改变。伪随机序列己经被广泛的应用在通信以及密码学等重要的技术领域。Shannon证明了“一次一密”是无条件安全的,无条件保密的密码体制要求进行保密通信的密钥量至少与明文量一样大。因此在此后的一段时间内,学者们一直致力于研究具有足够长周期的伪随机序列。如何产生这样的序列是20世纪50年代早期的研究热点。线性反馈移位寄存器 (LFSR)序列是这个时期研究最多的,因为一个n级LFSR可以产生周期为2n?1的最大长度序列,而且具有满足Golomb随机性假设
7
的随机特性,通常称之为m序列。这段时期的研究奠定了LFSR序列的基本理论和一些经典结论。
但是,在1969年Massey发表了“移位寄存器综合与BCH译码”一文,引发了序列研究方向的根本性变革,从此伪随机序列的研究进入了构造非线性序列生成器的阶段。Berlekamp-Massey算法(简称B-M算法)指出:如果序列的线性复杂度为n,则只需要2n个连续比特就可以恢复出全部的序列。从这个结论可以看出m序列是一种“极差”的序列,它的线性复杂度太小,因而不能够直接用来做流密码系统的密钥流序列。从这里还可以看到仅仅靠Golomb的三个随机性假设来评测序列是不够的,还需要其它的一些指标。此后直到今天,密码学界的学者们一直在努力寻找构造“好”的伪随机序列的方法。
2.2 伪随机序列的构造方法
就现有的文献,可以把构造伪随机序列的方法分成两大类:一类是基于数学的理论构造伪随机序列;另一类是基于LFSR构造伪随机序列。两种构造方法各有优缺点,前者在理论上容易分析序列的随机性质,但往往不容易实现或者实现的代价比较高;而后者则恰恰相反,在工程上很容易实现,成本较低,但有的情况下不容易分析其随机性质。
基于数学理论构造伪随机序列又可以分为两类:基于数论的构造和基于有限域的构造。前者利用的数学工具主要是二次剩余理论和割圆理论,像Legendre序列、Jacobi序列、m序列、差集序列和割圆序列等就属于此类构造;后者利用的数学工具主要是迹函数,像Bent序列、GMW序列和椭圆曲线序列等为该类构造的代表。
基于 LFSR的伪随机序列生成器有很多,总体上可以分为两大类:一类是用一个n元布尔函数作用于n个输入比特,布尔函数的输出作为密钥流序列;另一类是用一个LFSR控制另一个LFSR。前者包含两种生成器,即熟知的非线性组合生成器和非线性滤波生成器。由于m序列的线性复杂度太小,不能直接用作密钥流序列,因此通常采用将m序列作驱动序列,然后用一个布尔函数作用于这些驱动序列的方法来提高序列的线性复杂度。非线性组合生成器由n个LFSR和一个非线性组合器组成;非线性滤波生成器由一个LFSR和一个前馈逻辑组成。第二类生成器也包含两种控制模型,钟控生成器和缩减生成器。这两种生成器的原理都是用一个控制序列对另一个基序列做不规则采样。钟控生成器是在基序列中插入新的符号,其输出序列指数幂的依赖于产生它的生成器的输入参数;而缩减生成器包括自缩减生成器则是在基序列中删除符号,这种构造结构简单易于用硬件实现。
8
2.3 MATLAB简介
MATLAB是Math Works公司开发的一种跨平台的,用于矩阵数值计算的简单高效的数学语言,与其它计算机高级语言如C, C++, Fortran, Basic, Pascal等相比,MATLAB语言编程要简洁得多,编程语句更加接近数学描述,可读性好,其强大的圆形功能和可视化数据处理能力也是其他高级语言望尘莫及的。对于具有任何一门高级语言基础的读者来说,学习MATLAB十分容易。但是,要用好MATLAB却不是在短时间就可以达到的。这并不是因为MATLAB语言复杂难懂,而是实际问题的求解往往更多的是需要使用者具备数学知识和专业知识。MATLAB使得人们摆脱了常规计算机编程的繁琐,让人们能够将大部分精力投入到研究问题的数学建模上。可以说,应用MATLAB这个数学计算和系统方针的强大工具,可以使科学研究的效率得以成百倍的提高。
目前,MATLAB已经广泛用于理工科大学从高等数学到几乎各门专业课程之中,成为这些课程进行虚拟试验的有效工具。在科研部门,MATLAB更是极为广泛地得到应用,成为全球科学家和工程师进行学术交流首选的共同语言。在国内外许多著名学术期刊上登载的论文,大部分的数值结果和图形都是借助MATLAB来完成的。
以其他高级语言相比较,MATLAB具有独特的优势:
(1) MATLAB是一种跨平台的数学语言。采用MATLAB编写的程序可以在目前所有的操作系统上运行(只要这些系统上安装了MATLAB平台)。MATLAB程序不依赖于计算机类型和操作系统类型。
(2) MATLAB是一种超高级语言。MATLAB平台本身是用C语言写成的,其中汇集了当前最新的数学算法库,是许多专业数学家和工程学者多年的劳动结晶。使用MATLAB意味着站在巨人的肩膀上观察和处理问题,所以在编程效率,程序的可读性、可靠性和可以执行上远远超过了常规的高级语言。这使得MATLAB成为进行科学研究和数值计算的首选语言。
(3) MATLAB语法简单,编程风格接近数学语言描述,是数学算法开发和验证的最佳工具。MATLAB以复数矩阵运算为基础,其基本编程单位是矩阵,使得编程简单,而功能极为强大。对于常规语言中必须使用许多语句才能实现的功能,如矩阵分解、矩阵求逆、积分、快速傅里叶变换,甚至串口操作、声音的输入输出等,在MATLAB中用一两句指令即可实现。而且,MATLAB中的数值算法是经过千锤百炼的,比用户自己编程实现的算法的可信度和可靠性都大为提高。
9
(4) MATLAB计算精度很高,MATLAB中数据是一双精度存储的,一个实数采用8字节存储,而一个复数则采用16字节存储。通常矩阵运算精度高达1015以上,完全能够满足一般工程和科学计算的需要。与其它语言相比,MATLAB对计算机内存、硬盘空间的要求也是比较高的。
(5) MATLAB具有强大的绘图功能。利用MATLAB的绘图功能,可以轻易地获得高质量的曲线图。具有多种形式来表达二维、三维图形,并具有强大的动画功能,可以非常直观地表现抽象的数值结果。这也是MATLAB广为流行的重要原因之一。
(6) MATLAB具有串口操作、声音输入输出等硬件操控能力。随着版本的提高,这种能力还会不断加强,使得人们利用计算机和实际硬件相连接的半实物仿真的梦想得以轻易实现。
(7) MATLAB程序可以直接映射为DSP芯片可接受的代码,大大提高了现代电子通信设备的研发效率。
(8) MATLAB的程序执行效率比其他语言低。MATLAB程序通常是解释执行的,在执行效率和速度上低于其它高级语言,当然如果对执行效率有特别要求,可以采用C语言编制算法,然后通过MATLAB接口在MATLAB中执行。事实上,MATLAB自带的许多内部函数均是用C语言编写并编译的,因此利用MATLAB内部函数的程序部分运行速度并不比其他语言中相应函数低。
10