对称加密
对称加密(英语:Symmetric-keyalgorithm)又称为对称密钥加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。实务上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系。
1、定义
需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。
所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。
因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。
2、工作原理
通常,对称加密(称为块密码)用于一次加密一个数据块。块密码(如RC2、DES、TripleDES和Rijndael)通过加密将n字节的输入块转换为加密字节的输出块。如果要加密或解密字节序列,必须逐块进行。由于n很小(对于RC2、DES和TripleDES,n=8字节;n=16;n=24;对于Rijndael,n=32),因此必须对大于n的数据值一次加密一个块。
基类库中提供的块密码类使用称作密码块链(CBC)的链模式,它使用一个密钥和一个初始化向量(IV)对数据执行加密转换。对于给定的私钥k,一个不使用初始化向量的简单块密码将把相同的明文输入块加密为同样的密文输出块。如果在明文流中有重复的块,那么在密文流中将存在重复的块。如果未经授权的用户知道有关明文块的结构的任何信息,就可以使用这些信息解密已知的密文块并有可能发现您的密钥。若要克服这个问题,可将上一个块中的信息混合到加密下一个块的过程中。这样,两个相同的明文块的输出就会不同。由于该技术使用上一个块加密下一个块,因此使用了一个IV来加密数据的第一个块。使用该系统,未经授权的用户有可能知道的公共消息标头将无法用于对密钥进行反向工程。
可以危及用此类型密码加密的数据的一个方法是,对每个可能的密钥执行穷举搜索。根据用于执行加密的密钥大小,即使使用最快的计算机执行这种搜索,也极其耗时,因此难以实施。使用较大的密钥大小将使解密更加困难。虽然从理论上说加密不会使对手无法检索加密的数据,但这确实极大增加了这样做的成本。如果执行彻底搜索来检索只在几天内有意义的数据需要花费三个月的时间,那么穷举搜索的方法是不实用的。
私钥加密的缺点是它假定双方已就密钥和IV达成协议,并且互相传达了密钥和IV的值。并且,密钥必须对未经授权的用户保密。由于存在这些问题,私钥加密通常与公钥加密一起使用,来秘密地传达密钥和IV的值。最早、最著名的保密密钥或对称密钥加密算法DES(DataEncryptionStandard)/DESede是由IBM公司在70年代发展起来的,并经*的加密标准筛选后,于1976年11月被美国*采用,DES随后被美国国家标准局和美国国家标准协会(AmericanNationalStandardInstitute,ANSI)承认。DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的"每轮"密钥值由56位的完整密钥得出来。
3、常见的对称加密算法
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES(DataEncryptionStandard)DES是一种对称加密(DataEncryptionStandard)算法,于1977年得到美国*的正式许可,是一种用56位密钥来加密64位数据的方法。一般密码长度为8个字节,其中56位加密密钥,每个第8位都用作奇偶校验。
DES算法一般有两个关键点,第一个是加密模式,第二个是数据补位,加密模式的主要意义就是,加密算法是按块进行加密的,例如DES,是64Bit一个块的进行加密,就是每次加密8个字节,因此每次输入八个字节的明文输出八个字节密文,如果是16个字节,那么分成两个块依次进行加密,问题就出现在这里,如果明文是1234567812345678,分块分别进行加密,那么加密的结果类似“C4132737962C519CC4132737962C519C”,可以看出明文的规律,这就是ECB加密模式,密文可以看出明文的规律;为了解决这个问题,有了其他的加密模式:CBC加密模式(密码分组连接),CFB加密模式(密码反馈模式),OFB加密模式(输出反馈模式)CBC是要求给一个初始化的向量,然后将每个输出与该向量作运算,并将运算的结果作为下一个加密块的初始化向量,CFB和OFB则不需要提供初始化向量,直接将密码或者输出作为初始化向量进行运算;这样就避免了明文的规律出现在密文中;当然缺点是解密时需要保证密文的正确性,如果网络传输时发生了一部分错误,则后面的解密结果就可能是错误的;(ECB模式仅影响传输错误的那个块。密码算法基本上都是分组(按快)进行加密的,如果密文长度不是刚刚好可以进行分组,这时只能进行填充。
3DES(TripleDES)
是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES与3DES的比较
AES(AdvancedEncryptionStandard)
高级加密标准,是下一代的加密算法标准,速度快,安全级别高;2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的AES。Rijndael是在1999年下半年,由研究员JoanDaemen和VincentRijmen创建的。AES正日益成为加密各种形式的电子数据的实际标准。美国标准与技术研究院(NIST)于2002年5月26日制定了新的高级加密标准(AES)规范。AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
4、优缺点
对称密码术的优点在于效率高(加/解密速度能达到数十兆/秒或更多),算法简单,系统开销小,适合加密大量数据。尽管对称密码术有一些很好的特性,但它也存在着明显的缺陷,包括:
l)进行安全通信前需要以安全方式进行密钥交换。这一步骤,在某种情况下是可行的,但在某些情况下会非常困难,甚至无法实现。
2)规模复杂。举例来说,A与B两人之间的密钥必须不同于A和C两人之间的密钥,否则给B的消息的安全性就会受到威胁。在有1000个用户的团体中,A需要保持至少999个密钥(更确切的说是1000个,如果她需要留一个密钥给他自己加密数据)。对于该团体中的其它用户,此种倩况同样存在。这样,这个团体一共需要将近50万个不同的密钥!推而广之,n个用户的团体需要N2/2个不同的密钥。
通过应用基于对称密码的中心服务结构,上述问题有所缓解。在这个体系中,团体中的任何一个用户与中心服务器(通常称作密钥分配中心)共享一个密钥。因而,需要存储的密钥数量基本上和团体的人数差不多,而且中心服务器也可以为以前互相不认识的用户充当“介绍人”。但是,这个与安全密切相关的中心服务器必须随时都是在线的,因为只要服务器一掉线,用户间的通信将不可能进行。这就意味着中心服务器是整个通信成败的关键和受攻击的焦点,也意味着它还是一个庞大组织通信服务的“瓶颈”。
推荐阅读