对称加密与非对称加密

2022-04-06  本文已影响0人  Drew_MyINTYRE

按照密钥的使用方式,加密可以分为两大类:对称加密和非对称加密。

对称加密 很好理解,就是指加密和解密时使用的密钥都是同一个,是 对称 的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性。

TLS 里有非常多的对称加密算法可供选择,前常用的只有 AES 和 ChaCha20。

对称算法还有一个 分组模式 的概念,它可以让算法用 固定长度密钥 加密 任意长度明文,把 小秘密(即密钥)转化为 大秘密(即密文)。

比如,AES128-GCM,意思是密钥长度为 128 位的 AES 算法,使用的分组模式是 GCM。

非对称加密 有两个密钥,一个叫 公钥(public key),一个叫 私钥(private key)。两个密钥是不同的,不对称,公钥可以公开给任何人使用,而私钥必须严格保密。

公钥和私钥有个特别的 单向 性,虽然都可以用来加密解密,但公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密。

非对称加密算法的设计要比对称算法难得多,在 TLS 里只有很少的几种,RSA 可能是其中最著名的一个,几乎可以说是非对称加密的代名词,它的安全性基于“整数分解”的数学难题,使用两个超大素数的乘积作为生成密钥的材料,想要从公钥推算出私钥是非常困难的。

看到这里,你是不是认为可以抛弃对称加密,只用非对称加密来实现机密性呢?很遗憾,虽然非对称加密没有 密钥交换 的问题,但因为它们都是基于复杂的数学难题,运算速度很慢,即使是 ECC 也要比 AES 差上好几个数量级。如果仅用非对称加密,虽然保证了安全,但通信速度有如乌龟、蜗牛,实用性就变成了零。

对称加密看上去好像完美地实现了机密性,但其中有一个很大的问题:如何把密钥安全地传递给对方,术语叫 密钥交换

那么,是不是能够把对称加密和非对称加密结合起来呢,两者互相取长补短,即能高效地加密解密,又能安全地密钥交换。现在 TLS 里使用的混合加密方式,其实说穿了也很简单:

这样混合加密就解决了对称加密算法的密钥交换问题,而且安全和性能兼顾,完美地实现了机密性。

小结:

在混合加密中用到了公钥加密,因为只能由私钥解密。那么反过来,私钥加密后任何人都可以用公钥解密,这有什么用呢?

公钥的传输必须使用证书,把公钥和持有者身份绑在一起,否则就会有信任问题,容易被别人冒充。私钥加密的作用是签名,实现身份认证而不是数据保密,签名是公开的,所以不存在安全问题。

上一篇下一篇

猜你喜欢

热点阅读