HTTP的前世与今生

其实HTTPS就是披上了SSL战甲的HTTP战士~像这样:
HTTP的前世与今生
哈哈,开玩笑的,不过HTTP的确是HTTPS的前世续缘对象哦~



HTTP我们都知道它存在很多问题,例如:

1).通信使用明文,内容可以被监听

2).不验证通信方的身份,可能遭遇伪装

3).无法证明报文的完整性,所以有可能已遭篡改


互联网上的任何角落都存在通信内容被监听的风险,所以前辈们就想到了为我们的信息制定,加密、认证、完整性保护的措施。通过这些措施,为我们的通信制造出一个安全的通道。


开头说过HTTP是“披上了SSL战甲的HTTP战士”,那么SSL是什么呢?

SSL(Secure Socket Layer)是由浏览器开发商景通信公司率先倡导的,是为网络通信提供安全及数据完整性的一种安全协议。SSL1.0设计之初就发现了问题,并没有投入使用。SSL2.0也发现存在问题,所以很多浏览器直接废除了这个版本。所以目前主流版本是SSL3.0。


下面来聊一下HTTP的升阶之路吧:

1.对称加密算法

定义:加密和解密用的是同一把**

如果通信使用明文,就相当于一丝不挂的逛街,所以前辈想到了,为我们的通信加密。决定通过**解开密文的方式解决这个问题。

HTTP的前世与今生
问题:加密和解密都需要用到**,**也需要通过网络传送,很容易被劫持,一旦被劫持,加密也就失去了意义。

2.非对称加密算法(RSA)

定义:一对钥匙,一个是保密的(私钥);一个是公开的(公钥)。只有对应的私钥和公钥可以互相解密。

上面的对称加密算法,很容易被劫持,所以不安全。那么使用非对称加密算法的时候,小红把自己的公钥发给小名,小名把要发给小红的消息通过小红的公钥加密,发送给小红。小红收到小名的消息后,拿自己**解锁就可以了。
HTTP的前世与今生
问题:非对称算法的方式的公钥加密方式比对称加密的方式复杂百倍,所以在通信的时候使用这种方式,效率会很低。


3.非对称加密+对称加密

方法:

1).小红生成一个对称加密算法的**,通过非对称加密的算法(小红用公钥加密对称算法的**)发送给小名。

2).小名接收到对称加密算法的**后,小名、小红之间就直接通过对称加密算法通信了。

问题:存在中间人劫持的问题,无法确保此时小名收到的是小红的公钥。

4.中间人攻击劫持

原理如下图:
HTTP的前世与今生
过程:

1).中间人截取小名和小红互发的公钥,并给两人发送自己的公钥,此时小名和小红误以为街道的是对方的公钥,但是此时他俩手持的是中间人的公钥;

2).小名使用 公钥(中间人) 加密要发送给小红的消息;

3).中间人接到小名发给小红的消息,用 私钥(中间人)解密读取信息,并用 公钥(小红) 加密,发送给小红;

4).小红用自己的 私钥(小红) 解密,读取信息。

5.CA证书

为了解决上面的问题,前辈们决定使用由数字证书认证机构(CA)颁发的数字证书。

1.数字证书:
HTTP的前世与今生
数字证书的组成:

1).小红的公钥以及小红的个人信息通过Hash算法得到消息摘要;

2).将消息摘要通过CA的私钥加密得到数字签名.

2.数字证书的验证:
HTTP的前世与今生
验证方法:

1).通过相同的Hash算法,得到消息摘要,

2).通过CA的公钥对数字签名解密,得到CA的消息摘要,

3).两者对比,看是否被篡改

把上文中的小名换做客户端,小红换做服务器就是HTTPS的流程图了。
HTTP的前世与今生


文章是通过阅读《码农翻身》、《图解HTTP》的一些个人学习总结,所以如果各位发现我的理解有误,希望大家能够留言帮我指正,谢谢大家啦????