HTTP、HTTPS 协议
HTTP 协议
HTTP(Hyper Text Transfer Protocol,超文本传输协议),是一种基于 TCP/IP 的应用层通信协议,这个协议详细规定了浏览器和万维网之间互相通信的规则。
HTTP 协议通过请求和响应的方式,在客户端和服务端之间进行通信。
HTTP 协议的信息传输完全以明文方式,不做任何加密,不够安全。
由于传输信息是明文,这个信息有可能被某个中间人恶意拦截甚至篡改。这种行为就是中间人攻击。
可以提前约定一种对称加密方式,并且约定一个随机生成的密钥。后续通信中,信息发送方都使用密钥对信息加密,而信息接收方通过同样的密钥对信息解密。但是第一次约定加密方式和密钥的通信仍然是明文,如果第一次通信就被拦截了,那么密钥就会泄露给中间人,中间人仍然可以解密后续所有的通信内容。
这时可以使用非对称加密,为密钥的传输做一层额外的保护。非对称加密的一组密钥对中,包含一个公钥和一个私钥。明文既可以用公钥加密,用私钥解密,也可以用私钥加密,用公钥解密。具体做法是:
- A 向 B 发起通信请求
- B 将自己的公钥 key1 发给 A
- A 接收到 key1 后,生成一个用于对称加密的密钥 key2,用 key1 将 key2 进行加密,发送给 B
- B 用自己的私钥解开了自己的公钥 key1,获得了 key2 的内容