HTTPS

HTTP为什么过时了?

HTTP明文协议的缺陷,是导致数据泄露、数据篡改、流量劫持、钓鱼攻击等安全问题的重要原因。HTTP协议无法加密数据,为谋取商业利益网页篡改及劫持无处不在,即使是技术强悍的知名互联网企业,在每天数十亿次的数据请求中,都不可避免地会有小部分流量遭到劫持或篡改,更不要提其它的小微网站了。 WIFI热点的普及和移动网络的加入,放大了数据被劫持、篡改的风险。HTTP协议无法验证通信方身份,任何人都可以伪造虚假服务器欺骗用户,实现“钓鱼欺诈”,用户根本无法察觉。

什么是Https?

Https就是为了解决安全问题而诞生的,极大的降低上述安全风险。

HTTPS是Http Over SSL,简单来说就是HTTP的安全版本,在HTTP的基础上通过加密传输和身份认证保证了传输过程中的安全性。我们通常访问的网站大部分都是HTTP的,最简单的辨别方法可以看看网址是以http://开头还是https://开头。

HTTPS协议的目标主要有三个:

1、数据保密性

非对称加密

数据的保密性主要是通过加密完成的。加密算法一般分为两种,一种是非对称加密(也叫公钥加密),另外一种是对称加密(也叫密钥加密)。所谓非对称加密就是指加密和解密使用的密钥不一样,如下图:

HTTPS使用非对称加解密主要有两个作用,一个是密钥协商,另外可以用来做数字签名。所谓密钥协商简单说就是根据双方各自的信息计算得出双方传输内容时对称加解密需要使用的密钥。

对称加密

对称加密就是加密和解密都使用的是同一个密钥。如下图:

采用非对称密码算法的密钥协商过程结束之后就已经得出了本次会话需要使用的对称密钥。

2、数据完整性

这部分内容相对比较简单,openssl现在使用的完整性校验算法有两种:MD5或者SHA。

3、身份校验

这里主要介绍的就是PKI和数字证书。数字证书有两个作用:

 身份验证。确保客户端访问的网站是经过CA验证的可信任的网站。

 分发公钥。每个数字证书都包含了注册者生成的公钥。在SSL握手时会通过certificate消息传输给客户端。

Https的缺陷

既然HTTPS非常安全,数字证书费用也不高,那为什么互联网公司不全部使用HTTPS呢?原因主要有两点:

1.HTTPS对速度的影响非常明显。每个HTTPS连接一般会增加1-3个RTT,加上加解密对性能的消耗,延时还有可能再增加几十毫秒。

2.HTTPS对CPU计算能力的消耗很严重,完全握手时,web server的处理能力会降低至HTTP的10%甚至以下。

原文地址:https://www.cnblogs.com/loaderman/p/6415355.html