嵌入式设备身份认证系统培训课程_第1页
嵌入式设备身份认证系统培训课程_第2页
嵌入式设备身份认证系统培训课程_第3页
嵌入式设备身份认证系统培训课程_第4页
嵌入式设备身份认证系统培训课程_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

73/75目录摘要: 1Abstract 2第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.2Hash函数 232.2.1Hash函数的性质 232.2.2基于分组密码的Hash函数 242.2.3Hash函数MD5 262.2.4SHA-1散列算法 30第3章嵌入式设备身份验证系统的实现方案 333.1系统架构 333.1.1总体设计方案 333.1.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嵌入式设备身份认证系统摘要:在现实世界中,身份欺诈是种常见现象,因此常常需要证明个人的身份,同样地,在数据通信过程中也存在身份的欺诈,通信和数据系统的安全性专门大程度上取决于能否验证设备或终端的真实身份。而这一功能通常都要通过密码学方法来完成。因此,本文首先介绍了密码学的基础知识和其进展历程,然后在此基础上,详细分析了几个可用于系统设计的重要算法,包括DES、SHA-1和MD5等算法。利用以上算法的特点,本文提出了可用于身份认证系统实现的具体方案,利用该方案可实现嵌入式设备通信过程中交互式的身份认证,从而保证嵌入式设备在通信过程中的安全性。关键词:身份认证;密码学;嵌入式设备。

The AuthenticationSystemofEmbeddedDeviceAbstract:Intherealworld,identityfraudisacommonphenomenon,thereforethere’safrequecyneedtoprovetheidentityofindividuals,thereisalsoidentityfraudindatacommunication.Thesecurityofcommunicationanddatasystemmainlydependsontheidentityverificationofthedevicesorterminators.Andtheverificationisusuallyaccomplishedbymethodsofcryptography.Sothebasicknowledgeanddevelopmentofcryptographyarefirstlydiscussedinthepaper.Secondly,anumberofimportantalgorithmsthatcouldbeusedinthedesignofsystemisanalyzed,includingDES,SHA-1andMD5algorithm.Baseingonthesealgorithms,aprogramthatcanbeappliedtotheauthenticationsystemofembeddeddeviceispresentedinthearticle.Theprogramcanusedtorelizetheinteractionauthenticationofembeddeddevice,soastoensurethesecurityofthecommunicationsofembeddeddevice.Keywords:Authentication;Cryptography;EmbeddedDevices.

第1章绪论研究背景随着科技的飞速进展,安全性逐渐成为一个潜在的巨大问题。安全性是一个涉及面专门广泛的问题,其中也会涉及到是否构成犯罪行为的问题。在其最简单的形式中,它要紧关怀的是确保无关人员不能读取,更不能修改传送给其他接收者的信息。现在,它关怀的对象是那些无权使用,但却试图获得服务的人。安全性也处理合法消息被截获和重播的问题,以及发送者是否曾发送过该条消息的问题。大多数安全性问题的出现差不多上由于有恶意的人试图获得某种好处或损害某些人而有意引起的。能够看出保证安全不仅仅是使它没有编程错误。它包括要防范那些聪慧的,通常也是狡猾的、专业的,同时在时刻和金钞票上是专门充足、富有的人。同时,必须清晰地认识到,能够制止偶然实施破坏行为的敌人的方法对那些惯于作案的老手来讲,收效甚微。安全性能够被粗略地分为4个相互交错的部分:保密、鉴不、反拒认以及完整性操纵。保密是爱护信息不被未授权者访问,这是人们提到的安全性时最常想到的内容。鉴不要紧指在揭示敏感信息或进行事务处理之前先确认对方的身份。反拒认要紧与签名有关。保密和完整性通过使用注册过的邮件和文件锁来实现。1.2国内外研究状况随着信息技术的进展与应用,信息安全的内涵在不断的延伸,从最初的信息保密性进展到信息的完整性、可用性、可控性和不可否认性,进而又进展为"攻(攻击)、防(防范)、测(检测)、控(操纵)、管(治理)、评(评估)"等多方面的基础理论和实施技术。信息安全是一个综合、交叉学科领域,它要综合利用数学、物理、通信和计算机诸多学科的长期知识积存和最新进展成果,进行自主创新研究,加强顶层设计,提出系统的、完整的,协同的解决方案。与其他学科相比,信息安全的研究更强调自主性和创新性,自主性能够幸免“陷门”,体现国家主权;而创新性能够抵抗各种攻击,适应技术进展的需求。就理论研究而言,一些关键的基础理论需要保密,因为从基础理论研究到实际应用的距离专门短。现代信息系统中的信息安全其核心问题是密码理论及其应用[1-5],其基础是可信信息系统的构作与评估。密码学从其进展[6-11]来看,可分为古典密码学与现代密码学[12],古典密码——以字符为差不多加密单元的密码,以及现代密码—以信息块为差不多加密单元的密码。1.2.1古典密码学古典密码有着悠久的历史,在电报特不是无线电报发明以后,得到了深入研究。常用的有单表密码和多表密码,其思路差不多上改变字母表中字母的顺序。其中单表密码在古代就差不多得到了专门长的进展,到了现代,密码学有了一个奇异的进展历程,因此,密而不宣总是扮演要紧角色,如下图1.1所示为一般的数据加密模型图1.1一般数据加密模型明文X用加密算法E和加密密钥K得到密文Y=Ek(X)。在传送过程中可能出现密文截取者。到了收端,利用解密算法D和解密密钥K解出明文为Dk(Y)=Dk(Ek(X))=X。其中,截取者也可称为攻击者或入侵者。在那个地点,我们假定加密密钥和解密密钥差不多上一样的。但实际上,它们能够是不一样的(即使不一样,二者之间也具有某种关联性)。密钥通常是由一个密钥源提供。当密钥需要向远地传送时,一定要通过另一个安全信道。密码编码学是密码体制的设计学,而密码分析学则是在未知密钥的情况下,从密文推演出明文或密钥的技术。密码编码学与密码分析学合起来即为密码学。

