美文网首页
HTTP从入门到懵逼学习笔记(七)

HTTP从入门到懵逼学习笔记(七)

作者: 狗没拿伞 | 来源:发表于2018-01-22 22:27 被阅读0次

     在前些章节的学习中,我们了解了HTTP的一些基础知识,但是HTTP并不是我们想象中那么完美,它也有着不足的地方。

    HTTP缺点

    1.通信使用明文不对数据进行加密(内容容易被窃听)。
    2.不验证通信方身份(容易伪装)。
    3.无法确定报文完整性(内容易被篡改)。

    针对以上三个问题,就出现了如今的HTTPS,下面我们就来了解一下HTTPS。

    HTTPS

     首先,针对上述的HTTP的缺点我们可以轻易的知道,HTTP+加密+认证+完整性保护=HTTPS,那么HTTPS具体是什么原理的呢?在以前的学习中,我们知道,HTTP是直接和TCP通信的,如下图:

    HTTP.png

     HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分使用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议替代而已。

    HTTPS.png

     由上图可知,HTTP变为了先和SSL通信,然后再由SSL和TCP通信

    加密方法

     在对SSL学习之前,我们先来了解一下加密方法,主要的加密方法分为两种:一种是共享密钥加密(对称密钥加密),一种是公开密钥加密(非对称密钥加密)

    共享密钥加密:加密与解密使用同一个密钥
    image.png

     这种方式我觉得有点奇怪,以共享密钥加密时必须把密钥也发给对方,但是如果密钥都能安全发送,那么加密还有什么意义呢?

    公开密钥(非对称密钥)

     公开密钥使用一对非对称密钥。一把叫私有密钥,另一把叫公开密钥。私有密钥不让任何人知道,公开密钥随意发送。我是这样理解的,比如我现在想向一个服务器发送一些加密的信息,那我可以将服务器的公开密钥拿到手后加密我的信息,然后发送给服务器,服务器用私有密钥进行解密,这样就比上面的共享密钥更安全了些。想用公开密钥恢复到信息原文是异常困难的。

    image.png
    混合加密机制

     HTTPS采用共享密钥加密和公开密钥加密两者混合加密,两者都有各自的优点。共享密钥加密处理速度快,但密钥无法安全发送给对方;公开密钥加密处理速度慢,但密钥能够安全交换。
     但如果我们将两种加密方式一起使用,则两种加密方式就能互补。也就是说,利用公开密钥加密方式安全地交换在共享密钥加密中要使用的密钥,在确保密钥安全前提下,使用共享密钥加密方式进行通信。

    身份认证

     在上述的公开密钥加密中,怎么确认我所获得的公开密钥是我想访问的服务器的公开密钥呢?毕竟我么无法确认公开密钥在传输的过程中被人替换了。于是使用了一种被称为证书的手段,可用于确定通信方。证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。伪造证书从技术角度是异常困难的一件事。

    数据完整性

     openssl 现在使用的完整性校验算法有两种:MD5 或者 SHA。由于 MD5 在实际应用中存在冲突的可能性比较大,所以尽量别采用 MD5 来验证内容一致性。SHA 也不能使用 SHA0 和 SHA1,中国山东大学的王小云教授在 2005 年就宣布破解了 SHA-1 完整版算法。

    HTTPS协议的弊端

    当使用SSL时,处理速度会变慢。HTTPS比http要慢2到100倍。
    reason1:通信慢,由于HTTPS要做服务器、客户端双方加密及解密处理,因此会消耗CPU和内存等硬件资源。除了发送HTTP请求,响应外,还必须进行SSL通信,因此整体上处理通信量不可避免会增加。
    reason2:SSL必须进行加密处理。在服务器端和客户端需要进行加密和解密的运算处理,从结果上讲,比起HTTP会更多地消耗服务器和客户端的硬件资源,导致负载增强。
    因此:请求非敏感信息则使用HTTP通信,只有在包含个人信息等敏感数据时候,才使用HTTPS加密通信。


    具体《图解HTTP》 密码:1t32
    参考资料:《图解HTTP》+无所不知的度娘+各位大佬的博客(文中图片均来自《图解HTTP》)

    相关文章

      网友评论

          本文标题:HTTP从入门到懵逼学习笔记(七)

          本文链接:https://www.haomeiwen.com/subject/jrbraxtx.html