在信息的传输过程中,存在两个问题:

  1. 防泄漏:关键信息明文传输,容易被第三方拦截
  2. 防篡改:防止第三方拦截后,对信息进行篡改

其对应的解决办法就是加密和数字签名。

加密算法

当我们需要把一段信息传输给别人,又不希望其他人看到的时候,就会想到对信息进行加密,把信息加密的方法就是加密算法,分为对称加密和非对称加密。

对称加密

加密和解密都是使用同一个密钥。

常见的对称加密算法有 DES、3DES、AES、RC2、RC4、RC5和Blowfish等。

AES 的意思是 “高级加密标准”(Advanced Encryption Standard),密钥长度可以是 128、192 或 256。它是 DES 算法的替代者,安全强度很高,性能也很好,而且有的硬件还会做特殊优化,所以非常流行,是应用最广泛的对称加密算法。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4f12ae37-6669-4355-87a1-99a162425715/Untitled.png

ChaCha20 是 Google 设计的另一种加密算法,密钥长度固定为 256 位,纯软件运行性能要超过 AES

对称加密优缺点如下:

非对称加密

加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。

常用的算法有比如 DH、DSA、RSA、ECC 等。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/aa3898e5-5a49-4dab-8d14-245767b15f20/Untitled.png

比起 RSA,ECC 在安全强度和性能上都有明显的优势。160 位的 ECC 相当于 1024 位的 RSA,而 224 位的 ECC 则相当于 2048 位的 RSA。因为密钥短,所以相应的计算量、消耗的内存和带宽也就少,加密解密的性能就上去了,对于现在的移动互联网非常有吸引力。