早在几千年前人类就差不多有了思想和方法。但直到1949年,创始人香农(C.E.Shannon)发表闻名文"CommunicationTheoryofSecrecySystems",论证了一般经典加密方法得到的密文几乎差不多上可破的。密码学的研究曾面临着危机。但从20世纪60年代起,随着电子技术。计算技术的迅速进展以及结构代数。可计算性和计算复杂性理论等学科的研究,密码学又进入了一个新的进展时期。在20世纪70年代后期。美国的数据加密标准DES(DataEncryptionStandard)和公开密钥密码体制(publickeycrypto-system)的出现,成为近代密码学进展史上的两个重要里程碑。1.2.2现代密码学按现代密码学[13-14]的观点大致可被分为对称密码学和非对称密码学。1、对称钥匙密码对称密码[15]学指的是传送方与接收方都拥有相同的钥匙,直到1976年这都依旧唯一的公开加密法。对称密码算法有时也叫传统密码算法,确实是加密密钥能够从解密密钥中推算出来,反过来也成立。设密钥为K。则加解密过程为:加密:EK(M)=C(1.1)解密:DK(C)=M(1.2)在此算法中,加、解密双方所用的密钥都有保守秘密,由于计算速度快而广泛应用于对大量数据如文件的加密过程中,如RD4和DES.。对称密码体制从加密模式上可分为序列密码和分组密码两大类。(1)序列密码序列密码一直作为军事和外交场合使用的要紧密码技术之一,它的要紧原理是通过有限状态随机产生性能优良的伪随机序列,使用该序列加密信息流,得到密文序列。序列密码的优点是错误扩展小、速度快、利于同步、安全程度高。(2)分组密码分组密码学将明文分成固定长度的组。用同一密码和算法对每一块加密,输出也是固定长度的密文。对称密码体制存在的最要紧的问题是,由于双方差不多上使用相同的密钥,因此在发送和同意之前必须完成密钥的分发,因此密钥的分发便成了该加密体系中最薄弱、也是风险最大的环节,所使用的手段均专门难安全地完成此项工作,如此,密钥更新的周期加长,给他人破译密钥提供了机会。在史上破获他国情形不乎两种方式:一种是在敌方更换“密码本”的过程中截获对方密码本;另一种是敌人密钥变动周期太长,被长期跟踪,找出规律从而破解。在对称算法中,尽管由于密钥强度增强,跟踪找出规律破解密钥的机会大大减少,但密钥分发的困难问题几乎无法解决。例如,设有n方参加与通信,若n方都采纳同一个对称密钥,一但密钥被破解,整个系统就崩溃,若采纳不同的对称密钥则需n(n-1)个密钥,密钥数与参与通信的人数的平方数成正比,可见大系统的密钥的治理几乎成为不可能。(3)利用对称密码体制实现数字签名许多人提出了利用对称密钥加密算法进行数字签名的方法,认为非对称加密算法的安全性不如那些“有保证的”对称密钥加密算法高。而且,大多数非对称加密算法的运算量差不多上专门大。Lamport发明了一种签名方法,同时由Diffie和Hellman做了具体描述,因此有时又称其为Lamport-Diffie签名。这种签名方法的基础是利用一组签名。密钥的个数由报文分组长度决定。设报文分组长度为nbit,则需要2n个签名密钥,设这2n个签名密钥为:λ1,μ1,λ2,μ2…λn,μn。这些密钥由发方秘密保存。对签名的验证信息由2n个密钥产生,同时要公开,它们的选择方法是。随机选择2n个数:μ1,U1,μ2,U2…μn,Un。利用签名密钥对这2n个数进行一次加密运算,又得到另一组2n个数:ν1,V1,ν2,V2…νn,Vn。它与第一组数的关系是νi=Eλ1(μi),Vi=Eμ1(Ui),i=1,2,3…n(1.3)同时将发方选取的μ1,U1,μ2,U2…μn,Un和计算上得到的2n个数ν1,V1,ν2,V2…νn,Vn传到发端。发方的签名过程如下:检查待发报文分组M第一位,假如为0那么就取λ1,假如为1就取μ1;然后再取M的第二位进行检查,假如为0那么就取λ2,假如为1就取μ2;如此接着下去,直到报文的n个bit全部检查完毕。最后形成的签名由n个密钥组成,例如,M=01101101001,那么对它的签名是:λ1μ2μ3λ4μ5μ6λ7μ8λ9λ10μ11。收方对那个签名进行验证时,首先检查M0第一位,假如为0就认为签名中的第一组信息为密钥λ1;假如为1就认为签名中的第一组信息为μ1;如此接着下去,收方就会得到n个密钥,由于收方由发放的验证信息(νi,Vi,μi,Ui,…i=1,2,…n)因此收方就能够利用得到的n个密钥检验验证信息,假如满足νi=Eλi(μi)或Vi=Eμi(Ui),i=1,2,…n那么收方就认为该报文是由确定的发方发送过来的,否则就认为发方身份不确定。取上式或下式进行验证取决于M各位的值,假如为0,就验证上式,假如为1就验证下式。这种方法的优点是安全性比较好,因为它是逐位进行签名的,只要有一位改动,收方得到的签名就不对了。然而,应当看到,这种方法有其严峻的缺点:1)签名太长,假如每个签名密钥的长度为Mbit,那么对一个长度为nbit的报文进行签名将得到一个m×nbit长的签名。2)签名密钥及相应的验证信息只能用一次,因为重复使用相同的签名密钥是极不安全的。2、非对称钥匙密码学非对称钥匙密码学,相关于对称钥匙密码学,又称公钥密码学,最大的特点在于加密与解密使用不同的钥匙。公开密钥算法也称非对称算法,加密密钥不同于解密密钥,而且解密密钥不能依照加密密钥计算出来。加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。公钥:K1加密:EK1(M)=C(1.4)签名:DK2(M)=C(1.5)私钥:K2解密:DK2(C)=M(1.6)验签:EK1(C)=M(1.7)在对称密码学中,加密和解密使用相同的钥匙,也许对不同的信息使用不同的钥匙,但都面临钥匙治理的难题。由于每对通讯方都必须使用异于他组的钥匙,当网络成员的数量增加时,钥匙数量成二次方增加。更尴尬的难题是:当安全的通道不存在于双方时,如何建立一个共有的钥匙以利安全的通讯?假如有通道能够安全地建立钥匙,何不使用现有的通道。那个鸡生蛋、蛋生鸡的矛盾是长年以来密码学无法在真实世界应用的阻碍。除了加密外,公开钥匙密码学最显著地成确实是实现了数字签名。数字签名名符事实上是一般签章的数字化,他们的特性差不多上某人能够轻易制造签章,但他却难以仿冒。数字签名能够永久地与被签署信息结合,无法自信息上移除。数字签名大致包含两个算法:一个是签署,使用私密钥处理信息或信息的杂凑而产生签章;另一个是验证,使用公开钥匙验证签章的真实性。RSA和DSA是两种最流行的数字签名机制。数字签名是公开钥匙基础建设以及许多网络安全机制的基础。公钥密码体制有两种差不多的模型,一种是加密模型图1.2,一种是认证模型图1.3。以下是两种模型的示意图:AliceAlice加密Bob解密明文密文明文Bob的私钥Bob的公钥图1.2加密模型AliceAlice加密Bob解密明文密文明文Bob的私钥Bob的公钥图1.3解密模型(1)公钥密码体制有如下的优点:1)能够支持众多的安全服务。如数据的保密性、完整性、源认证、不可抵赖性和数字签名等。2)减化了密钥公布和治理的难度。密钥对能够由通信实体自己产生,然后将公钥进行公开公布,而私钥妥善保留,如此私钥全然就没有在外界流通过,能够确保私钥的安全。而公钥密码技术也不需要事先各方建立关系以交换密钥,只要取得了对方的公钥既能够进行保密传输。如此公钥系统在解决密钥的保密性的同时,也解决了密钥分发的问题。3)特不适合于分布式系统中的使用。因为它需要分发的密钥的数目与参与者的数目一样,如此在参与者数目专门大的情况下,公钥技术仍表现出良好的性能。(2)公钥密码体制的缺点公钥密码体制的缺点:1)与对称密码算法相比,非对称(即公钥)密码算法相对加解密速度比较慢,它们可能要比同等强度的对称密码算法慢上10倍到100倍。当加密较短的消息时,这种速度上的差异表现的并不十分明显,但若加密较长的消息,非对称密码的速度是无法忍受的,因此非对称算法可不能应用在需要大规模加密的情况或用于加密实时消息,如对实时语音信息加密。2)要想让非对称密钥算法取得与对称密钥算法相同的安全强度,就必须使用更长的密钥(3)公钥加密提供安全服务公钥系统能够提供的服务公钥加密能够提供众多的安全服务,如数据的保密性、完整性、消息源认证(身份认证)、抗抵赖服务、进行密钥公布及进行数字签名等,以下是这些服务的简介。1)消息保密性服务显然,公钥密码系统能够用来加密消息,加密的强度是由所使用的特定算法和所采纳的密钥长度所决定的。通常,每个算法的健壮性和所使用的陷门单向函数的类型直接相关。这一服务的前提是:使用接收者的公钥加密的消息,只有使用接收者的私钥才能解密。由于同意者的公钥是公开的,因此任何人都能够用接收者的公钥解密消息,然后发送给接收者;而只有接收者才明白自己的私钥,因此只有接收者自己才能解密发送给他的密文。这便保证了消息的安全传递,即实现了消息的保密性。实现保密性时使用的加密模型只能保证消息的保密性而不能同时认证发送者的身份。2)消息源认证(身份认证)服务那个服务要求发送者使用自己的私钥进行消息加密,而接收者使用发送者的公钥进行解密。因为私钥只有发送者自己明白,因此只要能用发送者的公钥解密,则便能自动对发送者的身份进行认证[16]。这种利用公钥进行身份认证的模型,但并不能同时保证消息的保密性。3)消息完整性服务使用能够获得的公钥进行加密能够实现数据传输的机密性,但不能同时保证消息的完整性。因为,窃听者能够中途拦截密文,不让其发送到接收者;而把另外一个消息用接收者的公钥加密,再发送给接收者,这时接收者会误以为被替换的消息是来自真实的消息源的。这就破坏了消息的完整性。而用另一种方法,即用发送者的私钥加密,接收者用发送者的公钥解密,如此尽管能够保证消息的完整性,但却无法同时保证消息的机密性。要想同时保证消息的完整性、机密性和消息源认证能够使用数字签名和公钥的混合方案。4)抗抵赖服务依照公钥密码学的差不多前提,私钥只是所有者具有,因此能够使用相关公钥进行解密,那么所有者就无法抵赖了。然而,若私钥丢失或被破解,那么所有者就能够否认。关于强度较高的抗抵赖服务来讲,私钥从来都可不能泄露出去,就连所有者都无法明白。能够爱护私钥的拥有方篡改硬件关于这一点特不重要,如智能卡等。5)密钥公布服务公钥密码学能够用来在不安全的公网上建立密钥连接。简单的讲,现在会话密钥成了要加密的消息内容,会话密钥用对方的公钥来加密,同意方用自己的私钥解开消息内容,然后双方都获得了相同的会话密钥,这时便建立了密钥连接。注意,这时,需要对发送者的身份进行严格的认证,以防止密钥欺骗。(4)利用非对称密码体制进行数字签名设E为加密算法,D为解密算法,Ke为加密密钥,Kd为解密密钥,关于非加密算法Ke≠Kd,同时在已知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中的信息识不动身送者的身份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是操纵网络ControlAreaNetwork的简称,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件之间的数据通信。其总线规范现已被ISO国际标准组织制订为国际标准,得到了Motorola、Intel、Philips、Siemence、NEC等公司的支持,已广泛应用在离散操纵领域。CAN支持多主点方式工作,网络上任何节点均可在任意时刻主动向其它节点发送信息,支持点对点、一点对多点和全局广播方式接收/发送数据。它采纳总线仲裁技术,当出现几个节点同时在网络上传输信息时,优先级高的节点可接着传输数据,而优先级低的节点则主动停止发送,从而幸免了总线冲突。已有多家公司开发生产了符合CAN协议的通信芯片,如Intel公司的82527,Motorola公司的MC68HC05X4,Philips公司的82C250等。另外,插在PC机上的CAN总线接口卡,具有接口简单、编程方便、开发系统价格廉价等优点。2、RS-232总线RS-232是一条串行外总线,其要紧特点是:所需传输线比较少,最少只需要三条线(一条发、一条收、一条地线)即实现全双工通信。传输距离远,用电平传送为15米,电流环传送可达千米。有多种可供选择的传送速率,例如300、600、1200、2400、4800、9600、19200波特等。采纳非归零码负逻辑工作,电平≤-3V为逻辑1,而电平≥+3V为逻辑0,具有较好的抗干扰性。3、RS-485总线针对RS-232-C的不足,出现了一些新的接口标准,RS-485的电气标准确实是其中的一种。RS-485是美国电气工业联合会(EIA)制定的利用平衡双绞线作传输线的多点通讯标准。它采纳差分信号进行传输;最大传输距离能够达到1.2km;最大可连接32个驱动器和收发器;接收器最小灵敏度可达±200mV;最大传输速率可达2.5Mb/s。由此可见,RS-485协议正是针对远距离、高灵敏度、多点通讯制定的标准。RS-485是的在RS-422的基础上进展起来的,能实现一点对多点的通信,也能实现多点双向通信,但同一时刻只能有一个发送器,其余的为同意器,即一主多从的通信方式。目前市场上可供选择的RS-485总线芯片专门多,其中包括可支持128个节点的MAX1487和支持400个节点的SP485R。利用该芯片可直接组成简单的通信网络。RS-485收发器采纳平衡发送、差分接收的方式,即在发送端将TTL信号转换成差分信号输出,在接收端,接收器将差分转换成TTL信号。因此具有较高的共模抑制能力。同时接收器具有较高的灵敏度,能检测低达200mV的电压,数据传输可达1200m。如降低数据传输速率,则通信距离可更长。当通信速率为1200bps时,理论距离可达15km.当传输距离超过300m时,在网络的二端需接入120Ω的匹配电阻,以减少因阻抗不匹配而引起的反射,汲取噪声,从而有效抑制噪声干扰。1.3小结本章要紧简单地叙述了密码学的进展历史和状况,从古典密码学谈到现代密码学的出现,对现代密码学我们又做了专门多分类,如对称密码学和非对称密码学,对对称密码学与非对称密码学在不同的领域的应用进行了一定的阐述,尤其是其在数字签名方面的应用,分析通过二者来实现身份认证的可行性,本文是以对称密码学的思想作为最基础,利用对称密码学具有相同的加密密钥和解密密钥来实现嵌入式设备与主机之间的通信,只有拥有该密钥的用户才是合法用户,其次在本章中,还有比较性地介绍了一下非对称密码学,在当今有专门多的认证系统差不多上采纳了非对称密码学的思想,对两者在不同的领域应用做了个简单的叙述,本章最后对本次设计牵涉到的几种总线做了个简单的介绍,通过本章能够对本次设计所牵涉到的内容做个大致的了解,因此专门多内容还会在后面的章节中做更加详细的介绍。

