HTTPS基础和握手过程

什么是HTTPS

HTTPS是HTTP+TLS/SSL。因为HTTP是明文传输,所以会有安全问题,而TLS协议是传输层安全协定。在了解TLS之前,首先要了解一些常识性的概念

加密算法

对称加密算法

对称加密算法就是加密和解密使用的一样的密钥进行加解密。
常见的对称加密算法有DES,AES,现在使用AES较多。如果只是用对称加密的话,密钥泄漏则会造成严重的后果。

非对称加密算法

一对公钥和私钥,公钥加密内容只有私钥可以解开,而密钥加密内容只有公钥可以解开。并且仅有公钥,不能推算出私钥。如果只是用非对称加密的话,数据可能会遭到篡改。

数字签名

为了防止数据被篡改,使用数字签名可以解决。数字签名,就是采用摘要算法对传输的数据提取出摘要,并且用自己的私钥进行加密。这个数字签名会和报文一起发送给接收方。
但是还有有问题,如果接收方不能确认你这个公钥就是来自于发送方的。因此引入了第三方的认证机构,引入了证书。

验证数字签名

首先用公钥解密,然后计算摘要进行对比,符合则签名没问题。

证书

数字证书的出现就是为了解决这个问题。引入一个可靠的第三方认证机构。
一个数字证书,包含公钥,公钥拥有者的信息,有效期,CA的数字签名等。CA的公钥是公开的,

验证证书的真实性

拿到证书后,首先用公钥进行解密,验证数字签名。验证成功则签名未被篡改。

TLS握手协商流程

要想清楚TLS握手的细节流程,那么首先要明确TLS握手是为了干什么,TLS握手是为了建立安全的链接通道,保证数据传输的安全性,不被窃听和篡改。它使用了非对称加密算法和对称加密算法。并且通过非对称加密算法来产生对称加密算法。

一下是一个以RSA算法的握手过程。

第一步:Client Hello,客户端发起连接请求,并提供支持的加密套间,版本,以及产生一个随机数Random1.

第二步:Server Hello,服务端选择合适的加密套件和版本,产生一个随机数Random2.

第三步:Certificate 服务端将自己的证书发送给客户端。

第四步:Server Hello Done 服务端表示Server Hello结束

第五步:Certificate Verify 客户端校验证书。生成Random3,使用Random1,Random2,Random3生成PreMaster key并使用公钥进行加密。

第六步:Client Key Exchange,将PreMaster Key发送给服务端,并使用算法计算出对称加密密钥。服务端收到后,可以将PreMaster
解密,得到Random3,并使用Random1,2,3计算出对称加密密钥。

第七步:Client Cipher Spec Spec,这是一个通知消息,客户端通知服务端,编码改变:之后的消息,都通过对称加密来进行。

第八步:Encrypted HandShake Message
这是一个finish消息,表示客户端握手完成,并且将之前的握手消息使用协商好的密钥进行加密,发送给服务端。服务端收到后,对消息进行解密,如果能解密成功,则表明双方是同一个密钥。

第九步:Change Cipher Spec
这一步是服务端发出的消息改变通知。

第十步:Encrypted HandShacke Message
这是服务端发出的finish消息,使用对称密钥,将之前的握手消息加密发送给客户端,拿给客户端解密。这一步结束之后。TLS连接正式建立。

扩展

以上是一个TLS握手的流程,通过抓包分析,可以复现以上的步骤。不过还有一些细节,比如TLS是支持双向认证的,服务端可以要求客户端提供证书。那么步骤就不止上面一些了。并且如果加密算法不同,还可能会有其他的步骤。这些不在本文的讨论范围内,有兴趣可在参考资料中自行了解更多知识。

参考资料

https://www.jianshu.com/p/7158568e4867

https://blog.csdn.net/hherima/article/details/52469674

https://zh.wikipedia.org/wiki/%E5%82%B3%E8%BC%B8%E5%B1%A4%E5%AE%89%E5%85%A8%E6%80%A7%E5%8D%94%E5%AE%9A#%E5%AF%86%E9%92%A5%E4%BA%A4%E6%8D%A2%E5%92%8C%E5%AF%86%E9%92%A5%E5%8D%8F%E5%95%86

http://www.wxtlife.com/2016/03/27/%E8%AF%A6%E8%A7%A3https%E6%98%AF%E5%A6%82%E4%BD%95%E7%A1%AE%E4%BF%9D%E5%AE%89%E5%85%A8%E7%9A%84%EF%BC%9F/

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值