加密
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。
加密之所以安全的原因,并不在于加密解密算法的方法,而在于加密的密钥是绝对的隐藏。加密算法都是完全公开的,一方得到已加密的数据,就算知道加密算法,如果没有加密的密钥,也不能破解出被加密保护的信息。
加密的方式分为两种:对称加密和非对称加密。
对称加密
特点:对称加密,即使用相同的密钥来进行加密和解密。
优点:对称加密的优点是加密和解密速度快,适合大量加密的场景。
缺点:密钥不易维护,加密方和解密方需要约定并分配密钥,双方对密钥的保管和传输过程中一旦发生泄漏,安全性就会被打破。
常见的对称加密算法有以下几种:
- DES
- 3DES
- AES
非对称加密
特点:非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。私钥加密的数据只能由公钥解密,公钥加密的数据只能有私钥解密
好处:非对称加密在安全性上要更高,即使公钥和密文被截取,没有私钥也无法获取原始信息。
坏处:非对称加密算法的特点是算法强度复杂,使得加密解密的速度远远低于对称加密算法,因此不适用于数据量较大的情况。
常见的非对称加密算法有以下几种:
- RSA
- DSA
- ECDSA
HTTPS
HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。
HTTP 协议是没有加密过程的,数据以明文方式传输,因此其安全性较低,使用抓包软件可以轻易的获取到隐私的数据,篡改数据的中间人攻击也难以防御。
HTTPS 在 HTTP 基础上增加了 TSL 或 SSL 层,使用了对称加密和非对称加密两种加密方式来保证数据传输的安全性。
HTTPS = HTTP + 加密 + 认证 + 数据完整性保护
以下是 HTTPS 协议客户端与服务端的交互流程:
1、客户端向服务端发送请求
2、服务端将证书传输给客户端,证书中包含公钥信息,私钥在服务端保存
3.使用公钥加密客户端秘钥
4、客户端将加密后的随机码传输给服务端
5.使用私钥解密加密的秘钥
6、客户端与服务端通过随机码作为对称加密的密钥来进行加密传输
从流程中可以看出,加密方式使用对称加密和非对称加密的混合使用。对称加密的痛点是密钥传输有可能被窃听,导致加密变得不安全,所以用非对称加密传输对称加密的密钥,后续通信使用对称加密。
数据传输通信环节不使用公钥加密、私钥解密,因为非对称加密由于算法复杂效率低。
总结
HTTPS 中使用了对称加密和非对称加密的混合,使得数据传输变得更安全,但是并非所有场景都适用 HTTPS,受加密解密的通信步骤的增加和本身算法增加的机器负载影响,HTTPS 要比 HTTP 慢 2~100 倍,所以针对非敏感、隐私信息的数据传输场景使用 HTTP 才是一个更好的选择。