第2章相关算法的描述 2.1分组密码2.1.1分组密码的差不多原理设n是一个分组密码[17]的分组长度,k是密钥,x=x0x1x2…xn-2xn-1(2.1)为明文,其中xi∈GF(2),0≦i≦n-1,y=y0y1y2…ym-2ym-1(2.2)为相应的的密文,其中yj∈GF(2),0≦j≦m-1,则y=Ek(x),x=Dk(y),(2.3)其中Ek和Dk分不表示在密钥k操纵下的加密和解密变换,假如n﹤m,则分组密码对明文加密后有数据扩展,假如n﹥m,则分组密码对明文加密后有数据压缩。假如n=m,则分组密码对明文加密后既许多据扩展也许多据压缩,我们通常考虑的分组密码差不多上这种既许多据扩展也许多据压缩的分组密码。关于一个分组长度为n密钥长度为t的分组密码,我们通常假定每个明文分组和密文分组差不多上GF(2)n中的向量。GF(2)N=GF(2)×…×GF(2)总共n个GF(2)相乘表示GF(2)上的n维向量空间。1、置换定义:设S是一个有限集合,Φ是从S到S得一个映射,假如对任意u,v∈S,当u≠v时,Φ(u)≠Φ(v),则称Φ为S上的一个置换关于一个分组长度为n的分组密码,不同的密钥应该对应不同的加密和解密变换,给定密钥k,关于任意的u,v∈GF(2)n,假如u≠v,则一定有Ek(u)=Ek(v)(2.4)这是因为假如Ek(u)=Ek(v),则在解密时将难以准确地恢复明文。因此,关于给定的密钥k,加密变换Ek为GF(2)n上的一个置换,解密变换Dk为Ek的逆置换。设计一个分组长度为n的分组密码确实是构造GF(2)n上的置换。不同的密钥应该对应不同的置换。假如密钥长度为t,则密钥量为2t,因为GF(2)n上共有2n!个不同的置换,因此必须有2t≤2n!。为便于密钥治理,通常t不能太大。因此,密钥长度t也不能太小,难以抵抗对密钥的穷举搜索攻击。在设计分组密码时,另外一要求是加密变换和解密变换都能够容易地计算,同时便于软件和硬件实现。2、扩散与混淆扩散和混淆是C.E.Shannon提出的设计密码体制的两种差不多方法,其目的是为了抵抗对手对密码体制的统计分析,在分组密码的设计中,充分利用扩散和混淆,能够有效地抵抗对手从密文的统计特性推测明文和密钥,扩散和混淆是现代分组密码的设计基础。所谓扩散确实是让明文中的每一位阻碍密文中的许多位,或者讲让密文中的每一位受明文的许多位的阻碍,如此能够隐蔽明文的统计特性,因此,理想的情况是让明文中的每一位阻碍密文中的所有位,或者让密文中的每一位受明文中的所有位的阻碍。所谓混淆确实是将密文与密钥之间的统计关系变得尽可能复杂,使得对手即使猎取了关于密文的一些统计特性,也无法推测密钥,使得复杂的非线性代替变换能够达到比较好的混淆效果,而简单的线性代替变换得到的混淆效果则不理想。2.1.2数据加密标准(DES)1、DES概述数据加密算法(DataEncryptionAlgorithm,DEA)的数据加密标准(DataEncryptionStandard,DES)是规范的描述,它出自IBM的研究工作,并在1997年被美国政府正式采纳。它专门可能是使用最广泛的密钥系统,特不是在爱护金融数据的安全中,最初开发的DES是嵌入硬件中的。通常,自动取款机(AutomatedTellerMachine,ATM)都使用DES。DES使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小。这是一个迭代的分组密码,使用称为Feistel的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会接着下去,但最后一个循环不交换。DES使用16个循环。攻击DES的要紧形式被称为蛮力的或完全密钥搜索,即重复尝试各种密钥直到有一个符合为止。假如DES使用56位的密钥,则可能的密钥数量是256个。随着计算机系统能力的不断进展,DES的安全性比它刚出现时会弱得多,然而从非关键性质的实际动身,仍能够认为它是足够的。只是,DES现在仅用于旧系统的鉴定,而更多地选择新的加密标准—高级加密标准(AdvancedEncryptionStandard,AES)。DES的常见变体是三重DES,使用168位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。假如三个56位的子元素都相同,则三重DES向后兼容DES。DES处理的明文分组长度为64位,密文分组长度也是64位,使用密钥长度为56位,DES解密过程和加密相似,解密时使用与加密相同的算法,只是子密钥的使用次序要反过来,DES的整个体制是公开,系统安全性完全靠密钥的保密。2、DES的一般设计准则(1)随机性:输出与输入间是无规律。(2)雪崩效应:改变输入中的1位,平均要导致一半的输出位被改变。(3)完全性:每个输出位差不多上所有输入位的一个复杂函数(4)非线性性:加密函数对任何密钥值差不多上非仿射的(即非线性的)。(5)相关免疫性:输出是统计上独立于任何输入位的子集。可不能与输入位的任何子集相关。DES中重复交替使用代替运算S和换位运算P两种变换,以达到混乱和扩散目的。3、DES加密原理DES算法的加密过程通过了两个时期(如图2.1所示):首先,64位的明文在一个初始置换IP后,比特重排产生了通过置换的输入,明文组被分成右半部分和左半部分,每部分32位,以L0和R0表示。接下来的时期是由对同一个函数进行16次循环组成的,16轮迭代称为乘积变换或函数F,那个函数本身既包含有代替函数,将数据和密钥结合起来,最后1轮的输出由64位组成,其左边和右边两个部分通过交换后就得到预输出。最后时期,预输出通过一个逆初始置换IP-1算法就生成了64位的密文结果。64位明文64位明文初始置换IP乘积变换逆初始置换IP-164位密文图2.1DES加密处理略图DES的详细加密计算如下图2.2所示(1)初始置换(IP)与逆初始置换(IP-1)初始置换表和逆初始置换表分不如图2.3和图2.4所示,表中的数字代表初始置换或逆初始置换时64位输入分组的位序号,表中的位置代表置换后输出的位顺序。专门容易看出:这两个置换是彼此反向的。如通过IP置换后,输入消息的第1位被置换到第40位的位置输出,再通过逆初始置换后,第40位又回到了第1位的位置。KK1KKn输入初始置换IPL0R0L1=R0R1=L0⊕F(R0,K1)L2=R1R2=L0⊕F(R1,K2)L15=R14R15=L14⊕F(R14,K15)R16=L15⊕F(R15,K16)L16=R15逆初始置换IP-1输出FFFF图2.2DES的加密计算流程初始置换(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位输入64位58504234261810260524436282012462544640322416864564840322416857494133251791595143352719113615345372921135635547393123157输出(64位)40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725输出(64位)图2.3初始置换(IP) 图2.4逆初始置换(IP-1)(2)每个循环的详细过程图2.5所示给出了一个循环的内部结构。每个64位的中间结果的左、右两个部分被当成独立的32位数据处理。每轮变换的逻辑关系为:Li=Ri-1Ri=Li-1⊕F(Ri-1,Ki)(2.5)LLi-1(32位)Ri-1(32)位)RRi(32位)轮密钥产生器F变换扩展变换E选择压缩变换S盒代替置换运算PLi(32位)32位48位48位图2.5DES算法的一轮迭代处理过程输入(32位)输入(32位)3212345456789891011121312131415161716171819202120212223242524252627282928293031321输出48位输入(32位,来自S盒)1672021291228171152326518311028241432273919133062211425输出32位图2.6扩展变换E图2.7P变换在那个循环中使用的轮密钥Ki的长度是48位,输入的Ri-1是32位,先被扩展到48位如图2.6,由此可知扩展变换E将32位扩展为48位输出,扩展后得到的48位结果再与各Ki进行异或,如此得到的48位结果再通过一个代替函数S产生32位的输出,

