数据通信的容错与加密.docx
《数据通信的容错与加密.docx》由会员分享,可在线阅读,更多相关《数据通信的容错与加密.docx(26页珍藏版)》请在冰豆网上搜索。
数据通信的容错与加密
第11章数据通信的容错和加密
容错和加密是一种提高数字通信系统靠得住性的技术。
本章简要介绍在信息的传输、存储和互换进程中普遍应用的奇偶校验码、循环码等过失控制码和常常利用的数据加密技术。
数据通信的容错
数据通信中的噪音是不可避免的,为了克服因此而造成的误差,数据通信中的容错是必不可少的。
下面将着重介绍过失控制码的概念、模型和奇偶校验码和循环冗余校验码。
引言
1.过失控制码的概念
香农(Shannon)于1984年在“通信的数学理论”一文中提出了关于在噪声信道中传输信息的重要理论,即香农第二定理。
该定理指出:
只要对信息进行适当的编码(提供足够的冗余),就可以够在不捐躯信息传输率的前提下把噪声信道引发的过失减少到任意希望的程度。
香农的这必然理奠定了过失控制码的理论基础,后经海明(Hamming)等人的进一步进展,过失控制码形成了一套完整的理论体系。
过失控制码抑制(控制)噪声的影响(过失)的实质是通过增加额外的信息(冗余信息)来揭露(检测)和/或屏蔽(纠正)过失。
图11-1示出一个数字通信系统的模型。
源信息可能是消息、符号、数据或图表等信息。
编码器把源信息转换成可传输的符号序列。
那个序列中的每一个符号称为一个码符,表示一条信息的一个码符序列称为一个国字或码向量,表示所有源信息的码字的集合就称为一个码。
源信息被转换成码字的进程称为编码,码字被转换成它所表达的信息的进程称为译码。
以最有效的方式(即平均用最短的码符序列)来表达信息的码称为源码。
源码中含冗余最少,通常以为是无冗余码。
相反,非源码的码称为冗余码或过失控制码(因为冗余能够提供过失控制能力)。
具有检测过失能力的码称为检错码,具有纠正过失能力的码称为纠错码。
图11-1过失控制码的应用
虽然过失控制码是为数字通信系统设计的,可是,它的应用远不仅限于此。
事实上,只要把图11-1中的传输部件理解为存储部件或变换部件,当即能够看到过失控制码的加倍普遍的应用领域.
2.过失模型
在码字的传输进程中,有许多原因(如环境的干扰、部件的失效等)都可能致使过失的发生。
过失的表现形式(过失模型)由系统及系统的应用环境决定。
本节将涉及以下几种最多见的过失模型并讨论控制这些过失的编码和译码技术。
(1)独立过失模型
若是一个失效(或环境的一次干扰)只会使码字中的一个码符发生过失,或说,一个码字的各个码符的过失的发生是彼此独立的,则称失效的这种过失表现形式为独立过失。
(2)突发(burst)过失模型
若是一个失效可能使一个码字的任意一段相邻的码符同时发生过失,则失效的这种过失表现形式被称为突发过失。
(3)b邻接过失
若是一个码字被分成若干个长度为b的字段,一个失效可能使一个字段中的任意多个码发生过失,则失效的这种过失表现形式就称为长度为b的b邻接过失。
b邻接过失是突发过失的一个特例。
3.译码原则
在图11-1所示的模型中,在正常情形下译码器的功能是把码S0的码向量转换成它所表达的信息,该功能只须执行S0的编码进程的逆进程就可以实现。
当过失发生时,即当传输部件输出的序列(向量)YS0时,编码进程的逆进程不能给出Y对应的源信息。
若S0是检错码,若发觉了YS0。
则检测到了过失。
若S0是纠错码,则译码器必需第一从S0当选择一个码向量V,把Y纠正成V,然后把V译成它所表达的信息。
问题是,如何选择V才最合理(真正达到纠错的目的)?
通常有以下三种策略。
(1)条件极大似然译码
当收到一个非码向量Y时,在S0当选择码向量V的最理想的原则是使
S0(11-1)
式中是在Y出现的条件下出现X的概率。
知足式(11-1)的纠错原则称为条件极大似然译码原则。
(2)极大似然译码
在式(11-1)中,不仅同Vi与Y的不同和过失模型有关,而且同Vi对应的源信息的出现概率有关。
精准地统计出所有源信息的出现概率往往是一件困难乃至不可能的工作。
为此,能够对式(11-1)作修改,使选择的码向量V知足在应该收到V的条件下可能收到Y的概率最大,即
S0(11-2)
这一修改了的纠错原则称为极大似然译码原则。
当所有源信息的出现概率相等时,上述两种纠错原则是等效的。
(3)最近距离译码原则
当码向量的所有码符出过失的概率都相等时,极大似然译码原则简化为下述最近距离译码原则。
当收到向量Y时,最近距离译码原则选择的码向量VS0。
知足
d(Y,V)=mind(Y,Vi)S0(11-3)
式中d(Y,V)是向量Y与V间的距离,它反映Y与V之间的不同。
距离的概念将在以后的各类过失模型下取得具体化。
4.过失控制的策略
在图11-1所示的传输系统中,发信者和受信者之间仅有一条单向传输线路。
为了实现纠错,唯一的办法是传送纠错码。
这种过失控制策略通常称为前向纠错。
若是在发信者和受信者之间增加一条反向传输线路,则只须把源信息编成检错码就可以够实现纠错,因为当译码器检测到过失时,能够通过反向传输线路要求重发以消除过失。
这种过失控制策略通常称为自动重发请求(ARQ)。
ARQ策略的长处是用检错码代替纠错码,因此可望比前向纠错策略用更少的正向传输线和更简单的编码器和译码器。
ARQ策略的缺点是对传输部件的永久性故障引发的过失的控制能力不如前向纠错策略,而且,ARQ策略使系统纠错的开销时刻集中于过失发生时(重发)。
因此,ARQ系统的实时响应性不如前向纠错系统。
目前,大多数编码系统中都采用了前向纠错策略,例如,存储系统、远程通信系统等。
ARQ策略在电话、电报和某些卫星通信系统中取得了普遍的应用。
事实上,容错技术中的重试、向后恢复等技术也采用了ARQ策略。
循环冗余校验码––––CRC码(CyclicRedundancyCheck)
循还冗余校验码是目前通信传送系统和磁介质存储器中普遍采用的一种编码形式。
下面将对其进行详细的介绍。
CRC码一般指在k位信息码以后再拼接r位校验码。
其编码格式如图11-3所示。
整个编码长度为n位,其中k位信息位,另外附加r=(n一k)位校验位,这种编码又称(n,k)码。
应用CRC码的关键是如何从k位信息位取得r位校验位,和如何从k+r位信息码判断是不是犯错。
图11-3CRC编码
(1)CRC码的编码方式:
对于一个给定的(n,k)循环码,能够证明存在一个最高次幂为(n-k)的多项式q(x),g(x)为循环码的生成多项式,按照g(x)能够生成k位信息的校验码。
(2)CRC码的校验原理:
假设被传送的k位二进制信息用表达式C(x)表示,则C(x)=Ck-1Ck-2…C1C0,Ci取值0或1。
将C(x)左移n-k位(即左移r位),则可表示成C(x)·2r。
如此C(x)的左侧就会空出r位,这r位即是校验码的位置。
用C(x)·2r除以g(x)生成多项式,所取得的余数即为所求的校验位。
假设余数表达式为r(x),商的表达式为q(x),C(x)·2r除以g(x)后得:
将上式两边同乘以g(x)得:
将上式右边的余数r(x)移到余式左侧得:
上式左侧的C(x)·2r+r(x)即为所求的n位CRC码,r(x)就是校验位。
从上式能够看出,等式右边是g(x)的倍式,那么等式左侧也应该是g(x)的倍式。
把等式左侧生成的n位CRC码传送到接收方,接收方收到这n位编码后,一样除以g(x),若是传送正确,余数应为0,若是余数不为0则传送犯错。
为何要将前面式子右边的r(x)移到等式的左侧仍然为加r(x)呢?
这是因为CRC码编码所用到的特殊运算,即每一名二进制位在进行四则运算时都采用模2运算,运算时不考虑进位和借位。
●模2加减:
模2加减运算就是按位加,逻辑上能够用异或门实现。
模2加与模2减相同。
0±0=0,0±1=1,1±0=1,1±1=0。
●模2乘:
模2乘时用模2加求部份积之和。
例:
●模2除:
模2除是按模2减求部份余数。
每上一名商,部份余数都要减一名。
上商规则是只要余数最高位为1,则商为1,不然为0。
当部份余数的位数小于除数时,该余数为最后余数。
例:
在求CRC码进程中始终要遵循按位模2运算规则,因此r(x)移到等式左侧后仍为位加。
(3)举例:
有一个(7,4)码,求C(x)=1100的CRC码,生成多项式g(x)=1011。
解:
C(x)=1100
C(x)左移n-k=3位,即C(x)·23=1100·23=1100000
g(x)=1011
C(x)23除以g(x),余数位010
形成CRC码位1100010
(4)CRC码的纠错
前面已经讲过,将收到的CRC码除以约定的生成多项式g(x),若是余数为0,则码字无错。
若是某一名犯错,则余数不为0,不同位犯错余数也不同。
表11-1列出了上例的犯错模式。
改换不同的测试码字,只要生成多项式不变,余数与犯错位的对应关系就不变。
表11-1(7,4)循环校验码犯错模式(生成多项式g(x)=1011)
CRC码
A1A2A3A4A5A6A7
余数
出错位
正确
100010
000
无
一位出错
100011
001
A7
100000
010
A6
100110
100
A5
101010
011
A4
110010
110
A3
000010
111
A2
100010
101
A1
(5)关于生成多项式
并非是任何一个最高次幂为(n-k)的多项式g(x)都能够作为生成多项式。
从检错和纠错的要求动身,生成多项式要知足以下要求:
●任何一名发生错误都使余数不为0;
●不同位数发生错误余数不同;
●余数继续作模2除,应使余数循环。
利用者能够从有关资料上直接查到对应不同码制的生成多项式。
表11-2给出了部份生成多项式。
表11-2部份生成多项式
N
K
g(x)多项式
g(x)二进制码
7
4
g(x)=x3+x+1
或x3+x2+1
1011
或1101
7
3
g(x)=x4+x3+x+1
或g(x)=x4+x3+x2+1
11101
或10111
15
11
g(x)=x4+x+1
10011
31
26
g(x)=x5+x2+1
100101
1041
1024
g(x)=x16+x15+x2+1
0101
数据加密技术
随着数据通信技术应用的不断深切,数据加密技术显得日趋重要。
本节将介绍几种常常利用的数据加密算法并将给出其Basic实现程序。
概述
1.密码技术历史回顾
密码技术有着悠长的历史,现代英语中的cryptograph(密码学)一词源于古希腊的kryptos(隐藏)和graphein(写)这两个单词。
密码学伴随着人类社会的进展不断完善。
四千连年前至公元14世纪,是古典密码技术的孕育、兴起和进展时期。
那个时期以手工作为加密手腕。
14世纪到20世纪中叶,是古典密码学进展的鼎盛时期。
16世纪前后,普遍地采用了密表和密本作为密码的大体体制,著名的维吉尼亚密码就是其中一例。
该密码采用的是一种多字母表––––单字母表––––单元朝替法。
它依据“维吉尼亚字母方阵”进行加密。
若设明文为VigenereCipher(维吉尼亚密码)则密钥为CSL,加密时将密钥写在明文下面,再依维吉尼亚密表得出密文,即:
明文——VisenereCipher
密钥——CSLCSLCSLCSLCS
密文——XARGGPTWNKHSGJ
在维吉尼亚密码于16世纪正式命名之前,1379年拉文迪提出了一套专用“密钥”系统;文艺振兴时期,享有“西方密码之父”佳誉的意大利人艾伯蒂对加密和破译做出了专门大奉献。
他不仅发明了密码史上的第一个字母频率表,还发明了实现