当前位置: 首页 > 科技观察

网络安全攻防:对称密码

时间:2023-03-22 15:52:27 科技观察

对称密码可分为分组密码(BlockCipher)和序列密码(StreamCipher)。分组密码通常以固定大小作为每次处理的基本单位,而序列密码以单位元素(一个字母或一位)作为基本处理单位。当然,当块长度为单位长度时,块密码也是序列码。分组密码是用明文消息编码表示的数字序列(简称明文数),分为长度为n的组(可以看作是长度为n的向量),每组变换为相等的-lengthnumbersunderthecontrolofkey输出一串数字(称为密文数字)。分组密码采用不随时间变化的固定变换,具有扩散和插入敏感性好等优点。分组密码的工作方式允许使用同一个分组密码密钥加密多个数据块,保证其安全性。块密码本身只能加密长度等于密码块长度的单个数据块。要加密可变长度数据,必须首先将数据分成一些单独的密码块。一般来说,最后一个数据块也需要扩展以匹配密码块大小的长度,并使用合适的填充。一种操作模式描述了加密每个数据块的过程,通常使用基于通常称为初始化向量(IV)的附加输入值的随机化,以保持数据的加密安全。下面介绍几种常用的分组密码工作模式。1、电子密码本(ECB)最简单的加密方式是电子密码本(ECB,ElectronicCodebook)模式。根据分组密码的分组大小,将待加密的报文分成若干个分组,每个分组独立加密,如图1所示。图1电子密码本方式的优点:实现简单,效率高;有利于并行计算;不会传输错误。缺点:不能隐藏明文模式,相同的明文产生相同的密文;可以对明文实施主动攻击。如图2所示,黑客获得账户C对应的密文段后,通过替换银行A发送给银行B的密文段,即可成功实施ECB密文重放攻击。图2电子密码本加密示例2.密码块链接(CBC)在CBC模式中,每个明文块在加密之前都与前一个密文块进行异或运算,即每个密文块都依赖于它前面的所有明文块。同时,为了保证每条消息的唯一性,在第一个块中需要一个初始化向量。加密过程如图3所示。图3CBC方式优点:不易被主动攻击,安全性优于ECB。它适用于传输长消息。它是SSL和IPSec安全协议的应用标准。缺点:不利于并行计算;存在误差传播效应;需要维护初始化向量IV。3.密码反馈(CFB)密码反馈(CFB,CipherFeedback)模式类似于CBC,可以将分组密码变成自同步流密码,工作过程也很相似。加密过程如图4所示。图4CFB方式的优点:明文方式隐藏;将分组密码转换为流方式,增强了安全强度;小于块的数据可以及时加密传输。缺点:不利于并行计算;存在误传效应,即一个明文单元损坏会影响多个单元;需要维持IV。分组密码有DES、IDEA、SAFER、Blowfish、Skipjack等,最新的国际标准算法是AES,之前一直使用DES/3DES算法。在介绍具体的分组加密算法之前,有必要了解一下分组密码中的一个核心变换——Feistel结构。大多数分组密码的结构本质上是基于Feistel网络结构。因此,了解Feistel密码的结构对于学习分组密码算法很有帮助。Feistel是区块加密过程中用于多次循环迭代的结构,可以有效提高安全性。在每一轮中,可以通过使用特殊函数从初始密钥派生的子密钥应用适当的转换。Feistel加密算法的输入将分组后的明文块分为左右两部分L和R,生成密钥序列K=(K1,K2,...,Kn),进行n轮迭代。迭代完成后,将左右两半合并在一起,产生最终的密文块。第i次迭代的函数为:Li=Ri?1Ri=Li?1+F(Ri?1,Ki)其中Ki为第i轮的子密钥,“+”表示异或运算,F表示圆函数.一般来说,每个轮密钥都不同,轮函数F也不同。替换过程完成后,交换左右两半数据。这个过程称为替换。Feistel网络加解密过程如图5所示。图5Feistel网络加解密过程因此,Feistel网络的安全性与以下参数有关。(1)群体规模。(2)密钥大小。(3)子密钥生成算法:算法复杂度越高,密码分析难度越大(Feistel网络结构本身就是加密算法或其重要组成部分,根据Kerchhoffs准则,不需要保密)。(4)轮子数量n:单一的轮子结构远远不能保证安全,一般设置为16个轮子。(5)轮函数F:结构越复杂,越难实现分析。4.块加密算法DESDES算法是加密体系中的一种对称加密体系,又称美国数据加密标准。是美国IBM公司于1972年开发的一种对称加密算法,明文按64位分组,密钥长度为64位,密钥实际上是56位参与DES运算(第8位、第16位,第24,32,40,48,56,64位为校验位,使得每个密钥有奇数个密钥1)分组明文组和56位密钥组成密文组的加密方式为逐位替换或交换。DES算法具有极高的安全性。到目前为止,除了用穷举搜索法攻击DES算法外,没有发现更有效的方法。而一个56位长的密钥的穷举空间是256,这意味着如果一台计算机每秒检测一百万个密钥,则需要将近2285年才能搜索完所有的密钥。可见,这是很难做到的。然而,这并不意味着DES是不可破解的。事实上,随着硬件技术和互联网的发展,破解的可能性越来越大,所需时间也越来越少。使用专门设计的硬件进行数小时的并行处理。为了克服DES密钥空间小的缺点,研究人员提出了三重DES的变形方法,即使用两个总长度为128位的密钥,只是增加了穷举密钥的计算复杂度,如图在图6中。图6三重DES的改造5.块加密标准AES1997年4月15日,美国ANSI发起了AES(高级加密标准)的征集,并为此成立了AES工作组。1997年9月12日,美国联邦公报宣布正式征集AES候选算法。AES的基本要求是比三重DES更快,至少和三重DES一样安全,数据包长度为128位,密钥长度为128/192/256位。1998年8月12日,AES的15个候选算法在第一届AES候选者会议(FirstAESCandidateConference)上公布,受到了全世界机构和个人的攻击和评论。1999年3月,在第二届AES候选者会议(SecondAESCandidateConference)上,全球各密码学机构和个人对候选算法的分析结果进行讨论后,从15个候选算法中选出5个,即RC6、Rijndael、SERPENT、双鱼和火星。2000年4月13日至14日,召开了第三届AES候选者会议(ThirdAESCandidateConference),继续讨论最后的5个候选算法。2000年10月2日,NIST宣布Rijndael为新的AES。经过3年多的讨论,Rijndael终于脱颖而出。Rijndael由比利时的JoanDaemen和VincentRijmen设计。AES算法基于排列和置换运算。排列是数据的重新排列,排列是将一个数据单元替换为另一个数据单元。AES使用几种不同的方法来执行排列和排列操作。AES是一种迭代的对称密钥块密码,可以使用128、192和256位密钥,并使用128位(16B)块加密和解密数据。与使用密钥对的公钥密码术不同,对称密钥密码术使用相同的密钥来加密和解密数据。分组密码返回的加密数据与输入数据具有相同的位数。迭代加密采用循环结构,其中输入数据被反复排列和替换,如图7所示。图7AES算法设计6.序列密码序列密码是一种随时间变化的加密变换。具有转换速度快、错误传播低、硬件实现电路更简单等优点;它的缺点是对低扩散、插入或修饰不敏感。性别。时序密码涉及大量的理论知识,人们提出了许多设计原则,并对其进行了广泛的分析。但很多研究成果并没有完全公开,因为序列密码目前更多地应用于军事、外交等机密部门。目前公开的序列密码算法主要有RC4、SEAL等。1949年,香农证明了只有一次一密的加密系统是绝对安全的,有力地支持了序列密码技术的研究。序列密码方案的发展是一种模仿一次一密系统的尝试,或者说“一次一密”的密码方案是序列密码的雏形。如果序列密码使用与消息流长度相同的真正随机密钥流,那么此时的序列密码就是一次性密码系统(One-TimePassword)。如果可以通过某种方式产生一个随机序列(密钥流),而这个序列是由密钥决定的,那么就可以使用这样的序列进行加密,即密钥和明文用连续的符号或二进制来表示,相应地加密,加密和解密时一次处理明文中的一位或几位。序列密码加解密的基本框架如图8所示。图8Sequencecipher加解密明文序列:m=m1m2m3...密钥序列:k=k1k2k3...密文序列:c=c1c2c3...加密变换:ci=ki?mi(i=1,2,3...)解密变换:mi=ki?ci(i=1,2,3...)其中,密钥序列k1k2k3...由主密钥K通过密钥流生成器生成。密钥流生成器的核心是伪随机数生成器,密钥K是随机数生成器的种子。应用最广泛的随机数发生器是线性反馈移位寄存器(LFSR,LinearFeedbackShiftRegister)。给定先前状态的输出,LFSR将此输出的线性函数重新用作输入的移位寄存器。异或运算是最常见的单比特线性函数:将寄存器的某些比特异或作为输入,然后将寄存器中的比特作为一个整体进行移位。LFSR可以生成一个长周期的二进制序列来形成一个安全的流密钥。当周期无限长时,可构成上述OTP一次一密系统,OTP是一种理想的安全流密码系统。一次一密系统应用面临的实际挑战如下。(1)密钥分发:发送方需要将密钥发送给接收方,以便接收方解密。OTP密钥的长度与明文的长度相同。如果能安全有效地发送密钥,为什么不直接用这种方式发送明文呢。(2)密钥存储:OTP相当于将“保存明文”的问题转化为“保存一个与明文长度相同的密钥”的问题。(3)密钥复用:OTP不能复用过去使用过的随机比特序列,否则在密钥泄露前的所有通信都将被解密,这在密码学中称为前向安全。.(4)密钥同步:当明文很长时,密钥会等长。如果密钥同步稍有差错,所有后续的密文都无法解密,这有时被称为后向安全(BackwardSecurity)。(5)密钥生成:OTP需要生成大量的随机数。计算机程序产生的伪随机数往往不能满足需要,而不可再现的真随机数的产生则极其困难。因此,在实际应用中,流密码的安全性主要取决于主密钥K的保密性和密钥流生成器的可靠性。密钥序列生成算法最为关键,其生成的密钥序列必须具有伪随机性。伪随机性主要体现在两个方面。一方面,密钥序列是不可预测的,这将使攻击者难以破解密文;另一方面,按键顺序是可控的。加密和解密双方使用相同的种子密钥生成完全相同的密钥序列。如果密钥序列是完全随机的,则意味着密钥序列生成算法的结果是不可控的。在这种情况下,无法通过解密恢复明文。此外,加解密双方还必须保持密钥序列的准确同步,这是解密恢复明文的重要条件。序列密码的优点是安全性高,明文中每一位的加密都是独立进行的,与明文的其他部分无关。另外,串行密码的加密速度快,实时性好;缺点是键序必须严格同步,在实际应用中往往需要付出高昂的代价。7.RC4序列密码RC4是RSASecurity的RonRivest于1987年设计的一种高速、简洁的流密码,广泛应用于常见协议,包括无线网络安全算法、SSL/TLS、HTTPS等安全协议。RC4加密分为两步。(1)Key-SchedulingAlgorithm(KSA)密钥调度算法,使用变长加密密钥生成密钥流生成器的初始状态。(2)伪随机生成算法(PRGA)伪随机子密码生成算法根据初始状态生成密钥流,区别于明文或生成密文。RC4使用异或运算。一旦子密钥序列重复,密文就有可能被破解。存在一些弱键,使得子键序列在不到100B的范围内重复。如果存在部分重复,则在不到100,000字节的范围内会出现完全重复。因此,在使用RC4算法时,必须对加密密钥进行安全测试,避免出现弱密钥问题。