最后进行P(图2.7)变换。EE48位密钥Ki(48位)S1S2S3S4S5S6S7S8P32位Ri-1(32位)图2.8F(Ri-1,Ki)函数的计算(3)密钥的产生28bit28bit28bitC0D0LS1LS1C1D156bitLS2LS2PC-2C2D2Pc-2……LS16LS16C16D16PC-16K1(48bit)K2K16(48bit)…PC-1图2.9DES16个子密钥生成过程

如上图2.9所示子密钥Ki的产生。其中PC-1表示置换选择1,PC-2表示置换选择2,LSn表示左移n位,在DES的16轮迭代中,使用了不同的子密钥。但这16个子密钥由同一个原始密钥(56bit)移位产生而来,并没有使用独立子密钥(据分析,使用独立子密钥将会降低DES对差分攻击的抵抗力)。子密钥产生的过程为:将原始密钥(64bit,其中包括8个校验位)通过初始变换,得到有效密钥(56bit),将其分为两个28bit数据,然后进行循环左移位得到新的56bit密钥,再通过一个压缩变换得到每一轮的48bit子密钥,用来和上面的48位数据进行异或运算。需要注意的是,产生子密钥过程中每一轮对两个28bit数据的循环左移位位数是通过精心计算的,不能随意更改。假如改变移位的位数将会降低DES对相关密钥密码分析的抵抗力。DES算法的安全强度对DES的分析要紧由三种方法:(1)蛮力攻击:255次尝试。(2)差分密码分析法:247尝试。(3)线性密码分析法:243次尝试。对DES脆弱性的争论要紧集中在以下三个方面:(1)DES的半公开性:DES的内部结构即S盒的设计标准是保密的,至今未公布,如此用户无法确信DES的内部结构不存在任何隐藏的弱点和陷阱。(2)密钥太短:IBM原来的Lucifer算法的密钥长度是128位,而提交作为标准的只有56位,批判者担心那个密钥长度不足以抵御穷举搜索攻击,不太可能提供足够的安全性。1998年前只有DES破译机的理论设计,1998年后出现有用化的DES破译机。(3)软件实现太慢:1993年前只有硬件实现得到授权,1993年后软件、固件和硬件得到同等对待。2.1.3高级加密标准(AES)1、AES加密算法原理随着对称密码的进展,DES数据加密标准算法由于密钥长度较小(56位),差不多不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES。通过三轮的筛选,比利时JoanDaeman和VincentRijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍。AES算法要紧包括三个方面:轮变化、圈数和密钥扩展。本文以128为例,介绍算法的差不多原理;结合AVR汇编语言,实现高级数据加密算法AES。其目的是确定一个非保密、公开披露的、全球免费使用的分组密码算法,用于爱护21世纪政府敏感子信息。并希望取代渐进没落的原有数据加密标准DES算法。AES算法是一个数据块长度和密钥长度都可变的迭代分组加密算法,数据块长度和密钥长度可分不为128、192、256位。在加密之前,对数据块做预处理。首先,把数据块写成字的形式,每个字包含4个字节,每个字节包含8bit信息;其次,把字记为列的形式。如此数据块就能够记为以下的形式表2.1:表2.1数据块的处理a0,0a0,1a0,2a0,3a0,4a0,5…a1,0a1,1a1,2a1,3a1,4a1,5…a2,0a2,1a2,2a2,3a2,4a2,5…a3,0a3,1a3,2a3,3a3,4a3,5…其中,每列表示一个字aj=(a0,j,a1,j,a2,j,a3,j),每个ai,j表示一个8bit的字节,即aj∈GF(28)[x]/(x4+1)ai,j∈GF(28)(2.6)假如用Nb表示一个数据块中字的个数,那么Nb=4、6、8。类似地,用Nk表示密钥中字的个数,那么Nk=4、6、8。例如,Nk=6的密钥可记为如下表2.2形式。表2.2Nk=6的密钥表示k0,0k0,1k0,2k0,3k0,4k0,5k1,0k1,1k1,2k1,3k1,4k1,5k2,0k2,1k2,2k2,3k2,4k2,5k3,0k3,1k3,2k3,3k3,4k3,5AES是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,因此在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。对不同的分组长度,其对应的轮变化次数是不同的。其关系如下表2.3所示。表2.3密钥与轮数的关系标准密钥长度(Nk个字)分组大小(Nb个字)轮数(Nr)AES—1284410AES—1926412AES—2568414AES加密和解密过程如下图2.10所示:明文块通过白化技术处理后,进入轮函数,而轮函数又由字节代换、行移变换、列变换和密钥4个变换组成,AES的加密与解密流程如图2.10所示。 128位数据分组128位数据分组与扩展密钥“异或”运算S盒变换行变换列变换与扩展密钥异或S盒变换与扩展密钥异或运算行变换128位加密数据128位加密数据分组与扩展密钥“异或”运算反行变换反S盒变换反S变换反行变换反列变换与扩展密钥异或128位解密数据图2.10AES的加密与解密流程(1)圈变化

