随笔录--HTTPS加密过程

为什么要用 HTTPS ?

安全性

http 是一个简单的请求-响应协议,特点是无状态和明文传输、而https,实际上是 http 加上 SSL / TLS 协议组合形成的一种加密传输协议。如果网站采用 http 协议,因为该协议不加密,极容易遭遇中间人攻击,用户的个人隐私和一些敏感数据很容易泄露。https 则因为 ssl 协议的存在,会对网站与客户端之前传输的数据进行加密,增加中间人破解成本,但是 HTTPS 不是一定安全的。

举个例子:你主动去点击中间人服务器的不安全证书,用户接受了中间人的伪造的证书,那么 CA 就无用了,中间人可以伪造服务端发送的公钥,从而让截取信息。

如存在以下图片情况的问题:

图片

响应速度

HTTP 的响应速度更快,HTTP 需要三次握手,而 HTTPS 还要加上  SSL / TLS 的握手时间,明显增加了不少。

端口

HTTP 是 80 端口,而 HTTPS 是 443 端口。

HTTPS 的核心 - SSL / TLS 协议

SSL 指安全套接字协议( Secure Sockets Layer ),首次发布与 1996 年。经过漏洞修复、版本更新,SSL 从 3.0 版本才算正式发布,前两个版本漏洞过多,SSL 3.0 升级后变成 TLS 1.0,通常把 HTTPS 中的核心加密协议混称为 SSL/TLS。

SSL / TLS 的工作原理

SSL/TLS 的核心要素是非对称加密。非对称加密采用两个密钥,一个公钥,一个私钥。

公钥:加密、认证。

私钥:解密,签名。

非对称加密小总结

1)适合在不可信的环境中安全通信,数据传输。

2)算法复杂,安全性相对于对称加密更高。

3)由于加密速度较慢,不适合大数据量加密和解密,因此后文的 HTTPS 一次非对称加密和多次对称加密的原因由此而来。

常见的非对称加密算法

1)RSA

使用场景:简单易用,用于数据加密和数字签名,应用最广泛的非对称加密算法。

缺点:运算速度慢,不适合大数据量加密

建议用 2048 位或以上的密钥长度,否则破解可能性较大。

2)DSA

使用场景:适合生成数字证书

优点:数字签名速度生成快

缺点:不能应该能有数据加密,而且签名过程需要随机数的保证。

3)ECC

常见的对称加密算法

1)DES

使用 64 位的密钥(有效密钥为 56 位,8 位奇偶校验位)和 64 位的明文进行加密,安全性不够,在短时间内即可被破解。

2)3DES

向 AES 过渡的加密算法,采用加密->解密->加密的方法,当三个密钥均相同,即可实现一次加密,目的是为了兼容 DES,安全性提升,但处理速度不高,因此有了后面的 AES。

3)AES

全称:Advanced Encryption Standard 先进的对称加密算法。使用 128 位、192 位、256 位的密钥对数据进行加密或解密,安全性更高。AES 在速度上比 3DES 快,安全性也领先 3DES。

HTTPS 的加密过程(重点)

1)Client Hello:信息包括:TLS 版本,加密套件,Client 随机数

2)Server Hello:收到 Client Hello,告知 Client 确认 TLS 版本,加密套件,随机数的信息(可以理解为 ACK 模式),然后将自己的 Server 随机数发给 Client,接着发送自己的证书给 Client,证书发送了,而证书里面有公钥,因此公钥也被携带给了 Client。

3)Client 收到证书后,去对照自己的证书信任列表来确认服务器是否可信,并生成一个随机字符串(称为预主密钥),并用收到公钥将其进行加密,将加密后的预主密钥发送给服务器。

4)Server 收到预主密钥后,用自己的私钥(跟公钥是一对,当时和证书一起发送给了客户端,私钥服务端自己留着用于解密)解密预主密钥,获取真正的预主密钥。

5)Client 和 Server 双方使用相同的算法进行通信,双方此时都获得了 Client 随机数、Server 随机数、预主密钥,生成相同的密钥 Key 用于后面通信的对称加密。

6)Client 发送 Finished 消息

7)Server 发送 Finshed 消息

8)成功建立安全连接,使用共同的 Key 对称加密进行通信。

总结:1 次非对称加密,多次对称加密用来通信,正好符合两种算法的使用场景。

举个例子:看浏览器左上的小锁,点连接安全。

图片

详细流程图展示:

图片


 

其他补充

 

1)客户端发起 HTTPS 请求:客户端(一般是浏览器)向服务器发起 HTTPS 请求,请求中包含一个随机数(ClientRandom),该随机数用于后续生成对称加密密钥。

2)服务器发送证书:服务器收到请求后,会向客户端发送自己的数字证书。证书中包含服务器的公钥,并由可信的证书颁发机构(CA)签名,用于验证证书的真实性。

3)客户端验证证书:客户端收到服务器的证书后,会验证证书的有效性。验证包括检查证书是否过期、是否被吊销、是否由受信任的 CA 签名等。

4)客户端生成随机数:客户端生成一个随机数(PreMasterSecret),该随机数用于生成对称加密的会话密钥。

5)客户端使用服务器公钥加密随机数:客户端使用服务器的公钥对生成的随机数进行加密,然后发送给服务器。

6)服务器使用私钥解密随机数:服务器收到客户端发送的加密随机数后,使用自己的私钥进行解密,得到生成的随机数。

7)客户端和服务器生成会话密钥:客户端和服务器使用各自生成的随机数以及 ClientRandom 和 ServerRandom(服务器发送给客户端的另一个随机数)等信息,通过一定的算法生成对称加密的会话密钥。

8)客户端和服务器开始加密通信:客户端和服务器使用会话密钥进行对称加密,保证通信过程中传输的数据的机密性和完整性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值