美文网首页
读"一篇最好懂的https讲解"有感

读"一篇最好懂的https讲解"有感

作者: 阿星啊阿星 | 来源:发表于2020-03-03 16:33 被阅读0次

    现在是北京时间2020/3/3 11:33,郭霖大大“写一篇最好懂的https讲解”发布后的第三个半小时,今天八点起来之后就网课试课,结束后就开始在手机上进行数据挖掘和清洗(玩手机看资讯),发现郭神发布了一篇原创的文章(郭神忙着出新书的事,属实少出原创了),迫不及待的点进去看一下,看完之后我的感受是:是不是最好懂得https讲解我不知道(因为我之前没了解过HTTP和HTTPS的区别),但确实是非常好懂!

    看完之后就做一下笔记吧,不然下次想要复习的时候又要跑去公众号搜文章......

    考点1 对称加密和非对称加密

    • 对称加密

      服务器和客户端都用同一个密钥,这个密钥既能用来加密数据,也能用来解密数据;
      优点:加密效率非常快;
      缺点:可能存在密钥被窃取的可能;
      常用的对称加密算法:DES、3DES(TripleDES)和AES。

    • 非对称加密

      密钥分为公钥和私钥;
      公钥加密的数据只有私钥才能解密,私钥加密的数据只有公钥才能解密;
      公钥通常放在客户端,私钥通常放在服务器端;
      优点:安全性更高,客户端向服务器发送的数据只有服务器才能解密;
      缺点:效率比对称加密低很多;

    考点2 HTTP 和 HTTPS

    • HTTP

      传统HTTP在传输数据的时候都是明文传输,服务器和客户端通讯的时候数据包非常容易被抓取,而且抓取之后一看就基本知道在传输什么内容(明文)。这在我们计算机与网络实验课上就感受到了,实验内容就是通过抓包工具Wireshark来熟悉TCP和UDP(实验内容和报告整理后再发布吧)


    Wireshark抓包工具,data暴露
    • 可以对HTTP进行改进
      1. 明文传输 -> 数据加密

      传统的HTTP是明文传输,没有采用加密,效率高,现在要引入一个数据加密的环节,为了不影响效率,最合适的就是引入对称加密,既安全又高效;


    明文传输 -> 数据加密

      如上图所示,网站和浏览器同时拥有密钥,网站用密钥给数据加密,包装成密文,通过路由转发,浏览器接收到密文,通过密钥解密,得到数据,而中间的不法分子将密文拦截了,没有密钥所以不知道传输的数据究竟是什么,这样看起来确实是挺安全的?

      上面的流程图默认了一个条件:网站和浏览器都有相同的密钥(对称加密)

      事实上这一个条件是无法实现的,因为一开始的时候,浏览器显然没有网站的密钥,而网站和浏览器一开始的数据传输肯定是明文传输,如果明文传输将密钥传输过去,BadBoy拦截一下,就知道了密钥,那么后面的用密钥加密的数据对BadBoy来说就是透明的!

      既然对称加密行不通,那就看能不能用非对称加密来解决这个问题;

      2. 对称加密 -> 非对称加密

      因为首次数据传输肯定是明文传输,那么就在首次传输的时候传一些就算让BadBoy知道了也无妨的东西,在这里我们将和网站私钥对应的公钥传过去;

    步骤1

      因为公钥加密的数据只有私钥才能解密,所以浏览器使用这个公钥加密数据传给网站是不担心被BadBoy拦截解析的,那么问题来了,浏览器发数据给网站这个问题解决了,而网站发数据给浏览器法还只能用明文传输,那能不能像步骤1一样,浏览器这边也准备一个私钥,将对应的公钥发送到网站呢?

      显然是可以的,步骤二就是浏览器用公钥A对公钥B进行加密,发送到网站用私钥A解密。按照步骤二执行之后,浏览器向网站发的数据用公钥A加密,就只有网站的私钥A能解密,而网站向浏览器发送的数据用公钥B来加密,只有浏览器的私钥B能解密,这样往后的数据传输就是很安全的,就算BadBoy拦截了也什么都不知道!

    步骤2

      虽然这样做CS之间的数据传输安全性得到了保障,但是效率却大大下降(前面提到的非对称加密效率低),这里就提出了一个改进的方案:步骤二里浏览器不是生成公钥B,而是生成一个对称加密里的密钥,然后将这个密钥通过公钥A加密,再发送到网站,这样网站就能安全的用私钥A解密得到密钥,这时安全的对称加密环境就建立起来了,以后的传输都可以只用对称加密的密钥来加密!


    改良 步骤2

      对于防止BadBoy抓取数据已经做得差不多了,按照上面的流程执行,就算BadBoy从中间路由那里把所有密文都拦截下来,都没有办法解密;但是,凡事都有个但是,如果在第一次明文传输的时候,BadBoy将网站给浏览器发送的公钥A拦截了,换上自己的公钥B,然后浏览器给客户端发送的密钥BadBoy就能解密了!


    狡猾的BadBoy(顺序是先绿后粉)
      3. 引入第三方机构--CA机构

    证书授证中心,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心GlobalSign)为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。

    证书授权中心(certificate authority,CA)是管理和签发安全凭证和加密信息安全密钥的网络机构。注册中心(RA)对申请者所提供的数字证书进行验证,CA验证后签发证书。内容包括申请者的个人信息,公共密钥和认证有效期,作为网上身份证明的依据。

    由此可见,建设证书授权(CA)中心,是开拓和规范电子商务市场必不可少的一步。为保证用户之间在网上传递信息的安全性、真实性、可靠性、完整性和不可抵赖性,不仅需要对用户的身份真实性进行验证,也需要有一个具有权威性、公正性、唯一性的机构,负责向电子商务的各个主体颁发并管理符合国内、国际安全电子 交易协议标准的电子商务安全证书。

    摘抄自百度百科:证书授权中心

      有了CA机构之后,第一次传输的流程就会变成下面这个样子:


    第三方: CA机构

      因为CA机构的证书里面包含了网站的个人信息(域名等),所以一张证书可以代表一个网站,如果BadBoy通过中间路由将证书A替换成自己的证书B,那么浏览器在解密证书的时候,就会发现证书里的网站个人信息(BadBoy)和自己申请的网站的个人信息(网站)不符合,浏览器就发现证书被掉包了,立刻终止(有内鬼!)

    • HTTPS

      说实话我一个不懂HTTPS的仔在看了上面对HTTP的改进之后,觉得已经很强很安全了,难道HTTPS更安全?

    郭神说

      。。。。。。
      我懵了,原来郭神在不知不觉中就给我灌输了HTTPS的精髓,让我不知不觉的理解了HTTPS对HTTP的改进,果然是“一篇最好懂的https讲解”!

    • 总结

    既然该学的都学了,那就总结一下吧:

    1. HTTPS采用对称加密和非对称加密结合的方式来传输数据,其中非对称加密用来为对称加密提供安全的密钥;
    2. HTTPS引入了第三方CA组织,来防止监听者从中间路由篡改公钥,
    3. HTTPS还有很多细节值得深挖,小白刚进门,仍需多努力```

    相关文章

      网友评论

          本文标题:读"一篇最好懂的https讲解"有感

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