Android:学习笔记之https的连接建立过程

HTTPS

HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是经由HTTP进行通信,但利用SSL/TLS来加密数据包,是以安全为目的的HTTP通道。即在HTTP之下增加的一个安全层,用于保障HTTP的加密传输。
本质是在客户端和服务器中间协商出一套对称密钥,每次发送信息之前将内容加密,收到之后解密,达到内容的加密传输。

HTTPS连接

HTTPS连接过程主要可以划分为以下五步:
1.客户端请求建立TLS连接
2.服务器发回证书
3.客户端验证服务器证书
4.两端协商对称密钥
5.使用对称密钥开始通信

详细的连接建立过程为

a.协商沟通方式以及认证身份

客户端 服务器 客户端TLS版本 非对称加密算法 对称加密算法 哈希算法 客户端随机数 1.Client Hello 2.Server Hello 服务器TLS版本 非对称加密算法 对称加密算法 哈希算法 服务器随机数 服务器证书 3.验证服务器身份 客户端 服务器

步骤1,步骤2之后服务器和客户端拥有的资源如下表

客户端服务器
TLS版本TLS版本
非对称加密算法非对称加密算法
对称加密算法对称加密算法
哈希算法哈希算法
客户端随机数服务器随机数
服务器随机数客户端随机数
服务器公钥服务器私钥

此时客户端也有了服务器的证书,可以对服务器的身份进行验证。
其中的非对称加密算法、对称加密算法、哈希算法合起来被称作CipherSuite。

b.协商对称密钥

客户端确认了服务器的合法身份之后,二者开始协商对称密钥(该对称密钥是用来在密钥协商过程完成后,后续通信的使用),协商对称密钥的过程是使用的是非对称加密,这是https连接建立过程中的第一次加密,也是唯一一次的非对称加密

客户端 服务器 4.Pre-master Secret 客户端 服务器

步骤4:客户端在a过程中获得了服务器随机数后就能够利用现有资源生成Pre-master Secret(本质随机数)。此时客户端可以使用客户端随机数、服务器随机数、Pre-master Secret三者计算出Master Secret,然后通过Master Secret计算出客户端加密密钥、服务端加密密钥、客户端MAC Secret、服务器MAC Secret,过程简化如下图:

Master Secret
客户端随机数
服务器随机数
Pre-master Secret
客户端加密密钥
服务器加密密钥
客户端MAC Secret
服务器MAC Secret

客户端使用服务器证书中包含的服务器公钥加密Pre-master Secret发给服务器。
服务器使用自己的私钥对客户端发过来的加密后的Pre-master Secret解密。
上述过程即为非对称加密过程。
服务器解密之后,同样也是使用客户端随机数、服务器随机数、Pre-master Secret三者计算出Master Secret,然后通过Master Secret计算出客户端加密密钥、服务端加密密钥、客户端MAC Secret、服务器MAC Secret

c.协商密钥的验证

客户端 服务器 5.我要使用加密通信了 6.Finished 将前面所有的 信息(步骤1 234)打包发送 7.我要使用加密通信了 8.Finished 将前面所有的信 息(步骤123 456)打包发送 客户端 服务器

步骤5是几个字节的通知信息,告诉服务器将使用加密通信。
步骤6使用客户端加密密钥进行加密,配合使用客户端MAC Secret进行Hash(HMAC)计算,用来作为身份的验证方式(类似于签名)。

服务端在收到客户端的Finished消息后对消息进行验证:
1.服务器将之前所有的消息(步骤1234)也进行一个Hash
2.服务器将客户端的消息使用客户端加密密钥进行解密
3.判断1和2的数据是否相同,若相同则说明可以信任,并且两边所使用的密钥是相同的
步骤5和6即为一次通过对称加密信息后进行通信的过程。

步骤7和步骤8与步骤5和步骤6的验证过程是相同的,区别在于步骤8中囊括的信息更多些(增加了5和6的消息),加密解密使用的是服务端加密密钥,Hash使用的是服务端MAC Secret进行计算。

d.正式通信

总结

上述完整流程为

客户端 服务器 1.Client Hello 2.Server Hello&证书 3.验证服务器身份 4.Pre-master Secret 5.我要使用加密通信了 6.Finished 7.我要使用加密通信了 8.Finished 客户端 服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值