zoukankan      html  css  js  c++  java
  • 【解读】Https协议

    一.为什么需要https                 

         1.HTTP是明文传输,也就意味着,介于发送端接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。

           举个最常见的例子,用户登陆。用户输入账号,密码,采用HTTP的话,只要在代理服务器上做点手脚就可以拿到你的密码了。

           用户登陆 --> 代理服务器(做手脚)--> 实际授权服务器

         2.在发送端对密码进行加密?没用的,虽然别人不知道你原始密码是多少,但能够拿到加密后的账号密码,照样能登陆。

       (这也是很多人觉得前端加密并没有啥软用)

    二.HTTPS是如何保障安全的    

         稍微了解网络基础的同学都知道,HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装。

            从上面图中我们可以看出:HTTPS相对于HTTP有哪些不同呢?

          其实就是在HTTP跟TCP中间加多了一层加密层TLS/SSL。        

    神马是TLS/SSL?

           通俗的讲,TLS、SSL其实是类似的东西:

      1、SSL中文叫做“安全套接层”,SSL是个加密套件,负责对HTTP的数据进行加密

      2、TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。

    传输加密的流程

          原先是应用层将数据直接给到TCP进行传输,

          现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。

          就是这么回事。将数据加密后再传输,而不是任由数据在复杂而又充满危险的网络上明文裸奔,在很大程度上确保了数据的安全。

          这样的话,即使数据被中间节点截获,坏人也看不懂。

    三.HTTPS是如何加密数据的   

           一般来说,加密分为对称加密非对称加密(也叫公开密钥加密)。

           对称加密的意思就是,加密数据用的密钥,跟解密数据用的密钥是一样的。

           对称内容加密强度非常高,一般破解不了。但存在一个很大的问题就是无法安全地生成和保管密钥。假如客户端软件和服务器之间每次会话都使用固定的,相同的密钥加密和解密,肯定存在很大的安全隐患。如果有人从客户端端获取到了对称密钥,整个内容就不存在安全性了,而且管理海量的客户端密钥也是一件很复杂的事情。

            非对称加密的意思就是,加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的。

      什么叫做公钥呢?其实就是字面上的意思——公开的密钥,谁都可以查到。因此非对称加密也叫做公开密钥加密。

      相对应的,私钥就是非公开的密钥,一般是由网站的管理员持有。

         公钥、私钥两个有什么联系呢?

          简单的说就是,通过公钥加密的数据,只能通过私钥解开。通过私钥加密的数据,只能通过公钥解开。

             很多同学都知道用私钥能解开公钥加密的数据,但忽略了一点,私钥加密的数据,同样可以用公钥解密出来。

             而这点对于理解HTTPS的整套加密、授权体系非常关键。

             非对称密钥交换很安全,但同时也是 HTTPS 性能和速度降低的“罪魁祸首”。

  • 相关阅读:
    centos7 安装 nginx
    centos7 安装 mysql
    centos7 安装 python3.7
    nginx添加到系统命令中
    Java多线程6-线程让步
    Java多线程5-线程等待与唤醒
    Java多线程4-synchronized关键字
    Java多线程3-Thread中start和run方法的区别
    Java多线程-2-常用的实现多线程的两种方式
    java多线程1-基础概念
  • 原文地址:https://www.cnblogs.com/651434092qq/p/11065356.html
Copyright © 2011-2022 走看看