1. HTTP 和 HTTPS
- HTTP是明文传输,敏感信息容易被中间劫持。
- HTTPS = HTTP + 加密,即使传输的数据被劫持了也无法解密。
2. 加密方式:对称加密,非对称加密 - 对称加密
用同一个key加密解密。 - 非对称加密
一对key(公钥私钥),公钥加密,私钥解密(or反过来)。
具体实现:
1.客户端发起连接:你访问一个HTTPS网站时,浏览器向服务器发起连接请求。
2.服务器回应并发送公钥:服务器收到请求后,返回自己的数字证书,证书中包含服务器的公钥。
3.客户端生成对称密钥:客户端生成一个随机的对称加密的会话密钥,接下来会用它加密传输的数据。
4.客户端加密对称密钥并发送给服务器:客户端用服务器的公钥对生成的对称密钥进行加密,并将其发送给服务器。只有服务器的私钥才能解密。
5.服务期解密对称密钥。
6.握手完成,客户端和服务器使用对称密钥进行通信。
7.结束连接:通信结束后,双方销毁会话秘钥。
3. 证书
中间人攻击:中间人有一对key和pubkey,他在服务器给客户端传输pubkey的时候替换成自己的pubkey导致后续他能够对数据进行劫持。
服务端向第三方机构申请证书,浏览器要支持证书的验证。