08-HTTPS与加密

本文深入解析了HTTPS的安全机制,包括对称加密与非对称加密、摘要算法的作用,以及HTTPS如何通过混合加密、数字签名和数字证书确保数据传输的安全。详细阐述了SSL/TLS连接建立过程,确保了在不安全网络上的信息保密性、完整性和来源验证。
摘要由CSDN通过智能技术生成

系列文章:

01-计算机网络的体系结构
02-IP网络层
03-TCP和UDP的基本认识
04-TCP三握四挥
05-TCP的重传机制
06-TCP的流量控制,拥塞控制
07-Http的基础知识
08-HTTPS与加密
09-其它

参考博客:

小林coding: 硬核!30 张图解 HTTP 常见的面试题

一. HTTP 与 HTTPS 有哪些区别?

  1. https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
  2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。(但是不一定必须是这个,这个只是默认,可以自己设置)
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

二.加密算法

对称加密

通信双⽅使⽤同⼀个密钥,使⽤加密算法配合上密钥来加密,解密时使⽤加密过程的完全逆过程配合密钥来进⾏解密。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ktVTKBH-1624192103920)(C:\Users\21012\Desktop\计算机网络\wps1.png)]

经典算法

DES(56 位密钥,密钥太短⽽逐渐被弃⽤)、AES(128 位、192 位、256 位密钥,现在最流⾏)

对称加密作⽤

加密通信,防⽌信息在不安全⽹络上被截获后,信息被⼈读取或篡改。

对称加密(如AES)的破解

破解思路

  • 拿到⼀组或多组原⽂-密⽂对
  • 设法找到⼀个密钥,这个密钥可以将这些原⽂-密⽂对中的原⽂加密为密⽂,以及将密⽂解密为原⽂的组合,即为成功破解

反破解

⼀种优秀的对称加密算法的标准是,让破解者找不到⽐穷举法(暴⼒破解法)更有效的破解⼿段,并且穷举法的破解时间⾜够⻓(例如数千年)。

对称加密的缺点

密钥泄露:不能在不安全⽹络上传输密钥,⼀旦密钥泄露则加密通信失败。

非对称加密

