对称加密算法是一种隐藏数据含义的数据变换机制,该算法提供两个函数:数据加密和数据解密。

它们之所以称为对称的,是因为消息发送方和接收方必须使用相同的密钥来加密和解密数据。

加密函数将数据和密钥值作为输入,生成并输出与输入消息大致等长的随机字节序列;解密函数与加密函数同样重要,它以加密函数输出的随机字节序列和加密函数使用的密钥作为输入,生成原始数据。

“对称”一词是指,要成功地解密数据,必须使用用于数据加密的密钥值来解密。

对称加密算法旨在保护数据的机密性。例如,如果Alice要向Bob发送一份机密文档,可以使用电子邮件;然而电子邮件的隐私性和明信片一样差。为防止未知方打开该文档,Ali ce可以使用对称加密算法和适当的密钥来加密数据,然后通过电子邮件将其发送出去。在邮件发送至Bob的过程中任何打开邮件的人看到的只是随机字节序列,而不是机密文档。Bob收到加密邮件后,将数据和Alice使用的密钥值输入Alice使用的对称加密算法的解密函数,该函数将输出原始数据,即机密文档。

对称加密算法介绍

最简单的对称密钥加密算法凯撒加密算法

一种简单的对称密钥加密算法是旋转加密算法,也称为凯撒加密算法。这种算法是这样加密数据的:将每个字母替换为其后的第n个字母。例如,如果n(广义“密钥值”)等于3, 那么用字母D代替字母A,用字母E代替字母B,用字母F代替字母C,依此类推。对于字母表末尾的字母,则绕回到开头,用字母Z代替字母W,字母A代替字母X,字母B代替字母Y,字母C代 替字母Z等。

因此,当使用密钥值为7的旋转加密算法来加密明文消息“WINNERS USE JAVA” 时,密文为“DPUULYZ BZL QHCH”。即使没有计算机协助,攻击者也能轻易破解旋转加密算 法,因为只需尝试所有可能的密钥值(只有26种),便能破解密加密数据。

然而,也有很多经过实践检验的对称加密算法可供选择,如DES、IDEA、AES(Rijndael )、Twofish和RC2等。对于对称加密算法,和任何加密算法一样,明智的开发人员会选择一种经实践检验的算法,而不是从头开发。经实践检验的算法都经过大量的详 细审查,如Rijndael和Twofish算法,有很多算法因为漏洞和弱点而被淘汰了[RSA02]。

对称加密算法有两种:块加密算法和流加密算法。

块加密算法每次加密一个数据块(通常 为8或16字节);流加密算法是相对较新的算法,通常比块加密算法快。但块加密算法更常用 ,这可能是由于它们已使用了较长时间,可免费使用的算法很多[RSA02]。块加密算法的例子有DES、IDEA、AES(Rijindael)和Blowfish;流加密算法的例子有RC4和WAKE。由于与SSL 一起用于所有Web浏览器中,Ron Rivest的RC4是应用最广泛的流加密算法,但要采用该算法 必须有RSA公司的许可证。在某些模式下,块加密算法能模拟流加密算法的行为。

高级加密标准(Advanced Encryption Standard,AES)

在对称加密算法中,对AES应特别予以关注,因为它已取代DES成为美国政府认可的对称 加密算法标准。AES算法称为“Rijndael”,其发明者是比利时密码学家Joan Daemen和Vinc ent Rijmen,美国国家标准和技术研究所(NIST)从21种加密算法中将其挑选出来。

自1977年以来,DES一直都是美国联邦政府加密敏感信息的标准方法[AES01]。但是随着计算能力的不断提高,DES也逐渐滑向极易攻破的危险境地。1987年,美国政府启动了旨在标准化 加密算法的Capstone项目,其中还包括称为Skipjack的算法,但由于该算法是保密的,密码 学家不能分析其弱点,鉴于此以及其他一些情况[RSA03]),虽然Skipjack算法最终于199 8年公开发表了,但还是未能得到广泛普及[Schneier04]。

1997年,NIST宣布将DES的替代算法命名为AES,并将从公开参选的多种算法中甄选,任何人都可以递交参选算法,任何算法都将公诸于众,并将根据多种评判标准(包括运算速度 和操作的简易度)来决出胜出者。2000年10月2日,Rijndael算法击败决赛对手Bruce Schne ier的Twofish算法和Ron Rivest的RC6算法脱颖而出。Rijndael是一种块加密算法,其密钥长 度为128、192或256位,块长度为128、192或256位。

AES竞赛是计算机安全领域中一项里程碑式的活动,它体现了对一项重要概念的认同,即 从长远看,公开审查的加密算法比秘密开发的算法更加安全。