大多数大学生对于 408 之一的计算机网络的基础是很薄弱的,要想在面试中脱颖而出,那么基础必须要打好,因此本文来详细分析以下 HTTPS 的加密过程,用图文结合的方式,让你加强记忆。
题目
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 次非对称加密,多次对称加密用来通信,正好符合两种算法的使用场景。
举个例子:看浏览器左上的小锁,点连接安全。
详细流程图展示:
暂无评论内容