SSL(Secure Socket Layer)/TLS(Transport Layer Security)

HTTP请求

在这里插入图片描述

用SSL/TLS承载HTTP(HTTPS)

在这里插入图片描述
HTTPS 三个宗旨

  1. 信息不能被解密(机密性:公钥密码/Diffie-Hellman密钥交换)
  2. 信息不能被篡改(完整性:消息认证码)
  3. Web服务器是真正请求的服务器(认证:数字签名)

使用SSL/TLS进行通信

TLS协议是由TLS记录协议(TLS record protocol)和 TLS握手协议(TLS handshake protocol)两层协议叠加而成。位于下层的TLS记录协议负责进行机密位于上层的TLS握手协议负责除加密以外的其他个钟操作
在这里插入图片描述

TLS握手协议

TLS握手协议分别下列4个子协议:握手协议,密码规格变更协议,警告协议和应用数据协议

TLS握手协议作用
握手协议负责在客户端和服务器之间协商决定密码算法和共享密钥,基于证书的认证操作
密码规格变更协议负责向通信对象传达变更密码的方式的信号
警告协议在发生错误时将错误传达给对方
应用数据协议将TLS上面承载的应用数据传达给通信对象的协议

握手协议

在这里插入图片描述
客户端向服务器发送ClientHello消息,将携带发送如下信息

  • 可用的版本号
  • 当前时间
  • 客户端随机数
  • 会话id(重用之前的上下文会用到)
  • 可用的密码套件清单
  • 可用的压缩方式清单
    在这里插入图片描述
    服务器响应客户端请求并返回ServerHello,将携带发送如下信息
  • 使用版本号
  • 当前时间
  • 服务器随机数
  • 会话id(重用之前的上下文会用到)
  • 使用密码套件
  • 使用压缩方式
    在这里插入图片描述
    服务器发送证书清单给客户端(匿名方式通信时,不发送这条信息)
    证书清单内容包括:服务器自身的证书,然后按照顺序发送对服务器证书签名的认证机构的证书
    在这里插入图片描述
    3Certificate信息不足的时候,服务端会发送ServerKeyExchange消息向客户端发送一些必要信息。具体按照所选择密钥套件来决定。当不需要的时候,不发送此消息
    在这里插入图片描述
    服务器发送CertificateRequest向客户端请求证书。进行客户端认证。携带信息如下
  • 服务器能理解的证书类型清单
  • 服务器能理解的认证机构明显清单
    不需要客户端认证时,不发送该消息

在这里插入图片描述
服务器发送ServerHelloDone消息,这一消息表示从ServerHello消息开始的一系列消息的结束。

在这里插入图片描述
当客户端收到服务器发送的5CertificateRequest(请求客户端证书),客户端会把自己证书发送给服务器。或没有收到请求客户端证书这个消息,此消息不发送
在这里插入图片描述
根据所选择的密钥套件发送不一样的数据,根据不同的密钥套件 + 预备主密码,服务器和客户端计算出相同的主密码,然后在根据主密码生成 对称密码的密钥,消息认证码的密钥,对称密码的CBC模式中使用的初始化向量(IV)

密钥套件预备主密码
RSA经过加密的预备主密码
Diffie-HellmanDiffie-Hellman的公开值

在这里插入图片描述当客户端收到服务器发送的5CertificateRequest(请求客户端证书)才会发送此消息,这个消息的目的是向服务器证明自己的确是客户端证书的私钥。为了实现这个目的,客户端会计算”主密码“和”握手协议中传递的消息“的散列值,并加上自己的数字签名后发送给服务器
在这里插入图片描述
该消息并不是握手协议的消息,而是密码规格变更协议的消息。在ChangeCipherSpec消息之前,客户端和服务器之间明文交换了所有关于密码套件的信息,因此发送这一消息,客户端开始使用密码通信的方式
在这里插入图片描述
握手协议到此结束,因为已经完成了密码的切换,因此Finished消息使用切换后的密码套件来发送。负责加密的是TLS记录协议。Finished消息的内容是固定的,因此服务器可以将收到的密文解密,来确认所受到的Finished消息是否正确。验证握手协议是否正常结束,密码套件的切换是否正确

在这里插入图片描述
作用如上

最终切换至握手协议之一的应用数据协议经常业务通信
从结果来看,握手协议完成了下列操作

  • 客户端获得了服务器的合法公钥,完成了服务器认证
  • 服务器获得了客户端的合法公钥,完成了客户端认证(如有需要)
  • 客户端和服务器生成了密码通信中使用的共享密钥
  • 客户端和服务器生成了消息认证码中使用的共享密钥
总过程图

在这里插入图片描述

密码规格变更协议

在通信过程当中,客户端和服务器可以通过重新握手的再次改变密码套件(对应了握手协议一开始的会话id

警告协议

TLS的警告协议是TLS握手协议的一部分,用于当发生错误时通知通信对象,当握手协议的过程中产升了异常,或者发生消息认证码错误,压缩数据无法解压等问题,会使用该协议

应用数据协议

简单来说就是原本的http明文中的内容,当然ssl/tls不单单只能用在http还可以用在 SMTP(简单邮件传输协议),POP3(邮局协议)

TLS记录协议的处理过程

在这里插入图片描述

  1. 将消息分割成多个较短的片段
  2. 对每个片段进行单独的压缩,压缩算法需要与通信对象协商决定
  3. 给经过压缩的片段加上消息认证码(MAC),可以识别出篡改,为了防止重放攻击,在计算消息认证码时,还加上了片段的编号。这里面用到的单向散列函数(hash),以及消息认证码所使用的共享密钥需要与通信对象协商
  4. 通过对称加密的方式,使经过压缩的片段和消息认证码变成密文。这里面用到的对称加密算法以及消息认证码所使用的共享密钥需要与通信对象协商
  5. 最后,经过加密的数据再加上由数据类型,版本号,压缩后的长度组成的报头就是最终的报文数据,其中,数据类型就是TLS握手协议的四个子协议
  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值