AES每一个圈变换由以下三个层组成:非线性层——进行字节变换(Subbyte);线行混合层——进行ShiftRow和列变换(MixColumn)运算;密钥加层——进行AddRoundKey运算。1)Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,能够通过计算出来的S盒进行映射。那个变换是可逆的,它定义为:(2.7)其中a-1i,j是ai,j在GF(28)中的乘法逆。2)行移变换(ShiftRow)在此变换的作用下,数据块的第0行保持不变,第1行循环左移C1位,第2行循环左移C2位,第3行循环左移C3位,其中移位值C1、C2和C3与加密块长Nb有关,它将状态中的行按照不同的偏移量进行循环移位,而那个偏移量也是依照Nb的不同而选择的如表2.4。图2.4偏移量与Nb的关系NbC1C2C34123612381243)在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式a(x)与固定多项式c(x)相乘的结果。b(x)=c(x)*a(x)的系数如此计算:*运算不是一般的乘法运算,而是专门的运算,即b(x)=c(x)·a(x)(modx4+1)(2.8)关于那个运算b0=02。a0+03。a1+a2+a3令xtime(a0)=02。a0其中,符号“。”表示模一个八次不可约多项式的同余乘法。(2.9)关于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。4)密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或”。

5)依照线性变化的性质,解密运确实是加密变化的逆变化。(2)轮变化(3)密钥扩展

