HTTP的前世与今生
其实HTTPS就是披上了SSL战甲的HTTP战士~像这样:
哈哈,开玩笑的,不过HTTP的确是HTTPS的前世续缘对象哦~
HTTP我们都知道它存在很多问题,例如:
1).通信使用明文,内容可以被监听
2).不验证通信方的身份,可能遭遇伪装
3).无法证明报文的完整性,所以有可能已遭篡改
互联网上的任何角落都存在通信内容被监听的风险,所以前辈们就想到了为我们的信息制定,加密、认证、完整性保护的措施。通过这些措施,为我们的通信制造出一个安全的通道。
开头说过HTTP是“披上了SSL战甲的HTTP战士”,那么SSL是什么呢?
SSL(Secure Socket Layer)是由浏览器开发商景通信公司率先倡导的,是为网络通信提供安全及数据完整性的一种安全协议。SSL1.0设计之初就发现了问题,并没有投入使用。SSL2.0也发现存在问题,所以很多浏览器直接废除了这个版本。所以目前主流版本是SSL3.0。
下面来聊一下HTTP的升阶之路吧:
1.对称加密算法
定义:加密和解密用的是同一把**
如果通信使用明文,就相当于一丝不挂的逛街,所以前辈想到了,为我们的通信加密。决定通过**解开密文的方式解决这个问题。
问题:加密和解密都需要用到**,**也需要通过网络传送,很容易被劫持,一旦被劫持,加密也就失去了意义。
2.非对称加密算法(RSA)
定义:一对钥匙,一个是保密的(私钥);一个是公开的(公钥)。只有对应的私钥和公钥可以互相解密。
上面的对称加密算法,很容易被劫持,所以不安全。那么使用非对称加密算法的时候,小红把自己的公钥发给小名,小名把要发给小红的消息通过小红的公钥加密,发送给小红。小红收到小名的消息后,拿自己**解锁就可以了。
问题:非对称算法的方式的公钥加密方式比对称加密的方式复杂百倍,所以在通信的时候使用这种方式,效率会很低。
3.非对称加密+对称加密
方法:
1).小红生成一个对称加密算法的**,通过非对称加密的算法(小红用公钥加密对称算法的**)发送给小名。
2).小名接收到对称加密算法的**后,小名、小红之间就直接通过对称加密算法通信了。
问题:存在中间人劫持的问题,无法确保此时小名收到的是小红的公钥。
4.中间人攻击劫持
原理如下图:
过程:
1).中间人截取小名和小红互发的公钥,并给两人发送自己的公钥,此时小名和小红误以为街道的是对方的公钥,但是此时他俩手持的是中间人的公钥;
2).小名使用 公钥(中间人) 加密要发送给小红的消息;
3).中间人接到小名发给小红的消息,用 私钥(中间人)解密读取信息,并用 公钥(小红) 加密,发送给小红;
4).小红用自己的 私钥(小红) 解密,读取信息。
5.CA证书
为了解决上面的问题,前辈们决定使用由数字证书认证机构(CA)颁发的数字证书。
1.数字证书:
数字证书的组成:
1).小红的公钥以及小红的个人信息通过Hash算法得到消息摘要;
2).将消息摘要通过CA的私钥加密得到数字签名.
2.数字证书的验证:
验证方法:
1).通过相同的Hash算法,得到消息摘要,
2).通过CA的公钥对数字签名解密,得到CA的消息摘要,
3).两者对比,看是否被篡改
把上文中的小名换做客户端,小红换做服务器就是HTTPS的流程图了。
文章是通过阅读《码农翻身》、《图解HTTP》的一些个人学习总结,所以如果各位发现我的理解有误,希望大家能够留言帮我指正,谢谢大家啦????