https 协议

目录

加密方式

对称加密

非对称加密

[非对称加密 + 非对称加密](#非对称加密 + 非对称加密)

[非对称加密 + 对称加密](#非对称加密 + 对称加密)

AC证书

AC证书内容

数据摘要

数据签名


在我们前面学习的http协议里面,我们发送的内容都是明文传输的,所以在安全上并不安全,但是在现在信息发达的时代里,如果还是使用 http 协议,那么就是很危险的,所以目前我们接触到的基本上都是 https 协议。

而https协议上也就是在 http 协议里面加了 TLS/SSL 协议,而这两个协议就是用来加密的。

http协议是明文传输的,所以当有中间人修改数据后,我们也是不能被发现的,或者是明文传输的话,被黑客看到我们的信息,那么也是很不隐私的。

那么解决方案是什么呢?加密!

加密方式

但是我们下面并不是要谈加密,而是谈如何加密!

那么加密有哪些方式呢?

  1. 对称加密

  2. 非对称加密

  3. 非对称 + 对称加密

加密的方式就是这三种,那么这些加密有什么特点呢?

对称加密

对称加密:对称加密相对于非对称加密比较简单,举一个简单的例子,对称加密有,假设现在发送的是数据 那么对这个数据异或另一个数字,然后得到带了一个数据,那么这个数据就是经过加密的数据,当这个数据到达对端主机后,那么将这个数据在异或这个密钥,那么就可以得到原始的数据。

这就是使用对称加密,但是对称加密是有问题的。

如果使用对称加密,那么第一次的密钥怎么让对方主机知道呢?

如果服务器将通信使用的密钥明文发送的话,那么就会被黑客看到,那么第一次的密钥协商就是有问题的?那么此就需要一个密钥的密钥来解决问题,这就是鸡生蛋,蛋生鸡的问题了。

非对称加密

非对称加密就是首先,服务器有公钥和私钥,当客户端第一次给服务器发送的时候,服务器就会将自己的公钥交给客户端,那么客户端就可以拿公钥加密,然后发送给服务器,此时就只有拿私钥的服务器能解密的,后面服务器也就可以拿私钥加密,然后客户端手里有公钥,那么客户端也就可以看到服务器发送的数据了。

非对称加密就是这样,但是非对称加密也是有问题的,因为不仅仅是客户端给服务发送数据,服务器也需要给客户端响应,那么当服务器给客户端响应的时候,黑客也是可以看到服务器的公钥的,那么此时黑客就可以看到服务器到客户端的数据,此时也是不安全的。

那么需要怎么办呢?

非对称加密 + 非对称加密

由于只有一个非对称加密是不够的,那么就需要采用双放都是非对称加密。

第一次,客户端访问服务器,然后服务器给客户端返回自己的公钥,此时公钥是可以被其他人拿到的,然后客户端拿到服务器公钥后,拿服务器公钥对自己的公钥加密,然后发送给服务器,此时黑客是不能拿到的,因为此时被服务器公钥加密的数据,只能由服务器的私钥解密,然后服务器拿到了客户端的数据后,使用自己的私钥解密,然后拿到客户端的公钥,此时服务器就可以给客户端发送数据的时候,就可以拿客户端发送的公钥加密了,此时发送到网络中的数据,只有客户端可以解密。

但是非对称加密是比较复杂的,而且在解密的时候也是比较浪费世间的,所以非对称加密+非对称加密是不好的,其实不光是这样,而且其实也是可以被中间人拿到数据的!

那么中间人要怎么拿到数据呢?我们下面先看一下如何解决非对称加密的速度慢的问题。

非对称加密 + 对称加密

上面由于双方都是非对称,所以比较慢,下面使用非对称和对称一起用,前面使用非对称密钥协商对称密钥,后面就使用对称密钥来通信。

首先客户端访问服务器,服务器将公钥发送给客户端,客户端使用服务器公钥对一格对称密钥加密,然后对称密钥此时是不能被黑客看到的,所以此时数据是安全的,当服务器拿到数据后解密,拿到对称密钥,然后后面就是使用对称密钥加密解密。

这里我们就来说一下前面说的中间人问题,那么中间人怎么攻击呢?

假设现在有一个中间人,mid。

当客户端服务器第一次通信的时候,也就是当服务器给客户端返回公钥M的时候,此时中间人将M替换成自己的公钥H,但是把M保存起来,此时在将数据发送给客户端,此时客户端拿到的公钥就是H,然后客户端会使用H来加密一个对称密钥S,然后发送给服务器,此时中间人拿到该数据,然后使用中间人的私钥H'来解密,拿到对称的密钥,然后中间人对对称密钥S使用M加密,然后发送给服务器,此时服务器也就拿到了对称密钥S,在此过程中,客户端和服务器都不知道中间人的存在,也并不知道中间人修改过数据,在客户端和服务器协商好密钥S后就使用密钥S通信,但是中间人也是知道S密钥的,所以此时中间人是可以知道客户端和服务器的数据的。

AC证书

我们发现上面的加密都是有问题的,那么我们需要怎么做呢?

AC证书,AC证书是什么呢?AC证书就是一个可以信任的机构,该机构为特定的网站颁发证书,然后每一次通信的时候,网站就将该证书进行hash映射形成摘要,然后通过加密后,形成签名,然后就将该证书与签名一起发送过去,如果中间被修改,那么对签名进行解密后,然后再对证书进行相同的hash映射后,如果形成的摘要和签名解密后的摘要不同,那么说明数据被中间人修改过,所以就是不可以的。

上面就是如何通过AC证书来检测数据是否被修改过,如果修改过,那么该数据就是不可信任的。

下面我们介绍一下什么是AC证书:

AC证书内容

AC证书里面包含了一些内容,其中该内容就包含了对应网站的信息,例如:网站的网址、以及该网站的公钥等...

重要的就是该网站的公钥,主要是为了让客户端看到该公钥。

数据摘要

数据摘要就是对AC证书进行hash有映射,对证书进行hash隐私后,就形成了摘要,然后对摘要再进行AC机构的私钥加密后,然后形成数据签名。

数据签名

数据签名就是再通过数据摘要,然后使用AC机构的私钥加密,只能由AC机构的公钥解密,但是私钥只有AC机构拥有,所以想要形成签名,只能由AC机构来形成。

所以对数据摘要进行加密后就形成了签名。

有了数据签名后,此时网站和客户端通信的时候,就可以将网站的信息和数据签名放在一起了,然后发送给客户端。

那么有了数据签名和证书后,看一下如何加密。

此时当客户端第一次给服务器发送数据的时候,服务器给客户端返回了自己的证书和数据签名放到一起。

如果此时中间人想攻击的时候,那么中间人将AC证书里面的公钥切换为自己的公钥。

那么当该数据到达客户端的时候,客户端就会验证AC证书的真假,客户端就会对AC证书进行相同的hash映射,然后,形成数据摘要,然后在对数据签名进行解密,也形成一个数据摘要,如果AC证书美哟被修改,那么这两个摘要就是相同的,如果被修改了,那么形成的数据摘要就会差别很大,此时客户端就会意识到数据被修改。

相关推荐
liu****1 小时前
18.HTTP协议(一)
linux·网络·网络协议·http·udp·1024程序员节
赖small强1 小时前
【ZeroRange WebRTC】KVS WebRTC 示例中的 HTTP 通信安全说明
https·webrtc·tls·aws sigv4·信道安全·时间与重放控制
拾忆,想起3 小时前
Dubbo异步调用实战指南:提升微服务并发性能
java·服务器·网络协议·微服务·云原生·架构·dubbo
阿巴~阿巴~9 小时前
基于UDP协议的英汉翻译服务系统:从网络通信到字典查询的完整机制
linux·服务器·网络·网络协议·udp协议·套接字绑定·英汉翻译服务系统
another heaven10 小时前
【计算机网络 HTTP 请求参数规范详解】
网络协议·计算机网络·http
慧慧吖@12 小时前
sse,短轮询,长轮询,webSocket
网络·websocket·网络协议
AiXed16 小时前
PC微信协议之nid算法
python·网络协议·算法·微信
赖small强18 小时前
【ZeroRange WebRTC】Amazon Kinesis Video Streams WebRTC Data Plane REST API 深度解析
https·webrtc·data plane rest·sigv4 签名
Laravel技术社区19 小时前
海康视频 h5player 配置 proxy 代理websocket播放视频问题(websocket在业务系统https方式访问http的播放视频)
websocket·http·音视频
果壳~20 小时前
【Java】使用国密2,3,4.仿照https 统一请求响应加解密
java·https