AES算法利用外部输入密钥K(密钥串的字数为Nk),通过密钥的扩展程序得到共计4(Nr+1)字的扩展密钥。它涉及如下三个模块:1)位置变换(rotword)——把一个4字节的序列[A,B,C,D]变化成[B,C,D,A];S盒变换(subword)——对一个4字节进行S盒代替;3)变换Rcon——Rcon表示32位比特字[xi-1,00,00,00]。那个地点的x是(02),如Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]...扩展密钥的生成:扩展密钥的前Nk个字确实是外部密钥K;以后的字W[]等于它前一个字W[[i-1]]与前第Nk个字W[[i-Nk]]的“异或”,即W[]=W[[i-1]]W[[i-Nk]]。然而若i为Nk的倍数,则W=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk](2.10)2.2Hash函数密码学上的Hash函数是一种将任意长度的消息压缩为某一固定长度的消息摘要的函数,。Hash函数能够用于数字签名,将Hash函数应用于数字签名有许多好处,Hash函数除了可用于签名之外,还能够用于其他方面,譬如消息的完整性检测。为保证消息的完整性,及时发觉消息是否被非法篡改,能够在消息传输之前先对消息做Hash变换,然后对消息进行传输,关于接收到的消息也做Hash变换,将传输前的消息的Hash变换值与接收到得消息的Hash变换值做比较,如两者相同,则可认为消息在传输过程中没有被篡改,否则消息一定被非法篡改了,Hash函数研究现状及进展[18]也取得专门大进步。2.2.1Hash函数的性质Hash函数的输入为任意长度的消息,而其输出为固定长度的消息。一个Hash函数是一个多一的映射。定义:设H是一个Hash函数,给定一个消息x,假如查找另外一个与x不同的消息x’,使得H(x)=H(x’)是计算上不可行的,则称H关于消息x是弱无碰撞的。在一个应用Hash函数的签名方案中,假设s是签名者对消息x的一个有效签名,s=Sig(H(x)).对手可能会试图查找另外一个与x不同的消息x’,使得H(x)=H(x’)。假如对手找到了一个如此的x’,则对手就能够伪造对消息x’的签名。这是因为s也是对消息x’的有效签名。假如应用于签名方案中的Hash函数H关于消息x是弱无碰撞的,则相应的签名方案就能够抵抗对手的上述伪造攻击。对Hash函数的另外一种的可能的攻击是对手可能会查找两个不同的消息x和x’使得H(x)=H(x’),然后对手讲服签名者对消息x进行签名,得到s=Sigk(H(x)),由于s=Sigk(H(x’)),因此对手得到了一个对消息x’的有效签名,对手的这种攻击方法导致我们定义强无碰撞的Hash函数。定义设H是一个Hash函数,假如查找两个不同的消息x和x’使得H(x)=H(x’)在计算上时不可行的,则称H是强无碰撞的。显然,一个Hash函数是强无碰撞的当且仅当查找一个消息x使得H关于x不是弱无碰撞的在计算上是不可行的,也确实是讲,一个Hash函数H是强无碰撞的当且仅当对任意消息x,H关于消息x是弱无碰撞的。在一个应用Hash函数的签名方案中,假设对手得到了关于一个消息摘要z的有效签名s,s=Sigk(z),则对手可能会试图查找一个消息x,使得z=H(x),假如对手找到了如此的消息x,则s确实是消息x的有效签名,为抵抗对手的这种攻击,我们应该要求Hash函数是单向函数。定义设H是一个Hash函数,假如关于任意给定的z,查找满足H(x)=z的消息x是计算上不可行的,则称H是单向的。能够证明,假如以个Hash函数H不是单向的,则H一定不是强无碰撞的,也确实是讲,假如一个Hash函数H是强无碰撞的,则H一定是单向的。综上所述,一个密码学上的安全的Hash函数H应具有以下性质:(1)对任意消息x,计算H(x)是容易的;(2)查找两个不同的消息x和x’使得H(x)=H(x’)是难解的。2.2.2基于分组密码的Hash函数利用已有的分组密码来构造Hash函数是一种常见的比较简单的构造方法,在分组密码的CBC工作模式和CFB工作模式中,一个明文块的改变,在加密时将会引起相应的密文块以及其后的所有密文快的改变,因此,我们自然会想到利用分组密码的CBC工作模式和CFB工作模式来构造Hash函数。设Ek是一个分组长度为n的分组密码算法,密钥为k。关于任意消息x,首先对x进行分组,每组的长度为n,假如x的长度不是n的倍数,则在x的最后适当添加一些数据使得x的长度恰好是n的倍数,在以下的讨论中,我们假设消息的长度差不多上n的倍数。设x是任意一个消息x=x1x2…xi其中xi∈GF(2)n,1≤i≤l(2.11)基于分组密码的CBC工作模式的Hash函数H如图2.11所示,其构造过程能够形式化地描述为:首先选取一个初始向量IV∈GF(2)n,令y0=IV;然后计算yi=Ek(xi⊕yi-1),1≤i≤l(2.12)最后定义H(x)=yl(2.13)IV=yIV=y0x1Eky1x2Eky2xlEky1=H(x)…图2.11基于分组码的CBC工作模式的Hash函数H基于分组密码的CFB工作模式的Hash函数H如图2.12所示,其构造过程为:首先选取一个初始向量IV∈GF(2)n,令y0=IV;然后计算yi=xi⊕Ek(yi-1),1≦i≦l(2.14)最后定义H(x)=yl(2.15)EkIV=yEkIV=y0EEkEkx1y1y2x2yl=H(x)xl图2.12基于分组密码的CFB工作模式的Hash函数H基于分组密码的CBC工作模式和CFB工作模式的Hash函数中的密钥k能够公开也能够不公开,假如密钥k保密,则得到的是带密钥的Hash函数,假如密钥k公开,则我们得到的确实是通常的不带密钥的Hash函数。带密钥的Hash函数常用于产生消息认证码。关于通信双方之间的传输的任意消息x,用带密钥的Hash函数H对x做变换,结果H(x)作为消息x的认证码,附在消息x的后面,消息认证码用于保证通信双方之间传输的消息的完整性,使双方确认信息没有被第三方篡改或伪造。2.2.3Hash函数MD51、MD5消息填充表2.5MD5、SHA-1的填充方法初始消息1000...000初始长度(单位为比特)2、MD5算法的原理[19]MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,通过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余数的结果等于448。因此,信息的字节长度(BitsLength)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和许多个0,直到满足上面的条件时才停止用0对信息的填充。然后再在那个结果后面附加一个以64位二进制表示的填充前的信息长度。通过这两步的处理,现在的信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍数。如此做的缘故是为满足后面处理中对信息长度的要求。MD5中有四个32位被称作链接变量(ChainingVariable)的整数参数,当设置好这四个链接变量后,就开始进入算法的四轮循环运算,循环的次数是信息中512位信息分组的数目。3、MD5的计算过程在一些初始化处理后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。(1)首先填充消息使其长度恰好为一个比512位的倍数仅小64位的数。填充方法是附一个1在消息后面,后接所要求的多个0,然后在其后附上64位的消息长度(填充前)。这两步的作用是使消息长度恰好是512位的整数倍(算法的其余部分要求如此),同时确保不同的消息在填充后不相同。(2)然后设置四个32位变量,分不初始化为:A=0x01234567B=0x89abcdefC=0xfedcba98D=0x76543210它们称为链接变量(chainingvariable)。

