https加密流程
https是一种加密传输协议,基于非对称加密算法和对称加密算法的协作使用。
1.Https对称加密
服务器每次发送真实数据前,会先生成一把密钥传输给客户端,服务器给客户端发送的真实数据会实现用这把密钥进行加密,客户端收到加密数据后再用密钥进行解密。(客户端给服务器发送数据同理)
图一.Https对称加密
2.单一使用对称加密可能产生的问题
1.拦截客户端报文,伪造密钥
当客户端初次向服务器请求密钥时,报文可能被黑客截获,黑客伪装服务器向客户端返回一个黑客生成的密钥,当客户端使用该虚假密钥发送报文时,黑客就可以解密客户端发送的报文信息。
2.拦截服务器报文,截获密钥
当客户端初次向服务器请求密钥时,服务器返回密钥报文,中途被黑客截获,获得密钥信息,当客户端发送加密报文给服务器或者服务器返回加密报文时都可能被截获报文信息并解密。
3.Https非对称加密
客户端和服务器都有两把密钥,一把公钥和私钥(公钥加密的数据只有私钥才能解密,私钥加密的数据只有公钥才能解密),客户端在给服务器发送真实数据前,先用服务器明文传输给客户端的公钥进行加密,服务器收到后用自己的私钥进行解密,反之同理。
4.单一使用非对称加密可能产生的问题
1.拦截客户端报文,伪造公钥
当客户端初次向服务器请求密钥时,服务器返回公钥报文,中途被黑客截获,并且黑客修改报文中的公钥信息为黑客生成的公钥。当客户端发送使用黑客虚假公钥加密的报文给服务器时,可能被黑客截获报文信息并且用黑客私钥解密。
2.拦截服务端报文,伪造公钥
当客户端初次向服务器请求密钥时,服务器返回公钥报文,中途被黑客截获,并且黑客修改报文中的公钥信息为黑客生成的公钥。当客户端发送使用黑客虚假公钥加密的报文给服务器时,可能被黑客截获报文信息并用黑客私钥解密。
基于上述分析,我们知道无论是单一对称加密还是单一非对称加密,都会存在传输的信息被截获并被解密的风险,那么我们有什么办法能规避这些风险呢?没错,可以采用采用非对称加密+对称加密传输(以非对称加密的方式传输对称加密密钥)。
图二.Https对称加密+非对称加密传输
5.Https数字证书
核心在于证明客户端收到的公钥是属于服务器的,解决这个办法是使用数字证书(即找到一个大家都认可的认证中心CA)。
服务器在给客户端传输公钥的工程中,会将公钥+服务器个人信息通过hash算法生成信息摘要,为防止信息摘要被掉包,服务器会用CA提供的密钥对信息摘要加密形成数字签名。最后还会将没有进行hash算法计算的服务器个人信息+公钥和数字签名合并在一起形成数字证书。
Https加密过程
图二.Https对称加密+非对称加密传输过程
1.客户端向服务器发出https请求;
2.服务器会将自己的公钥以及服务器个人信息发送给一个数字证书认证机构,认证机构生成一个数字证书返回给服务器;
3.服务器将收到的证书发送给客户端;
4.客户端收到证书后验证证书的可信性:
a.如果不可信,弹出提示信息;
b.可信,或者用户接受了不可信的证书,客户端解密证书获取到其中服务器的公钥,并生成随机的对称密钥,并用服务器的公钥加密,发送给服务器;
5.服务器收到后,用自己的密钥解密获得对称密钥,此时服务器和客户端都知道了对称密钥,他们在互发消息时就可以使用这个密钥来加密传输了,从而保证了信息的安全。