HTTP与HTTPS的区别、http1.0、http1.1、http2.0的区别

HTTP与HTTPS的区别

https://juejin.cn/post/6844903990648389645#heading-8

http是一种超文本传输协议,是一种以明文的方式发送内容,没有任何的加密,如果我们访问一个网站,我们可能在这个网站上输入账号密码之类的操作,那么在账号和密码发送到服务器的过程中就有可能有人在中途截取信息。
为了解决http在传输过程中不加密的问题,在http协议的基础上又增加了ssl协议,这是一个提供数据安全和完整性的协议,也就是负责网络连接的加密。
比如我们访问了一个https的网站,我们的电脑就会和服务器先建立起一个安全的连接通道,然后服务器会发送一份网站的证书信息到我们的电脑,相当于告诉电脑,我们访问的服务器没问题。确认了信息之后,我们的服务器就会生成一个加锁的箱子,这把锁有两把不同的钥匙,一把是给我们电脑的(公钥),一把是给服务器的(私钥)。服务器会把公钥和未锁上的箱子给电脑,我们把信息放到箱子里,然后用公钥锁上再发给服务器,在这个过程中,即使箱子被拦截了,别人因为没有钥匙,也就无法打开箱子获取信息。服务器收到箱子后用私钥解开。


  • 对称加密:

A给B传输数据m,在传输的过程中+e(加密),B收到了数据c后,-e(解密),获得数据m。
加密操作可能更复杂,如m*e+s。

  • 非对称加密:

A把传输数据给B,B首先生成两个具有相关新的数字e(公钥)和d(私钥)。
B把e传给A(以公开的方式), A通过e公钥的某个算法(例如+e)得到一个c(密文),并把c传给B(以公开的方式)。
A收到密文c后,通过密文求解原文的过程不是-e,而是-d(私钥),解得m(明文)。
也就是说加密时用e(公钥)进行加密,解密时用d(私钥)进行解密。

就算你知道e(公钥)和c(密文),你也不知道私钥,无法解密而获得m(明文)。

  • 下面来介绍一种最典型的非对称加密方式:RSA加密算法
  1. 要求B找出两个质数p、q。
  2. n = p * q
  3. f(n) = (p - 1) * (q - 1) (欧拉函数)
  4. 找出公钥e,1 < e < f(n) 且 e和f(n)互斥,在这个条件内随便找一个整数即可。
    找出私钥d,使得e*d/f(n)后的余数为1。

传输的数据是m
加密:m^e / n 求余数c
解密:c^d / n 求余数m(可以证明这个余数一定是m)。

这种算法的安全性如何呢?
传输中可能被截取的数据有:n、e、c
解密需要的数据:n、d、c
黑客要想解密就得根据e求出d,已知公式:e*d/f(n)后的余数为1。所以得知道f(n),要知道f(n)就得先知道p、q,要知道p、q就得对n进行质因数分解。
大数的质因数分解是很困难的。
RSA算法常用的n是1024位的二进制数,目前想分解这么大的数,普通计算机需要计算十年,量子计算机需要计算七天,所以银行系统都会定期进行更新。


http和https的区别

  1. https协议要申请证书到ca,需要一定经济成本;
  2. 连接的端口不一样,http是80,https是443;
  3. http是无状态的、明文传输;https是ssl加密的传输,身份认证的网络协议,相对http传输比较安全。

SSL四次握手的过程

  1. 客户端发出请求
    首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,这被叫做ClientHello请求。

  2. 服务器回应
    服务器收到客户端请求后,向客户端发出回应,这叫做SeverHello。

  3. 客户端回应
    客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。

  4. 服务器的最后回应
    服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。然后,向客户端最后发送下面信息。
    (1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    (2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容。

1: 客户端, 发起一个请求, 请求服务器的公钥(非对称加密的加密方式)
3: 服务器把服务器的公钥返回给客户端
4: 客户端, 用服务器的公钥加密自己的加密方式(浏览器对称加密)
5: 把自己经过加密(服务器公钥加密的) 自己加密的方式给服务器
6: 服务器开始解密,用私钥, 获得了浏览器的加密方式
7: 以后, 客户端就和服务器通过 浏览器的对称加密方式通信

http1.0、http1.1、http2.0的区别

面经
详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值