美文网首页
https 简介

https 简介

作者: packet | 来源:发表于2019-02-20 22:37 被阅读0次

    很早就想写一篇关于HTTPS的博客,不仅因为这是基础,而且自己在面试被问到过但是答得不好。直到最近才有些眉目,可见自己的学习效率真的很低。
    为什么说HTTP是不安全的呢?因为通信过程是明文。
    HTTPS是一个HTTP的安全版本,既然设计到安全,必然少不了加密和解密。常见的加密和解密有摘要算法,对称加密,非对称加密,数字签名等,HTTPS就是利用了这些技术。
    非对称加密要比对称加密更加可靠,但是性能较低,如果通信频繁,会有较大的开销。所以HTTPS只是利用非对称加密传输秘钥,之后就是用该密钥进行对称加密。
    用一种技术解决A问题,往往会带来B问题。


    对称加密

    对称加密的问题是,无法把密钥安全地送给对方。


    非对称加密
    非对称加密有两把钥匙,一把钥匙是公开的(全世界知道都没关系),我们称之为公钥;另一把钥匙则是保密的(只有自己本人才知道),我们称之为私钥。这且,用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密。
    服务器在给客户端传输数据的过程中,可以用客户端明文给他的公钥进行加密,然后客户端收到后,再用自己的私钥进行解密。客户端给服务器发送数据的时候也一样采取这样的方式。这样就能保持数据的安全传输了。
    非对称加密的问题在于性能,比对称加密慢了上百倍。
    对称加密+非对称加密是怎样结合的?
    服务器用明文的方式给客户端发送自己的公钥,客户端收到公钥之后,用服务器的公钥对这把密钥进行加密,之后再把密钥传输给服务器,服务器收到之后进行解密,最后服务器就可以安全着得到这把密钥了,而客户端也有同样一把密钥,他们就可以进行对称加密了。
    但这也是非安全的。

    服务器以明文的方式给客户端传输公钥的时候,中间人截取了这把属于服务器的公钥,并且把中间人自己的公钥冒充服务器的公钥传输给了客户端。
    之后客户端就会用中间人的公钥来加密自己生成的密钥。然后把被加密的密钥传输给服务器,这个时候中间人又把密钥给截取了,中间人用自己的私钥对这把被加密的密钥进行解密,解密后中间人就可以获得这把密钥了。
    非对称加密的问题是,客户端不知道公钥是不是来自服务器。
    终极解决方案就是数字证书。
    首先要有一个具有公信力的认证中心(CA)。
    服务器在给客户端传输公钥的过程中,会把公钥以及服务器的个人信息通过Hash算法生成信息摘要。如图


    为了防止信息摘要被人调换,服务器还会用CA提供的私钥对信息摘要进行加密来形成数字签名。如图:

    并且,最后还会把原来没Hash算法之前的个人信息以及公钥 和 数字签名合并在一起,形成数字证书。如图

    当客户端拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,否则就不是。如图:

    参考:https 加密那点事

    20190312重写,以上思路和漫画:什么是 HTTPS 协议中的描述有些出入。


    以上工作在SSL(Secure Sockets Layer)中完成。

    https://time.geekbang.org/column/article/9492

    你不会从外卖网站上得到一个公钥,而是会得到一个证书,这个证书有个发布机构 CA,你只要得到这个发布机构 CA 的公钥,去解密外卖网站证书的签名,如果解密成功了,Hash 也对的上,就说明这个外卖网站的公钥没有啥问题。

    各大浏览器和操作系统已经维护了所有权威证书机构的名称和公钥。

    相关文章

      网友评论

          本文标题:https 简介

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