HTTPS比HTTP协议多了加密的过程,因为HTTP在网络上传输是明文传输,明文数据会经过中间代理服务器、路由器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了,因此需要HTTPS协议进行加密。
加密算法总体来说可以分为对称加密和非对称加密
对称加密
对称加密意思就是 客户端与服务器段拥有相同的密钥K,客户端发送时用K加密,服务器端用K解密。如果由服务器生成一个密钥并传输给浏览器,那在这个传输过程中密钥被别人劫持到手了,之后他就能用密钥解开双方传输的任何内容了。因此对称加密不行。
非对称加密
简单说就是有两把密钥,通常一把叫做公钥、一把叫私钥,用公钥加密的内容必须用私钥才能解开,同样,私钥加密的内容只有公钥能解开。
1、服务器先把公钥以明文方式传输给浏览器,之后浏览器向服务器传数据前都先用这个公钥加密好再传,这条数据的安全似乎可以保障了!因为只有服务器有相应的私钥能解开公钥加密的数据。但是这种方式只是看起来安全(后文解释中间人攻击),也就是只能保证客户端向服务器段发送的内容不会被窃取,因为公钥加密的内容只有私钥可以解密,而私钥只有服务器端才有。
对称加密+非对称加密
- 某服务器拥有用于非对称加密的公钥A、私钥A’。
- 浏览器向服务器请求,服务器把公钥A明文给传输浏览器。
- 浏览器随机生成一个用于对称加密的密钥X,用公钥A加密后传给服务器。
- 服务器拿到后用私钥A’解密得到密钥X。
- 这样双方就都拥有密钥X了,且别人无法知道它。之后双方所有数据都通过密钥X加密解密即可。
但是