《嵌入式设备身份认证系统.docx》由会员分享,可在线阅读,更多相关《嵌入式设备身份认证系统.docx(52页珍藏版)》请在三一办公上搜索。
1、目 录摘 要:1ABSTRACT2第1章 绪论31.1研究背景31.2国内外研究状况31.2.1 古典密码学41.2.2 现代密码学41.2.3 总线介绍91.3 小结11第2章 相关算法的描述122.1分组密码122.1.1 分组密码的基本原理122.1.2 数据加密标准(DES)132.1.3 高级加密标准(AES)192.2 HASH函数232.2.1 Hash函数的性质232.2.2基于分组密码的Hash函数242.2.3 Hash函数MD5262.2.4 SHA-1散列算法30第3章 嵌入式设备身份验证系统的实现方案333.1 系统架构333.1.1 总体设计方案333.1.2协议帧
2、及其说明343.1.3功能模块图及其说明343.2开发板介绍和串口通信函数介绍383.2.1开发板介绍383.2.2串口通信API介绍403.3核心代码及其流程403.3.1系统的注册流程和代码403.3.2数据包认证码生成流程43结 束 语45参考文献46致 谢47嵌入式设备身份认证系统摘 要:在现实世界中,身份欺诈是种常见现象,因此常常需要证明个人的身份,同样地,在数据通信过程中也存在身份的欺诈,通信和数据系统的安全性很大程度上取决于能否验证设备或终端的真实身份。而这一功能通常都要通过密码学方法来完成。所以,本文首先介绍了密码学的基础知识和其发展历程,然后在此基础上,详细分析了几个可用于系
3、统设计的重要算法,包括DES、SHA-1和MD5等算法。利用以上算法的特点,本文提出了可用于身份认证系统实现的具体方案,利用该方案可实现嵌入式设备通信过程中交互式的身份认证,从而保证嵌入式设备在通信过程中的安全性。关键词:身份认证;密码学;嵌入式设备。The Authentication System of Embedded Device Abstract: In the real world, identity fraud is a common phenomenon, therefore theres a frequecy need to prove the identity of ind
4、ividuals, there is also identity fraud in data communication. The security of communication and data system mainly depends on the identity verification of the devices or terminators. And the verification is usually accomplished by methods of cryptography. So the basic knowledge and development of cr
5、yptography are firstly discussed in the paper. Secondly, a number of important algorithms that could be used in the design of system is analyzed, including DES, SHA-1 and MD5 algorithm. Baseing on these algorithms, a program that can be applied to the authentication system of embedded device is pres
6、ented in the article. The program can used to relize the interaction authentication of embedded device, so as to ensure the security of the communications of embedded device.Keywords: Authentication; Cryptography; Embedded Devices.第1章 绪论1.1 研究背景随着科技的飞速发展,安全性逐渐成为一个潜在的巨大问题。安全性是一个涉及面很广泛的问题,其中也会涉及到是否构成犯
7、罪行为的问题。在其最简单的形式中,它主要关心的是确保无关人员不能读取,更不能修改传送给其他接收者的信息。此时,它关心的对象是那些无权使用,但却试图获得服务的人。安全性也处理合法消息被截获和重播的问题,以及发送者是否曾发送过该条消息的问题。 大多数安全性问题的出现都是由于有恶意的人试图获得某种好处或损害某些人而故意引起的。可以看出保证安全不仅仅是使它没有编程错误。它包括要防范那些聪明的,通常也是狡猾的、专业的,并且在时间和金钱上是很充足、富有的人。同时,必须清楚地认识到,能够制止偶然实施破坏行为的敌人的方法对那些惯于作案的老手来说,收效甚微。 安全性可以被粗略地分为4个相互交织的部分:保密、鉴别
8、、反拒认以及完整性控制。保密是保护信息不被未授权者访问,这是人们提到的安全性时最常想到的内容。鉴别主要指在揭示敏感信息或进行事务处理之前先确认对方的身份。反拒认主要与签名有关。保密和完整性通过使用注册过的邮件和文件锁来实现。1.2国内外研究状况随着信息技术的发展与应用,信息安全的内涵在不断的延伸,从最初的信息保密性发展到信息的完整性、可用性、可控性和不可否认性,进而又发展为攻(攻击)、防(防范)、测(检测)、控(控制)、管(管理)、评(评估)等多方面的基础理论和实施技术。信息安全是一个综合、交叉学科领域,它要综合利用数学、物理、通信和计算机诸多学科的长期知识积累和最新发展成果,进行自主创新研究
9、,加强顶层设计,提出系统的、完整的,协同的解决方案。与其他学科相比,信息安全的研究更强调自主性和创新性,自主性可以避免“陷门”,体现国家主权;而创新性可以抵抗各种攻击,适应技术发展的需求。就理论研究而言,一些关键的基础理论需要保密,因为从基础理论研究到实际应用的距离很短。现代信息系统中的信息安全其核心问题是密码理论及其应用1-5,其基础是可信信息系统的构作与评估。密码学从其发展6-11来看,可分为古典密码学与现代密码学12,古典密码以字符为基本加密单元的密码,以及现代密码以信息块为基本加密单元的密码。1.2.1 古典密码学 古典密码有着悠久的历史,在电报特别是无线电报发明以后,得到了深入研究。
10、常用的有单表密码和多表密码,其思路都是改变字母表中字母的顺序。其中单表密码在古代就已经得到了很长的发展,到了现代,密码学有了一个奇妙的发展历程,当然,密而不宣总是扮演主要角色,如下图1.1所示为一般的数据加密模型 图1.1一般数据加密模型明文X用加密算法E和加密密钥K得到密文Y=Ek(X)。在传送过程中可能出现密文截取者。到了收端,利用解密算法D和解密密钥K解出明文为Dk(Y)=Dk(Ek(X)=X。其中,截取者也可称为攻击者或入侵者。在这里,我们假定加密密钥和解密密钥都是一样的。但实际上,它们可以是不一样的(即使不一样,二者之间也具有某种关联性)。密钥通常是由一个密钥源提供。当密钥需要向远地
11、传送时,一定要通过另一个安全信道。密码编码学是密码体制的设计学,而密码分析学则是在未知密钥的情况下,从密文推演出明文或密钥的技术。密码编码学与密码分析学合起来即为密码学。 早在几千年前人类就已经有了思想和方法。但直到1949年,创始人香农(C.E.Shannon)发表著名文Communication Theory of Secrecy Systems,论证了一般经典加密方法得到的密文几乎都是可破的。密码学的研究曾面临着危机。但从20世纪60年代起,随着电子技术。计算技术的迅速发展以及结构代数。可计算性和计算复杂性理论等学科的研究,密码学又进入了一个新的发展时期。在20世纪70年代后期。美国的数
12、据加密标准DES(Data Encryption Standard)和公开密钥密码体制(public key crypto-system)的出现,成为近代密码学发展史上的两个重要里程碑。1.2.2 现代密码学按现代密码学13-14的观点大致可被分为对称密码学和非对称密码学。1、对称钥匙密码对称密码15学指的是传送方与接收方都拥有相同的钥匙,直到1976年这都还是唯一的公开加密法。对称密码算法有时也叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。设密钥为K。则加解密过程为:加密:EK(M)=C (1.1)解密:DK(C)=M (1.2)在此算法中,加、解密双方所用的密钥都有保
13、守秘密,由于计算速度快而广泛应用于对大量数据如文件的加密过程中,如RD4和DES.。对称密码体制从加密模式上可分为序列密码和分组密码两大类。(1)序列密码序列密码一直作为军事和外交场合使用的主要密码技术之一,它的主要原理是通过有限状态随机产生性能优良的伪随机序列,使用该序列加密信息流,得到密文序列。序列密码的优点是错误扩展小、速度快、利于同步、安全程度高。(2)分组密码分组密码学将明文分成固定长度的组。用同一密码和算法对每一块加密,输出也是固定长度的密文。对称密码体制存在的最主要的问题是,由于双方都是使用相同的密钥,因此在发送和接受之前必须完成密钥的分发,所以密钥的分发便成了该加密体系中最薄弱
14、、也是风险最大的环节,所使用的手段均很难安全地完成此项工作,这样,密钥更新的周期加长,给他人破译密钥提供了机会。在史上破获他国情形不乎两种方式:一种是在敌方更换“密码本”的过程中截获对方密码本;另一种是敌人密钥变动周期太长,被长期跟踪,找出规律从而破解。在对称算法中,尽管由于密钥强度增强,跟踪找出规律破解密钥的机会大大减少,但密钥分发的困难问题几乎无法解决。例如,设有n方参加与通信,若n方都采用同一个对称密钥,一但密钥被破解,整个系统就崩溃,若采用不同的对称密钥则需n(n-1)个密钥,密钥数与参与通信的人数的平方数成正比,可见大系统的密钥的管理几乎成为不可能。(3)利用对称密码体制实现数字签名
15、许多人提出了利用对称密钥加密算法进行数字签名的方法,认为非对称加密算法的安全性不如那些“有保证的”对称密钥加密算法高。而且,大多数非对称加密算法的运算量都是很大。Lamport发明了一种签名方法,并且由Diffie和Hellman做了具体描述,所以有时又称其为Lamport-Diffie签名。这种签名方法的基础是利用一组签名。密钥的个数由报文分组长度决定。设报文分组长度为nbit,则需要2n个签名密钥,设这2n个签名密钥为:1,1,2,2n,n。这些密钥由发方秘密保存。对签名的验证信息由2n个密钥产生,并且要公开,它们的选择方法是。随机选择2n个数:1,U1,2,U2n,Un。利用签名密钥对这
16、2n个数进行一次加密运算,又得到另一组2n个数:1,V1,2,V2n,Vn。它与第一组数的关系是i=E1(i),Vi=E1(Ui),i=1,2,3n (1.3)同时将发方选取的1,U1,2,U2n,Un和计算上得到的2n个数1,V1,2,V2n,Vn传到发端。发方的签名过程如下:检查待发报文分组M第一位,如果为0那么就取1,如果为1就取1;然后再取M的第二位进行检查,如果为0那么就取2,如果为1就取2;如此继续下去,直到报文的n个bit全部检查完毕。最后形成的签名由n个密钥组成,例如,M=01101101001,那么对它的签名是:1234567891011。收方对这个签名进行验证时,首先检查M
17、0第一位,如果为0就认为签名中的第一组信息为密钥1;如果为1就认为签名中的第一组信息为1;如此继续下去,收方就会得到n个密钥,由于收方由发放的验证信息(i,Vi,i,Ui, i=1,2,n)所以收方就可以利用得到的n个密钥检验验证信息,如果满足i=Ei(i)或Vi=Ei(Ui),i=1,2,n那么收方就认为该报文是由确定的发方发送过来的,否则就认为发方身份不确定。取上式或下式进行验证取决于M各位的值,如果为0,就验证上式,如果为1就验证下式。这种方法的优点是安全性比较好,因为它是逐位进行签名的,只要有一位改动,收方得到的签名就不对了。但是,应当看到,这种方法有其严重的缺点:1)签名太长,如果每
18、个签名密钥的长度为Mbit,那么对一个长度为nbit的报文进行签名将得到一个mnbit长的签名。2)签名密钥及相应的验证信息只能用一次,因为重复使用相同的签名密钥是极不安全的。2、非对称钥匙密码学非对称钥匙密码学,相对于对称钥匙密码学,又称公钥密码学,最大的特点在于加密与解密使用不同的钥匙。公开密钥算法也称非对称算法,加密密钥不同于解密密钥,而且解密密钥不能根据加密密钥计算出来。加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。公钥:K1 加密: EK1(M)=C (1.4)签名: DK2(M)=C (1.5)私钥:K2 解密: DK2(C)=M (1.6)验签: EK1(C
19、)=M (1.7)在对称密码学中,加密和解密使用相同的钥匙,也许对不同的信息使用不同的钥匙,但都面临钥匙管理的难题。由于每对通讯方都必须使用异于他组的钥匙,当网络成员的数量增加时,钥匙数量成二次方增加。更尴尬的难题是:当安全的通道不存在于双方时,如何建立一个共有的钥匙以利安全的通讯?如果有通道可以安全地建立钥匙,何不使用现有的通道。这个鸡生蛋、蛋生鸡的矛盾是长年以来密码学无法在真实世界应用的阻碍。除了加密外,公开钥匙密码学最显著地成就是实现了数字签名。数字签名名符其实是普通签章的数字化,他们的特性都是某人可以轻易制造签章,但他却难以仿冒。数字签名可以永久地与被签署信息结合,无法自信息上移除。数
20、字签名大致包含两个算法:一个是签署,使用私密钥处理信息或信息的杂凑而产生签章;另一个是验证,使用公开钥匙验证签章的真实性。RSA和DSA是两种最流行的数字签名机制。数字签名是公开钥匙基础建设以及许多网络安全机制的基础。公钥密码体制有两种基本的模型,一种是加密模型图1.2,一种是认证模型图1.3。以下是两种模型的示意图:Alice加密Bob解密明文密文明文Bob的私钥Bob的公钥图1.2加密模型Alice加密Bob解密明文密文明文Bob的私钥Bob的公钥图1.3 解密模型(1)公钥密码体制有如下的优点:1)可以支持众多的安全服务。如数据的保密性、完整性、源认证、不可抵赖性和数字签名等。2)减化了
21、密钥发布和管理的难度。密钥对可以由通信实体自己产生,然后将公钥进行公开发布,而私钥妥善保留,这样私钥根本就没有在外界流通过,可以确保私钥的安全。而公钥密码技术也不需要事先各方建立关系以交换密钥,只要取得了对方的公钥既可以进行保密传输。这样公钥系统在解决密钥的保密性的同时,也解决了密钥分发的问题。3)非常适合于分布式系统中的使用。因为它需要分发的密钥的数目与参与者的数目一样,这样在参与者数目很大的情况下,公钥技术仍表现出良好的性能。(2)公钥密码体制的缺点公钥密码体制的缺点:1)与对称密码算法相比,非对称(即公钥)密码算法相对加解密速度比较慢,它们可能要比同等强度的对称密码算法慢上10倍到100
22、倍。当加密较短的消息时,这种速度上的差异表现的并不十分明显,但若加密较长的消息,非对称密码的速度是无法忍受的,所以非对称算法不会应用在需要大规模加密的情况或用于加密实时消息,如对实时语音信息加密。2)要想让非对称密钥算法取得与对称密钥算法相同的安全强度,就必须使用更长的密钥(3)公钥加密提供安全服务 公钥系统可以提供的服务公钥加密可以提供众多的安全服务,如数据的保密性、完整性、消息源认证(身份认证)、抗抵赖服务、进行密钥发布及进行数字签名等,以下是这些服务的简介。1)消息保密性服务显然,公钥密码系统可以用来加密消息,加密的强度是由所使用的特定算法和所采用的密钥长度所决定的。通常,每个算法的健壮
23、性和所使用的陷门单向函数的类型直接相关。这一服务的前提是:使用接收者的公钥加密的消息,只有使用接收者的私钥才能解密。由于接受者的公钥是公开的,因此任何人都可以用接收者的公钥解密消息,然后发送给接收者;而只有接收者才知道自己的私钥,因此只有接收者自己才能解密发送给他的密文。这便保证了消息的安全传递,即实现了消息的保密性。实现保密性时使用的加密模型只能保证消息的保密性而不能同时认证发送者的身份。2)消息源认证(身份认证)服务这个服务要求发送者使用自己的私钥进行消息加密,而接收者使用发送者的公钥进行解密。因为私钥只有发送者自己知道,所以只要能用发送者的公钥解密,则便能自动对发送者的身份进行认证16。
24、这种利用公钥进行身份认证的模型,但并不能同时保证消息的保密性。3)消息完整性服务使用可以获得的公钥进行加密可以实现数据传输的机密性,但不能同时保证消息的完整性。因为,窃听者可以中途拦截密文,不让其发送到接收者;而把另外一个消息用接收者的公钥加密,再发送给接收者,这时接收者会误以为被替换的消息是来自真实的消息源的。这就破坏了消息的完整性。而用另一种方法,即用发送者的私钥加密,接收者用发送者的公钥解密,这样虽然可以保证消息的完整性,但却无法同时保证消息的机密性。要想同时保证消息的完整性、机密性和消息源认证可以使用数字签名和公钥的混合方案。4)抗抵赖服务根据公钥密码学的基本前提,私钥只是所有者具有,
25、因此能够使用相关公钥进行解密,那么所有者就无法抵赖了。然而,若私钥丢失或被破解,那么所有者就可以否认。对于强度较高的抗抵赖服务来说,私钥从来都不会泄露出去,就连所有者都无法知道。可以保护私钥的拥有方篡改硬件对于这一点非常重要,如智能卡等。5)密钥发布服务公钥密码学可以用来在不安全的公网上建立密钥连接。简单的说,现在会话密钥成了要加密的消息内容,会话密钥用对方的公钥来加密,接受方用自己的私钥解开消息内容,然后双方都获得了相同的会话密钥,这时便建立了密钥连接。注意,这时,需要对发送者的身份进行严格的认证,以防止密钥欺骗。(4)利用非对称密码体制进行数字签名 设E为加密算法,D为解密算法,Ke为加密
26、密钥,Kd为解密密钥,对于非加密算法KeKd,并且在已知Ke与Kd两者中的任意一个时,要想获得另一个从计算上是不可能的。利用这种算法产生签名的过程如下: 设A要向B发送一份报文M,该报文由两部分组成,一部分称作报头(用H表示),它包括发送方的身份,接收方的身份,发送序号等;另一部分是要发送的报文数据信息(用T表示)。签名者必须将他的签名验证信息公开,在这里将加密密钥Ke公开,而将解密密钥Kd保密。A对M进行签名时,利用它的解密密钥Kd对T进行一次解密运算 S=Dkd(T) (1.8)将签名后的报文Ms=(H,S) (1.9)发送给B,B收到后做如下操作以验证签名:1)根据H中的信息识别出发送者
27、的身份2)在公开的签名信息薄中查出A用于签名验证的加密密钥Ke3)利用查到的Ke对“S”进行一次加密运算T=Eke(S);4)检查T是否正确。如果T是正确的,那么B就可以断定确实T是由A发送过来的数据,因为只有A才知道Kd并且还保证在已知Ke的前提下任何人都无法从计算上得到Kd.如果T不正确,说明消息在传输途中被修改过。这样。这种方法就完全满足了对数字签名的两个要求。1.2.3 总线介绍1、CAN总线CAN是控制网络Control Area Network 的简称,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件之间的数据通信。其总线规范现已被ISO 国际标准组织制订为国际标准,得到了
28、Motorola、Intel 、Philips、Siemence、NEC等公司的支持,已广泛应用在离散控制领域。CAN 支持多主点方式工作,网络上任何节点均可在任意时刻主动向其它节点发送信息,支持点对点、一点对多点和全局广播方式接收/ 发送数据。它采用总线仲裁技术,当出现几个节点同时在网络上传输信息时,优先级高的节点可继续传输数据,而优先级低的节点则主动停止发送,从而避免了总线冲突。已有多家公司开发生产了符合CAN 协议的通信芯片,如Intel 公司的82527 ,Motorola 公司的MC68HC05X4, Philips 公司的82C250 等。另外,插在PC 机上的CAN 总线接口卡,
29、具有接口简单、编程方便、开发系统价格便宜等优点。2、RS-232总线RS-232是一条串行外总线,其主要特点是:所需传输线比较少,最少只需要三条线(一条发、一条收、一条地线)即实现全双工通信。传输距离远,用电平传送为15米,电流环传送可达千米。有多种可供选择的传送速率,例如300、600、1200、2400、4800、9600、19200波特等。采用非归零码负逻辑工作,电平-3V为逻辑1,而电平+3V为逻辑0,具有较好的抗干扰性。3、RS-485总线针对RS-232-C的不足,出现了一些新的接口标准, RS485的电气标准就是其中的一种。RS485是美国电气工业联合会(EIA)制定的利用平衡双
30、绞线作传输线的多点通讯标准。它采用差分信号进行传输;最大传输距离可以达到1.2 km;最大可连接32个驱动器和收发器;接收器最小灵敏度可达200 mV;最大传输速率可达2.5 Mb/s。由此可见,RS485协议正是针对远距离、高灵敏度、多点通讯制定的标准。 RS-485是的在RS-422的基础上发展起来的,能实现一点对多点的通信,也能实现多点双向通信,但同一时刻只能有一个发送器,其余的为接受器,即一主多从的通信方式。目前市场上可供选择的RS-485总线芯片很多,其中包括可支持128个节点的MAX1487和支持400个节点的SP485R。利用该芯片可直接组成简单的通信网络。RS-485收发器采用
31、平衡发送、差分接收的方式,即在发送端将TTL信号转换成差分信号输出,在接收端,接收器将差分转换成TTL信号。因此具有较高的共模抑制能力。同时接收器具有较高的灵敏度,能检测低达200mV的电压,数据传输可达1200m。如降低数据传输速率,则通信距离可更长。当通信速率为1200bps时,理论距离可达15km.当传输距离超过300m时,在网络的二端需接入120的匹配电阻,以减少因阻抗不匹配而引起的反射,吸收噪声,从而有效抑制噪声干扰。1.3 小结本章主要简单地叙述了密码学的发展历史和状况,从古典密码学谈到现代密码学的出现,对现代密码学我们又做了很多分类,如对称密码学和非对称密码学,对对称密码学与非对
32、称密码学在不同的领域的应用进行了一定的阐述,尤其是其在数字签名方面的应用,分析通过二者来实现身份认证的可行性,本文是以对称密码学的思想作为最基础,利用对称密码学具有相同的加密密钥和解密密钥来实现嵌入式设备与主机之间的通信,只有拥有该密钥的用户才是合法用户,其次在本章中,还有比较性地介绍了一下非对称密码学,在当今有很多的认证系统都是采用了非对称密码学的思想,对两者在不同的领域应用做了个简单的叙述,本章最后对本次设计牵涉到的几种总线做了个简单的介绍,通过本章可以对本次设计所牵涉到的内容做个大致的了解,当然很多内容还会在后面的章节中做更加详细的介绍。第2章 相关算法的描述2.1分组密码2.1.1 分
33、组密码的基本原理设n 是一个分组密码17的分组长度,k是密钥, x=x0x1x2xn-2xn-1 (2.1)为明文,其中xiGF(2),0in-1, y=y0y1y2ym-2ym-1 (2.2)为相应的的密文,其中 yj GF(2),0jm-1,则 y=Ek(x), x=Dk(y), (2.3)其中Ek和Dk分别表示在密钥k控制下的加密和解密变换,如果nm,则分组密码对明文加密后有数据扩展,如果nm,则分组密码对明文加密后有数据压缩。如果n=m,则分组密码对明文加密后既无数据扩展也无数据压缩,我们通常考虑的分组密码都是这种既无数据扩展也无数据压缩的分组密码。对于一个分组长度为n密钥长度为t的分
34、组密码,我们通常假定每个明文分组和密文分组都是GF(2)n中的向量。GF(2)N=GF(2)GF(2) 总共n个GF(2)相乘表示GF(2)上的n维向量空间。1、置换定义:设S是一个有限集合,是从S到S得一个映射,如果对任意u,vS,当uv时,(u)(v),则称为S上的一个置换对于一个分组长度为n的分组密码,不同的密钥应该对应不同的加密和解密变换,给定密钥k,对于任意的u,vGF(2)n,如果uv,则一定有 Ek(u)=Ek(v) (2.4)这是因为如果Ek(u)=Ek(v),则在解密时将难以准确地恢复明文。因此,对于给定的密钥k,加密变换Ek为GF(2)n上的一个置换,解密变换Dk为Ek的逆
35、置换。设计一个分组长度为n的分组密码就是构造GF(2)n上的置换。不同的密钥应该对应不同的置换。如果密钥长度为t,则密钥量为2t,因为GF(2)n上共有2n!个不同的置换,所以必须有2t2n!。为便于密钥管理,通常t不能太大。当然,密钥长度t也不能太小,难以抵抗对密钥的穷举搜索攻击。在设计分组密码时,另外一要求是加密变换和解密变换都能够容易地计算,并且便于软件和硬件实现。2、扩散与混淆 扩散和混淆是C.E.Shannon提出的设计密码体制的两种基本方法,其目的是为了抵抗对手对密码体制的统计分析,在分组密码的设计中,充分利用扩散和混淆,可以有效地抵抗对手从密文的统计特性推测明文和密钥,扩散和混淆
36、是现代分组密码的设计基础。所谓扩散就是让明文中的每一位影响密文中的许多位,或者说让密文中的每一位受明文的许多位的影响,这样可以隐蔽明文的统计特性,当然,理想的情况是让明文中的每一位影响密文中的所有位,或者让密文中的每一位受明文中的所有位的影响。所谓混淆就是将密文与密钥之间的统计关系变得尽可能复杂,使得对手即使获取了关于密文的一些统计特性 ,也无法推测密钥,使得复杂的非线性代替变换可以达到比较好的混淆效果,而简单的线性代替变换得到的混淆效果则不理想。2.1.2 数据加密标准(DES)1、DES概述数据加密算法(Data Encryption Algorithm,DEA)的数据加密标准(Data
37、Encryption Standard,DES)是规范的描述,它出自IBM的研究工作,并在1997年被美国政府正式采纳。它很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DES是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用DES。DES使用一个56位的密钥以及附加的8位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为Feistel的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DE
38、S使用16个循环。攻击DES的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果 DES 使用 56 位的密钥,则可能的密钥数量是256个。随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过,DES现在仅用于旧系统的鉴定,而更多地选择新的加密标准高级加密标准(Advanced Encryption Standard,AES)。DES的常见变体是三重DES,使用168位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个56位的子元素都相同,则三重DES向后兼容DE
39、S。DES处理的明文分组长度为64位,密文分组长度也是64位,使用密钥长度为56位,DES解密过程和加密相似,解密时使用与加密相同的算法,不过子密钥的使用次序要反过来,DES的整个体制是公开,系统安全性完全靠密钥的保密。2、DES的一般设计准则(1)随机性:输出与输入间是无规律。(2)雪崩效应:改变输入中的1位,平均要导致一半的输出位被改变。(3)完全性:每个输出位都是所有输入位的一个复杂函数(4)非线性性:加密函数对任何密钥值都是非仿射的(即非线性的)。(5)相关免疫性:输出是统计上独立于任何输入位的子集。不会与输入位的任何子集相关。DES中重复交替使用代替运算S和换位运算P两种变换,以达到
40、混乱和扩散目的。3、DES加密原理DES算法的加密过程经过了两个阶段(如图2.1所示):首先,64位的明文在一个初始置换IP后,比特重排产生了经过置换的输入,明文组被分成右半部分和左半部分,每部分32位,以L0和R0表示。接下来的阶段是由对同一个函数进行16次循环组成的,16轮迭代称为乘积变换或函数F,这个函数本身既包含有代替函数,将数据和密钥结合起来,最后1轮的输出由64位组成,其左边和右边两个部分经过交换后就得到预输出。最后阶段,预输出通过一个逆初始置换IP-1算法就生成了64位的密文结果。64位明文初始置换IP乘积变换逆初始置换IP-164位密文 图2.1 DES加密处理略图DES的详细
41、加密计算如下图2.2所示(1)初始置换(IP)与逆初始置换(IP-1)初始置换表和逆初始置换表分别如图2.3和图2.4所示,表中的数字代表初始置换或逆初始置换时64位输入分组的位序号,表中的位置代表置换后输出的位顺序。很容易看出:这两个置换是彼此反向的。如经过IP置换后,输入消息的第1位被置换到第40位的位置输出,再经过逆初始置换后,第40位又回到了第1位的位置。 K1K2Kn输入初始置换IP L0 R0 L1=R0R1=L0F(R0,K1) L2=R1R2=L0F(R1,K2) L15=R14R15=L14F(R14,K15)R16=L15F(R15,K16)L16=R15逆初始置换IP-1
42、 输出FFFF图2.2 DES的加密计算流程初始置换(IP)表中的位序号表现出这样的特征;整个64位按8行8列排列:最右边一列按2,4,6,8和1,3,5,7的次序排列:往左边各列的位序号依次为紧邻其右边一列各位序号加8。逆初始置换(IP-1)则是初始置换的逆过程。相应地,表中位序号表现出这样的特征:整个64位依然按8行8列排列;左边第二列按8,7,6,5,4,3,2,1的次序排列:往右边隔一列的位序号依次为当前列各位序号加8;认为最右边一列的隔列位最左边一列。输入64位输入64位58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 40 3
43、2 24 16 864 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7输出(64位)40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 2633 1 41 9 49 17 57
44、25输出(64位) 图2.3 初始置换(IP) 图2.4 逆初始置换(IP-1)(2)每个循环的详细过程图2.5所示给出了一个循环的内部结构。每个64位的中间结果的左、右两个部分被当成独立的32位数据处理。每轮变换的逻辑关系为:Li=Ri-1Ri=Li-1F(Ri-1, K i) (2.5)Li-1 (32位)R i-1(32)位)R i(32位)轮密钥产生器F变换扩展变换E选择压缩变换S盒代替置换运算PLi(32位)32位48位48位 图2.5 DES算法的一轮迭代处理过程输入(32位)32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28