什么是对称加密(Symmetric-Key Cryptography)?
对称加密是采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
对于明文plaintext,和对称秘钥key
加密过程E(plaintext,key)=ciphertext
解密过程D(ciphertext,key)=plaintext
对称加密算法
对称加密的分为分组密码(block cipher)和流密码(stream cipher)两种类型。本文只介绍分组密码。
分组密码
对称加密的分为分组密码(block cipher)和流密码(stream cipher)两种类型。本文只介绍分组密码。
分组密码是每次只能处理特定长度的一块(block)数据的一类加解密算法。AES就是一种分组密码算法。AES加密算法每次可以加密的块长度是128位(bit)。
分组密码的模式
ECB模式
使用AES加密算法ECB模式,每次能加密128位数据,即16个字节。如果要加密48个字节内容,我们需要把数据分为3组,每组16个字节,分别为P1、P2、P3。P1、P2、P3加密后形成的秘文分别为C1、C2、C3,我们把C1、C2、C3依次拼接起来就成为最终的加密结果。
ECB模式重要特征是:一段消息若有相同的明文分组,则秘文中也将出现相同的秘文分组;每个分组独立且前后文无关,直接增加或删除一个分组不影响其它分组解密过程的正确性。
ECB模式只适合加密较少的数据,比如秘钥,对于长的消息ECB可能不安全,攻击者可以重排或者替换秘文块进行攻击。
CBC模式
CBC模式加密算法的输入是上一个秘文的下一个明文组的异或“⊕”。
CBC模式加密结果与前文相关,有利于提高加密结果的随机性。一般情况下长消息加密可采用CBC。
其他分组密码算法
DES(Data Encrytion Standard)算法,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。
明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
DES算法已被破解,目前已经没有企业使用这种对称加密算法了。