HTTPS

目录

一、HTTPS是什么

1.1 运营商劫持 

1.2 加密是什么 

二、HTTPS的工作过程 

2.1 对称加密

2.2 非对称加密 


一、HTTPS是什么

HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层,HTTP的内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。

1.1 运营商劫持 

什么是运营商劫持? 

由于我们通过网络传输的任何数据包都会经过运营商的网络设备(交换机,路由器等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改。

假如我用我的浏览器下载网易云音乐,我的数据经过运营商设备,运营商就把我要下载的链接替换成了QQ浏览器,于是我下载的就是一个QQ浏览器了,这种行为就是运营商劫持。

思考下,为什么运营商要进行劫持?

被金钱蒙蔽了双眼

不止运营商可以劫持,其他的黑客也可以用类似的手段进行劫持,来窃取用户隐私信息,或者篡改内容,试想一下,如果黑客在用户登录支付宝的时候获取用户账户余额,甚至获取用户的支付密码........在互联网上,明文传输是比较危险的事情!

HTTPS就是在HTTP的基础上进行了加密,进一步来保证用户的信息安全。

1.2 加密是什么 

加密就是把明文(要传输的信息)进行一系列变换,生成密文。解密就是把密文再进行一系列变换,还原成明文。

在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥。 

二、HTTPS的工作过程 

既然要保证数据安全,就需要进行加密。网络传输中不再直接传输明文了,而是加密之后的密文,加密的方式有很多,但是整体可以分成两大类:对称加密和非对称加密。

2.1 对称加密

对称加密其实是通过同一个密钥,把明文加密成密文,并且也能把密文解密成明文。

客户端和服务器都持有同一个密钥, 客户端传输的数据(HTTP请求的header和body)都通过这个密钥进行对称加密,实际上在网路传输过程中,传输的是密文,服务器在收到密文后,接下来就可以根据刚才的密钥来进行解密,从而拿到明文。

上图中,由于数据是加密的,黑客因为没有密钥从而不知道明文是什么

如果黑客知道秘钥了,就是可以破解的。

客户端和服务器使用相同的密钥,但是服务器不只是和一个客户端进行交互,是同一时刻和一堆客户端进行交互,如果是相同的密钥,那么黑客也可以伪装成一个客户端和服务器进行交互,这样就可以拿到密钥了.....于是,每个客户端和服务器进行交互时,就有了各自的密钥,每个客户端的密钥各不相同。

但事情没有那么简单,服务器同一时刻就是给很多客户端提供服务的,这么多客户端,每个客户端都有各自的密钥,因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情~

比较理想的做法,就是能在客户端和服务器建立连接的时候,双方协商确定这次的密钥是啥。

 

但是如果直接把密钥明文传输,那么黑客也能获取密钥了~~此时后续的加密操作就形同虚设了。

因此密钥的传输也必须加密传输! 

但是要想对密钥进行对称加密,就仍需要先协商确定一个“密钥的密钥”,此时密钥的传输再用对称加密就行不通了。此时就需要引入非对称加密 。

2.2 非对称加密 

非对称加密需要用到两个密钥,一个叫做公钥,一个叫做私钥。

公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密慢很多。

  1. 通过公钥对明文加密,变成密文;
  2. 通过私钥对密文解密,变成明文。 

也可以反着用

  1. 通过私钥对明文加密,变成密文;
  2. 通过公钥对密文解密,变成明文

基于非对称加密,就是让服务器自己生成一堆公钥和私钥,公钥发出去,私钥自己保存。

此过程也有一定缺点:

在服务器把自己的公钥返回给客户端时,被黑客进行了中间拦截,它自己生成了一对公钥和私钥。

过程详解:首先客户端想要知道公钥,服务器会给每个设备发公钥,但是被黑客入侵,黑客就生成了自己的一对公钥和私钥,于是黑客就把自己的公钥发给客户端,等客户端和服务器进行交互时,黑客就能用自己的私钥对密文进行解密,得到密钥就能得到明文。

解决方式:

  1. 在客户端和服务器刚建立连接的时候,服务器给客户端返回一个证书。
  2. 这个证书包含了刚才的公钥,也包含了网站的身份信息。

证书机制,就相当于引入了一个认证机构,此处的证书就是一个加密的字符串和服务器的域名。

尽管黑客在理论上可以尝试修改传输中的证书,但是由于签名的存在,他们不能成功地修改证书而不被发现。如果证书被篡改,客户端会在验证过程中检测到这一点,从而拒绝建立连接。

相关推荐

  1. <span style='color:red;'>HTTPS</span>

    HTTPS

    2024-03-30 10:36:02      59 阅读
  2. https

    2024-03-30 10:36:02       57 阅读
  3. Https

    2024-03-30 10:36:02       43 阅读
  4. <span style='color:red;'>HTTP</span>

    HTTP

    2024-03-30 10:36:02      41 阅读
  5. <span style='color:red;'>HTTPS</span>

    HTTPS

    2024-03-30 10:36:02      43 阅读
  6. <span style='color:red;'>https</span>

    https

    2024-03-30 10:36:02      38 阅读
  7. <span style='color:red;'>HTTP</span>!!!

    HTTP!!!

    2024-03-30 10:36:02      33 阅读
  8. <span style='color:red;'>HTTPS</span>

    HTTPS

    2024-03-30 10:36:02      20 阅读
  9. HTTP/HTTPS

    2024-03-30 10:36:02       48 阅读
  10. HTTP/HTTPS

    2024-03-30 10:36:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 10:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 10:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 10:36:02       82 阅读
  4. Python语言-面向对象

    2024-03-30 10:36:02       91 阅读

热门阅读

  1. 当构造器参数较多时考虑用生成器

    2024-03-30 10:36:02       39 阅读
  2. 复习拓扑排序

    2024-03-30 10:36:02       43 阅读
  3. Redis 过期删除策略

    2024-03-30 10:36:02       37 阅读
  4. Springmvc文件下载例子

    2024-03-30 10:36:02       45 阅读
  5. C#多线程编程详细教学

    2024-03-30 10:36:02       38 阅读
  6. c++中缓冲器的使用案例

    2024-03-30 10:36:02       44 阅读
  7. [超细] npm 版本号规范升级流程

    2024-03-30 10:36:02       45 阅读
  8. pnpm 使用

    2024-03-30 10:36:02       39 阅读
  9. OpenCV摄像头和视频处理

    2024-03-30 10:36:02       39 阅读
  10. MySQL-分片规则

    2024-03-30 10:36:02       36 阅读