(3)接着进行算法的主循环,循环的次数是消息中512位消息分组的数目。将上面四个变A、B、C、D复制到另外的变量中:A到a,B到b,C到c,D到d。主循环有四轮,每轮专门相拟。第一轮进行16次操作。每次操作对a,b,c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a,b,c或d中之一。最后用该结果取代a,b,c或d中之一。以一下是每次操作中用到的四个非线性函数(每轮一个)。F(X,Y,Z)=(X&Y)|((~X)&Z)G(X,Y,Z)=(X&Z)|(Y&(~Z))H(X,Y,Z)=

X^Y^ZI(X,Y,Z)=Y^(X|(~Z))(其中,“&”是按位与运算,“|”是按位或运算,“~”是按位取反运算,“^”是按位异或运算)这些函数是如此设计的:假如X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。函数F是按逐位方式操作:假如X,那么Y,否则Z。函数H是逐位奇偶操作符。设Mj表示消息的第j个子分组(0≤j≤15),“<<<s”表示循环左移s位,则四种操作为FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+Mj+ti)<<<s))GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,c,d)+Mj+ti)<<<s))HH(a,b,c,d,Mj,s,ti)表示a=b+((a+(H(b,c,d)+Mj+ti)<<<s))II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)<<<s))这四轮(64步)是:

