http是明文传输,传输的数据很可能被中间节点获取,从而导致数据传输不安全
https是加密传输,可以保证数据的传输安全
那么https是如何保证数据传输安全的呢?
http是应用层协议,它会将要传输的数据以明文的方式给传输层,这样显然不安全。https则是在应用层与传输层之间又加了一层,该层遵守SSL/TLS协议,用于数据加密。如图所示。
**加密的方式有两种,第一:对称加密
对称加密速度快,但是加密和解密的钥匙是相同的,非对称加密,算法更加复杂,速度慢,加密和解密钥匙不相同。
在https中,加密过程大致如下:
首先服务器将公钥给浏览器,浏览器拿到公钥之后,生成一个“会话密钥”,这个会话密钥属于对称加密,然后用公钥加密这个“会话密钥”发送给服务器,最后,在数据传输的过程中,就用这个会话密钥来加密数据。打个比方:我有二把钥匙,我把其中一把钥匙放在信封里,然后把信封交给你。但是这个信封只有你能打开。
上述的过程是在3次握手中完成,采用明文发送,握手完成以后,客户端和服务端就约定好了“会话密钥”,以后的数据传输,就采用这个会话密钥加密。
在上述的过程中要注意
公钥怎么给客户端?
如果公钥A在发送给客户端的过程中,被截取,被黑客替换成了公钥B,以后的事情可想而知,你就会用公钥B加密“会话密钥”,然后。。。你的隐私就被窃取喽。对于这个问题,要引入证书和数据签名的概念。。童鞋们可以去了解了解。