HTTPS(安全的HTTP)

https-安全的http

  • 什么是https?
  • 加密和解密
  • HTTPS的工作过程
    • 1.引入对称加密
    • 2.引入非对称加密
    • 3.引入证书
  • HTTPS整个工作流程概述

什么是https?

HTTP(超文本传输协议)是在网络上用于传输数据的一种协议,它是客户端和服务器之间通信的基础。HTTPS(安全的HTTP)是HTTP的安全版本,使用加密通道保护数据通信的安全。它通过使用SSL(安全套接层)或TLS(传输层安全)协议来加密HTTP通信内筒,以确保数据的机密性和完整性,防止信息在传输过程中被第三方篡改或窃取。HTTPS通常用于安全敏感的网站,例如银行,电子商务和社交媒体等网站。

加密和解密

加密: 加密是将原来的数据通过某种算法转换或混淆成一份密文的过程,以保证数据的机密性,不被未经授权的人员所获取。加密通常需要使用密钥来控制数据转换过程和密文的生成,只有拥有正确的密钥才能得到原始的数据。常见的加密算法有对称加密算法非对称加密算法

解密: 解密是从密文中还原出原始数据的过程,在解密是需要使用相应的密钥。对于对称加密算法,加密和解密使用相同的密钥,而非对称加密算法则需要使用一对密钥公钥负责加密私钥负责解密。解密过程是加密的逆过程,当使用正确的密钥时,就能够还原出原始数据。

HTTPS的工作过程

1.引入对称加密

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

引入对称加密后,即使数据被截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真是内容是啥了。

由于上述过程是黑客不知道密钥是啥才不知道真实内容,但事情没有那么简单。服务器同一时刻其实是给很多客户端提供服务的。这么多客户端,每个人用的密钥都必须是不同的(如果是相同的那密钥就太容易扩散了,黑客就也能拿到了)。因此服务器就需要维护每个客户端和每个密钥之间的关联关系了

基于上述情况比较理想的做法是对于每次连接客户端和服务器就要协商本次数据传输的密钥是啥。

但是如果把密钥明文传输的话,黑客也就知道密钥是啥,因此对后续的加密操作就形如虚设了。所以我们的密钥必须是加密传输的。

因此我们就非常有必要映入非对称加密了。

2.引入非对称加密

非对称加密要用到两个密钥,一个叫做公钥 ,一个叫做私钥
公钥和私钥是配对的,最大的缺点就是运算速度非常慢 , 比对称加密要慢很多。

  • 通过公钥对明文加密,变成密文
  • 通过私钥对密文解密,变成明文

也可以反着用

  • 通过私钥 对明文加密
  • 通过公钥 对明文解密

说明: 即使是这样也并非对加密的数据保证绝对安全,我们使用公钥对数据进行加密,使用私钥密文进行解密的这个过程。还有可能出现这样一个情况,当客户端向服务器索要公钥时,服务器就知道生成自己生成非对称密钥 返回给客户端,数据可能就中途被黑客拦截,此时黑客可以生成自己的一对非对称密钥 ,黑客就把自己生成非对称密钥返回给客户端进行加密明文成密文返回,黑客再把数据拦截下来使用自己的私钥进行解密得到数据并且使用服务器公钥进行加密返回给服务器 ,以此达到骗过服务器和客户端。这个过程是真的老6

要解决这个问题的本质原因是客户端怎么获取到服务器的公钥,而不是得到老6公钥。

那我们怎么办呢? 接下来后续…

3.引入证书

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

这个证书就好比人的身份证,作为这个网站的身份标识,搭建一个HTTPS网站要在CA机构先申请一个证书(类似于去公安局半个身份证)

证书作用: 证书是由专业机构颁布的,里面就有服务器的公钥、校验以及网站的信息加密的密文,加密方式是使用专业机构非对称密钥进行加密 ,解密的私钥存在操作系统(相当于每个都有,黑客也有),当我们把证书发给客户端时,即使中途被黑客拦截进行解密,由于黑客不知道机构的私钥,无法对数据进行加密 ,或者黑客使用自己的一套非对称密钥加密也是无效 ,因为当证书到达客户端时无法解密以及校验和不正确。这样就保证了数据相对安全。

以上相对安全的原因是黑客解密后无法对数据进行加密已达到骗过客户端

HTTPS整个工作流程概述

  1. 客户端向服务器发送SSL握手请求,并提供自己支持的SSL/TLS版本和加密套件列表。
  2. 服务器收到客户端的请求后,选择一个SSL/TLS版本和加密套件,生成一个随机数,并将选定的版本、加密套件和随机数打包成证书发送给客户端。
  3. 客户端验证服务器的证书是否有效,包括证书是否由信任的证书颁发机构签发,证书中的域名是否和实际访问的域名匹配等。
  4. 客户端生成一个随机数,使用服务器证书的公钥机密该随机数,并将机密后的密文发送到服务器。
  5. 服务器收到客户端发送的加密后的随机数后,使用自己的私钥解密得到原始随机数。
  6. 服务器和客户端分别使用双方协商好的加密套件和随机数生成一个会话密钥,该密钥将于用接下来的数据传输加密和解密。
  7. 客户端向服务器发送一份握手确认报文,通知服务器可以开始使用会话密钥进行数据的加密和解密。
  8. 之后的数据传输过程中,客户端和服务器使用会话密钥进行数据加密和解密,在传输的过程中保证数据的完整性和机密性。

你可能感兴趣的:(http,https,安全)