理论教育 信息安全基础:对称块加密算法

信息安全基础:对称块加密算法

时间:2023-11-24 理论教育 版权反馈
【摘要】:最重要的对称加密算法—— DES、3DES和AES,都是块密码。图2-2DES加密的轮运算DES算法中的轮函数f比较复杂,包括数据的扩展、压缩、替代等运算。所以,56 bit密钥已使DES算法不再安全。3DES使用2个或3个不同的密钥,重复执行3次基本的DES算法。除了这些一般性的要求外,NIST还规定AES必须是块长度为128 bit的对称块密码,并支持128 bit、192 bit和256 bit的密钥长度。

信息安全基础:对称块加密算法

使用最广泛的对称加密算法是块密码(Block Cipher)。块密码以定长的块处理输入的明文,对每一个明文块产生一个等长的密文块。它将较长的明文划分为一系列定长的块。最重要的对称加密算法—— DES、3DES和AES,都是块密码。下面简单介绍一下这几个算法。

1. DES(Data Encryption Standard)

直到最近,使用最广泛的加密方案还是基于DES。DES在1977年被美国国家标准局,即现在的美国国家标准和技术研究所(NIST),采纳为联邦信息处理标准。

DES算法描述如下:采用64 bit的明文块和56 bit的密钥;较长的明文被分成多个64 bit的明文块;对每一个明文块,采用同样的处理,产生一个64 bit的密文块,如图2-2所示。这个处理包括16轮相似的操作。由最初的56 bit密钥产生16个子密钥(图中的K1、Ki、K16),分别用在每一轮操作中。

对每一个明文块的具体操作描述如下:对明文块进行“初始换位”(按照确定的规则对64 bit二进制数重新排序),然后分成等长的两个部分,L0和R0。这两部分数据经过16轮相似的操作后组合成密文块。对这个密文块进行“逆初始换位”后,就得到明文块加密后的密文块。

第i轮操作的输入Li-1和Ri-1来自上轮操作的输出。每轮操作都是相似的:当前数据的右半部分和对应的子密钥作为轮函数f的输入,轮函数f的输出与当前数据的左半部分相异或(XOR),其结果作为下一轮数据的右半部分;当前数据的右半部分直接作为下一轮的左半部分。

图2-2 DES加密的轮运算

DES算法中的轮函数f比较复杂,包括数据的扩展、压缩、替代等运算。这里不讨论它。

DES算法的解密过程本质上和加密过程是一样的。规则如下:将密文作为DES算法的输入,只是逆序使用子密钥Ki。也就是说,K16用于第1轮,K15用于第2轮,……,直到K1用于第16轮即最后一轮。

人们对DES的强度的担忧包括两个方面:一是算法自身是否安全,二是所使用的56 bit密钥是否太短。前者关注利用DES算法的特点对它进行密码分析的可能性。多年来,人们已进行无数次的尝试,试图发现并利用DES算法中存在的漏洞,DES也因此成为被研究的最深入的加密算法。尽管人们采用各种方法研究DES,至今还没有任何人报告DES存在致命的漏洞。

DES使用56 bit的密钥是它不再安全的主要因素。56 bit密钥共有256种可能,大约有7.2×1016个密钥。考虑到现在商用处理器的速度,这个密钥空间是严重不足的。当然,这是因56 bit的密钥长度过短造成的。来自希捷科技公司的一篇文章指出,在现今的多核计算机上,每秒尝试10亿(109)个密钥组合是可能的。而Intel(英特尔)公司证实了这一点。Intel和AMD(超微)公司现在提供了基于硬件的指令来加速AES的运行。在当前Intel多核机器上进行的多次DES加密测试,已经实现了每秒5亿次的加密运算。另外一个最近的分析表明,使用现在的超级计算机技术,每秒执行1013次的DES加密也是可能的。

基于上述研究结论推导出的结果表明,对于密钥长度为56 bit的DES算法,一台个人计算机可以在一年内找到它的密钥;如果多台个人计算机并行工作,所需时间会大大缩短。今天的超级计算机应该能够在大约1 h内找到DES的密钥。所以,56 bit密钥已使DES算法不再安全。不过,128 bit或更长的密钥能够很好地抗击简单的蛮力攻击。即使我们设法将破解速度提高1012倍,破解一个使用128 bit密钥的加密算法仍会需要100 000年的时间。(www.daowen.com)

2. 3DES(Triple DES)

图2-3 3DES的加密和解密

3DES的使用延长了DES的生命。3DES使用2个或3个不同的密钥,重复执行3次基本的DES算法。这使得3DES算法的密钥长度达到了112 bit或168 bit。为了与早期的DES算法兼容,3DES加密时采用加密-解密-加密的顺序,解密时正好相反。如图2-3所示。当令K1= K3,密钥长度为112 bit。 3DES有两个优点确保了它在未来几年里的广泛应用。首先,它的密钥长度可达168 bit,这让它能够克服DES所面临的蛮力攻击问题。其次,3DES底层的加密算法与DES是一样的。该算法在较长时间内受到比任何其他加密算法都更严格的审查,并且,除蛮力攻击外,没有发现任何基于该算法的有效密码分析攻击。因此,3DES能够有效抵御密码分析攻击。如果安全性是唯一的考虑因素,那么3DES将成为未来几十年标准化加密算法的合适选择。

3DES算法的主要缺点是其软件实现的速度比较慢。最初的DES是为20世纪70年代的硬件实现设计的,因此不适合产生高效的软件代码。3DES因为需要执行3遍和DES一样的计算,所以其执行速度比较慢。3DES的另一个缺点,是它使用和DES一样64 bit的块。出于效率和安全性的原因,它的块长度应该更大一些。

3. AES(Advanced Encryption Standard)

因为3DES存在的缺点,它不适合长期使用。作为替代,NIST在1997年公开征集一种新的高级加密标准(AES),要求其具有与3DES相当或更好的安全强度,以及显著提高的效率。除了这些一般性的要求外,NIST还规定AES必须是块长度为128 bit的对称块密码,并支持128 bit、192 bit和256 bit的密钥长度。评估标准包括安全性、计算效率、内存需求、硬件和软件的适用性及灵活性。第1轮评估通过了15个算法,第2轮将其缩小为5个。2001年11月NIST完成了评估过程并发布了最终标准,选择Rijndael作为AES算法。AES现已广泛用于商业产品中。

AES并没有采用与DES类似的结构,其加密过程采用了如图2-4所示的结构。AES有4个基本操作:字节替换、行移位、列混合和轮密钥加。在AES标准中,128 bit的明文块被描 述为一个字节矩阵。每元素为一个字节。每一个基本操作都是在矩阵上进行的。同样地,密钥也被描述为字节矩阵。两类矩阵中的字节都按列排序。比如,对于128 bit的明文块,其前4 Byte占据矩阵的第1列,接着的4 Byte占据矩阵的第2列,以此类推。密钥K被扩展为一系列密钥字:每个密钥字有4 Byte;如果是128 bit密钥,则被扩展成44个密钥字。图2-4中的w[0,3]、w[4,7]等就是密钥字。

图2-4 AES加密和解密过程

AES的4个基本操作中,字节替代使用一个被称为S盒的表对字节矩阵中的元素进行逐字节替换,行移位对字节矩阵中同一行内的元素在当前行内按规定进行移动,列混合根据同一列内的所有元素的值重新计算它们的值,轮密钥加简单地将当前的字节矩阵与一部分扩展密钥进行按位异或(XOR)。字节替代、行移位、列混合都是可逆操作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