HTTPS协议的加密策略

150 阅读4分钟

HTTPS对比HTTP来说会更加安全,得益于他的SSL/TLS加密,那SSL或者TLS加密都是什么呢?

SSL是TLS的前身,现在更多使用的加密是TLS,TLS是一种混合加密,还使用了数字签名和证书的技术,所以要说TLS加密,我们先要了解清楚当前主流的加密算法

1.摘要算法-不可逆

常见的摘要算法有MD5(生成128bit的散列值),SHA-1(生成160bit的散列值),SHA-2(SHA-256,SHA-384,SHA-512)等,特点是不管多大的数据,最终都会生成一个固定位数的加密数据,且是不可逆的,所以也叫摘要算法,目前已经不安全,MD5可以通过www.cmd5.com解析常见的密码

2.对称加密

常见的对称加密有AES,DES等,特点是加密和解密使用的是同一把秘钥

3.非对称机密

常见的非对称加密有RSA,特点是会生成2把秘钥:公钥和私钥,可以使用公钥解密私钥加密的数据,也可以使用私钥解密公钥加密的数据

4.混合密码系统

加密步骤: 截屏2021-09-14 上午11.32.43.png

4.1消息发送者要拥有消息接收者的公钥

4.2生成会话秘钥,作为对称加密的秘钥,加密消息

4.3用消息接收者的公钥,加密会话秘钥

4.4将2,3生成的加密结果,一并发给消息接收者

发送出去的内容包括:

用会话秘钥加密的消息(加密方法:对称加密)

用公钥加密的会话秘钥(加密方法:非对称加密)

解密步骤: 截屏2021-09-14 上午11.32.52.png

4.5消息接收者用自己的私钥解密出会话秘钥

4.6再用第一步解密出来的会话秘钥,解密消息

5.数字签名

截屏2021-09-14 上午11.17.11.png

这项技术是为了针对中间人攻击,证明数据是发送者发的不是某个攻击人发的,而由发送者进行签名的一项技术,大概流程为:

5.1消息发送者生成公钥私钥,把公钥给接收者

5.2消息发送者把消息通过单向散列函数生成散列加密消息

5.3消息发送者用自己的私钥对散列加密消息进行加密,生成签名

5.4消息发送者把明文和用签名发给接收者

5.5接收者通过发送者的公钥对签名进行解密,得到散列加密信息

5.6接收者用散列函数对明文进行加密

5.7把6的加密数据和5的加密数据进行对比

6.证书

截屏2021-09-14 上午11.19.03.png

是为了防止公钥在传输过程中出现泄漏产生的安全问题

公钥证书:包含姓名,邮箱等个人信息,以及此人的公钥

并由认证机构CA施加数字签名,浏览器及操作系统都内置了各大CA机构的公钥

HTTPS的加密流程:

1.三次握手

2.TLS链接(为了同步发送端和接收端的会话秘钥(对称加密)及加密规则)

3.消息发送者拿到CA机构的证书,里面包含了消息接收者的公钥,使用公钥对包进行加密传输

TLS1.2连接的步骤,交换秘钥算法为ECDHE:

1.ClientHello,客户端发送,包含TLS版本,支持的加密组件(秘钥加密算法,对称加密算法,摘要算法),随机数

2.Server Hello,服务端发送,包含TLS版本,选择的加密组件,随机数

3.Certificate,服务器发送,服务器的公钥证书(CA认证)

4.Server Key Exchange,服务端发送,用以实现ECDHE(秘钥交换)算法的其中一个参数(Server params),为了防止伪造,Server Params经过了服务器私钥签名

5.Server Hello Done,服务端发送,告知客户端协商部分结束

客户端验证公钥签名

6.Client Key Exchange,客户端发送,用以实现ECDHE算法的另一个参数

客户端,服务器都可以使用ECDHE算法

根据Server Params,Client Params计算出一个新的随机秘钥串Pre-master secret

然后结合Client Random,Server Random,Pre-master secret生成用以加密会话的会话秘钥(主密钥),还会分别派生出客户端发送消息的秘钥和服务器端发送消息的秘钥

7.Change Cipher Spec,客户端发送,告诉服务器之后的通信会采用计算出的会话秘钥进行加密

8.Finished,客户端发送,包含连接至今全部报文的整体校验值(摘要),加密之后发送给服务器

9.Change Cipher Spec,服务端发送

10.Fished