原理:使⽤公钥对数据进⾏加密得到密⽂;使⽤私钥对数据进⾏解密得到原数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtxUIXM7-1624192103926)(file:///C:\Users\21012\AppData\Local\Temp\ksohtml33212\wps4.png)]

非对称加密有以下特性:

  • 对于一个公钥,有且只有一个对应的私钥。
  • 公钥是公开的,并且不能通过公钥反推出私钥。
  • 通过私钥加密的密文只能通过公钥能解密,通过公钥加密的密文也只能通过私钥能解密。

使⽤⾮对称加密通信,可以在不可信⽹络上将双⽅的公钥传给对⽅,然后在发消息前分别对消息使⽤对⽅的公钥来加密和使⽤⾃⼰的私钥来签名,做到不可信⽹络上的可靠密钥传播及加密通信。

经典算法

RSA(可⽤于加密和签名)、DSA(仅⽤于签名,但速度更快)

⾮对称加密(如RSA、ECDSA)的破解

破解思路

  • 和对称加密不同之处在于,⾮对称加密的公钥很容易获得,因此制造原⽂-密⽂对是没有困难的事

  • 所以,⾮对称加密的关键只在于,如何找到⼀个正确的私钥,可以解密所有经过公钥加密过的密⽂。找到这样的私钥即为成功破解

  • 由于⾮对称加密的⾃身特性,怎样通过公钥来推断出私钥通常是⼀种思路(例如RSA),但往往最佳⼿段依然是穷举法,只是和对称加密破解的区别在于,对称加密破解是不断尝试⾃⼰的新密钥是否可以将⾃⼰拿到的原⽂-密⽂对进⾏加密 和解密,⽽⾮对称加密时不断尝试⾃⼰的新私钥是否和公钥互相可解。

反破解

和对称加密⼀样,⾮对称加密算法优秀的标准同样在于,让破解者找不到⽐穷举法更有效的破解⼿段,并且穷举法的破解时间⾜够⻓。

三. 摘要算法

摘要算法用来实现完整性,能够为数据生成独一无二的「签名」,用于校验数据的完整性,解决了篡改的风险。

要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。

摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算摘要很容易,但通过摘要反推原数据却非常困难。而且,对原始数据做一个bit的修改,都会导致计算出的摘要完全不同。摘要算法就是通过摘要函数对任意长度的数据计算出固定长度的摘要。

常见的摘要算法有 MD5、SHA 等。

四.HTTPS是如何保证数据传输是安全的

  • 文件内容不能被读取(混合加密)
  • 文件内容不能被篡改(数字签名)
  • 文件不能被掉包(数字证书)
混合加密

对称加密使用同一份密钥,在不安全网络上传输会有密钥泄露的风险。但是运算速度快,性能好。而非对称加密刚好相反,它使用一对密钥保证了数据的安全传输但是性能差。所以采用了混合加密的方式。

在通信建立前采用非对称加密的方式加密 交换会话密钥(对称加密的密钥),后续就不再使用非对称加密。在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。

假设这份文件被黑客截获,但是黑客没有乙的私钥无法解出对称秘钥,也就无法解密文件内容。但是这里有个风险,虽然黑客无法解密文件内容,但他可以自己生成一份秘钥并用乙的公钥加密,再用这份秘钥加密一份伪造的文件发给乙,这种情况下乙收到的就是被篡改的文件。

数字签名

数字签名就是用 摘要算法 提取出源文件的摘要并用 私钥 进行加密后的内容。

针对上面那个问题,甲在发送文件时再附带上源文件的数字签名。如果被黑客截取到加密后的文件和数字签名,黑客即使使用甲的公钥解出了文件摘要,由于摘要算法的特性黑客也无法还原出原始内容。但乙可以解密出文件内容再用同样的摘要算法提取出摘要来和数字签名里的摘要进行比对,摘要一致则说明文件没有被篡改过。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AhJdNvPF-1624192103929)(file:///C:\Users\21012\AppData\Local\Temp\ksohtml33212\wps10.png)]

目前为止还有一个风险就是乙无法确定自己用的公钥就是甲提供的,如果黑客将乙手里的甲的公钥替换成自己的并用自己的私钥生成数字签名,那么乙还是会受到被篡改的文件。

数字证书

数字证书的出现就是为了解决上述提到的问题,数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。

数字证书里一般会包含公钥、公钥拥有者名称、CA 的数字签名、有效期、授权中心名称、证书序列号等信息。

数字证书如何确保列出的用户就是公钥的拥有者呢?关键点是 CA 的数字签名,CA会用自己的私钥将证书内容的摘要进行加密。因为 CA 的公钥是公开的,任何人都可以用公钥解密出 CA 的数字签名的摘要,再用同样的摘要算法提取出证书的摘要和解密 CA 数字签名后的摘要比对,一致则说明这个证书没有被篡改过,可以信任。

五. HTTPS的工作原理

在客户端和服务器之间协商出⼀套对称密钥, 每次发送信息之前将内容加密, 收到 之后解密, 达到内容的加密传输

六. SSL/TLS连接建立过程

SSL/TLS 协议基本流程:

  • 客户端向服务器索要并验证服务器的公钥。
  • 双方协商生产「会话秘钥」。
  • 双方采用「会话秘钥」进行加密通信。

SSL/TLS 协议建立的详细流程:

1. ClientHello

首先,由客户端向服务器发起加密通信请求,也就是 ClientHello 请求。在这一步,客户端主要向服务器发送客户端支持的 TLS 协议版本,客户端支持的密码套件列表( 加密算法,hash算法,压缩算法等),同时会发送一个随机数Client Random) ,后面用于生产「会话秘钥」。

2. SeverHello

服务器收到客户端请求后,向客户端发出响应,也就是 SeverHello。服务器回应的内容有如下内容:确认 TLS 协议版本确认的密码套件列表,服务器生产的随机数Server Random),后面用于生产「会话秘钥」。以及服务器的数字证书。

3.pre-master secret

客户端收到服务器的回应之后,首先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送:一个随机数(pre-master secret)(注意这个随机数是使用非对称加密来发出去的)。服务器收到后,这样客户端和服务端都拿到了三个随机数,客户端随机数,服务端随机数,以及这个pre-master secret。

然后双方都会拿着这三个随机数 算出一个Master secret的东西。然后用它就可以得到加密通信时的 客户端加密密钥 和 服务端加密密钥。

4. 客户端的最后回应

发完第三个随机数后,客户端会发出一个通知,表示随后的信息都将用加密通信。然后会发出握手结束通知,表示客户端的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供服务端校验。

5. 服务端的最后回应

然后服务器也会发出通知,表示随后的信息都将用加密通信。之后发出服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供客户端校验。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值