第一轮FF(a,b,c,d,M0,7,0xd76aa478)

FF(d,a,b,c,M1,12,0xe8c7b756)

FF(c,d,a,b,M2,17,0x242070db)

FF(b,c,d,a,M3,22,0xc1bdceee)

FF(a,b,c,d,M4,7,0xf57c0faf)

FF(d,a,b,c,M5,12,0x4787c62a)

FF(c,d,a,b,M6,17,0xa8304613)

FF(b,c,d,a,M7,22,0xfd469501)

FF(a,b,c,d,M8,7,0x698098d8)

FF(d,a,b,c,M9,12,0x8b44f7af)

FF(c,d,a,b,M10,17,0xffff5bb1)

FF(b,c,d,a,M11,22,0x895cd7be)

FF(a,b,c,d,M12,7,0x6b901122)

FF(d,a,b,c,M13,12,0xfd987193)

FF(c,d,a,b,M14,17,0xa679438e)

FF(b,c,d,a,M15,22,0x49b40821)第二轮GG(a,b,c,d,M1,5,0xf61e2562)

GG(d,a,b,c,M6,9,0xc040b340)

GG(c,d,a,b,M11,14,0x265e5a51)

GG(b,c,d,a,M0,20,0xe9b6c7aa)

GG(a,b,c,d,M5,5,0xd62f105d)

GG(d,a,b,c,M10,9,0x02441453)

GG(c,d,a,b,M15,14,0xd8a1e681)

GG(b,c,d,a,M4,20,0xe7d3fbc8)

GG(a,b,c,d,M9,5,0x21e1cde6)

GG(d,a,b,c,M14,9,0xc33707d6)

GG(c,d,a,b,M3,14,0xf4d50d87)

GG(b,c,d,a,M8,20,0x455a14ed)

GG(a,b,c,d,M13,5,0xa9e3e905)

GG(d,a,b,c,M2,9,0xfcefa3f8)

GG(c,d,a,b,M7,14,0x676f02d9)

GG(b,c,d,a,M12,20,0x8d2a4c8a)第三轮HH(a,b,c,d,M5,4,0xfffa3942)

HH(d,a,b,c,M8,11,0x8771f681)

HH(c,d,a,b,M11,16,0x6d9d6122)

HH(b,c,d,a,M14,23,0xfde5380c)

HH(a,b,c,d,M1,4,0xa4beea44)

HH(d,a,b,c,M4,11,0x4bdecfa9)

HH(c,d,a,b,M7,16,0xf6bb4b60)

HH(b,c,d,a,M10,23,0xbebfbc70)

HH(a,b,c,d,M13,4,0x289b7ec6)

HH(d,a,b,c,M0,11,0xeaa127fa)

HH(c,d,a,b,M3,16,0xd4ef3085)

HH(b,c,d,a,M6,23,0x04881d05)

HH(a,b,c,d,M9,4,0xd9d4d039)

HH(d,a,b,c,M12,11,0xe6db99e5)

HH(c,d,a,b,M15,16,0x1fa27cf8)

HH(b,c,d,a,M2,23,0xc4ac5665)第四轮II(a,b,c,d,M0,6,0xf4292244)

II(d,a,b,c,M7,10,0x432aff97)

II(c,d,a,b,M14,15,0xab9423a7)

II(b,c,d,a,M5,21,0xfc93a039)

II(a,b,c,d,M12,6,0x655b59c3)

II(d,a,b,c,M3,10,0x8f0ccc92)

II(c,d,a,b,M10,15,0xffeff47d)

II(b,c,d,a,M1,21,0x85845dd1)

II(a,b,c,d,M8,6,0x6fa87e4f)

II(d,a,b,c,M15,10,0xfe2ce6e0)

II(c,d,a,b,M6,15,0xa3014314)

II(b,c,d,a,M13,21,0x4e0811a1)

II(a,b,c,d,M4,6,0xf7537e82)

II(d,a,b,c,M11,10,0xbd3af235)

II(c,d,a,b,M2,15,0x2ad7d2bb)

II(b,c,d,a,M9,21,0xeb86d391)其中,在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。(4)所有这些完成之后,将A,B,C,D分不加上a,b,c,d。然后用下一分组数据接着运行算法,最后的输出是A,B,C和D的级联。

4、MD5的安全性从安全的角度讲,MD5的输出为128位,若采纳纯强力攻击查找一个消息具有给定Hash值的计算困难性为2128,用每秒可试验1000000000个消息的计算机需时1.07×1022年。若采纳生日攻击法,查找有相同Hash值的两个消息需要试验264个消息,用每秒可试验1000000000个消息的计算机需时585年。2.2.4SHA-1散列算法安全哈希算法(SecureHashAlgorithm)要紧适用于数字签名标准(DigitalSignatureStandardDSS)里面定义的数字签名算法(DigitalSignatureAlgorithmDSA)。关于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,那个消息摘要能够用来验证数据的完整性。在传输的过程中,数据专门可能会发生变化,那么这时候就会产生不同的消息摘要。SHA-1有如下特性:不能够从消息摘要中复原信息;两个不同的消息可不能产生同样的消息摘要。运算符和符号下面的逻辑运算符都被运用于“字”(Word),S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论