对称加密算法
理论上说对称加密算法,才是我们真正说的加密算法。所谓对称加密算法,通俗的讲,就是使用密钥加密,再使用密钥解密的加密算法的总称。也就是平时我们说到加密算法,脑子里第一个跳出来的加密方式一般都是对称加密算法。上面将的base64其实也是一种“对称加密算法”,只是其密钥公开了而已。
通讯模型
同样的场景:客户端要将数据data发给服务器端。
客户端对使用密钥key,对数据data加密,生成加密串C,通过网络将C传输为服务器端,服务器端,使用密钥key对C解密,获取数据data,做自己的业务逻辑。
简单直接的一种加密方式,与摘要算法不同的地方是,加密过程其是双向的,C由data加密而来,同样可以解密获得data,前提条件是加密解密时的key相同。而摘要算法无法从C解密得到data。
加密过程简单,那么其在对抗通信中面临的四种威胁的作用有怎么样呢:
- 截获:这么在网络中传输的内容为密文,即使攻击者截获了报文,由于没有密钥,也无法解析。所以,这次对称加密算法在防范截获威胁方面有这很大的优势。
- 中断:和摘要算法一样,无法防范。
- 篡改:由于数据是密文传输的,攻击者,无法解析,更无法伪造了。所以,可以防范。
- 伪造:对于数据的伪造,和摘要算法一样,可以防范,但对于伪造的发送方,对称加密算法和摘要算法一样,比较的无力。
截获 | 中断 | 篡改 | 伪造 |
O | X | O | X |
算法优缺点
对称加密算法有着很多的好处,比较加密速度快,算法简单,安全模型的安全性较高等,但在正式中使用时,却不得不解决一个问题:密钥如何传递。如果将密钥在网络中传递,势必有被截获的风险。由于这个问题的存在,导致单纯的使用对称加密算法的通讯模型,并不是一个通用的模型,只在一些特殊的场合中使用,例如:客户端/服务器端为同一端点,或者线下合作的场景——双方将密钥写入合同中,线下传递。
不过对于密钥,还是建议经常的更换,密钥的破解是一个耗时的过程,长时间不变的密钥,无遗对攻击者创造了破解的机会,当有一天攻击者破解了密钥,灭顶之灾也就来到。
说了这么多的对称加密算法,还没有说对称加密算法有哪些,比较常用的对称加密算法有DES/3DES/AES/IDEA/RC4/RC2等。其加密强度,可以从其支持的密钥长度看出,密钥越长,加密强度越好;同时,加密过程越慢。
对称加密算法 | 密钥长度 |
DES | 56 |
3DES | 112/168 |
AES | 128/192/256 |
IDEA | 128 |
RC2 | 可变密钥长度,通过调整长度控制加密强度 |
可变密钥长度,通过调整长度控制加密强度 |