SSL/TLS 协议详解

SSL/TLS 协议技术分享会纪要

目的

  • 理解SSL和TLS区别

  • 理解SSL协议在整个网络通信模型中所处的位置

  • 理解SSL、http、https之间的区别和联系

  • 掌握TCP连接的握手过程和SSL连接的握手过程

  • 使用wireshark抓包加深对这一过程的理解

    • 握手操作
    • http、https的心跳机制
    • 纠正http每次都会进行握手的认知误区
  • 加密和解密

    • 非对称加密
    • 对称加密
    • 数字签名
  • 理解SSL 为什么安全?
  • 理解数字签名 为什么有效?

SSL/TLS 简介

  • TLS: Transport Layer Security 传输层安全协议

    • TLS 握手协议(TLS Handshake): 使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听
    • TLS 记录协议(TLS Record): 确定传输层数据的封装格式, 使用握手协议协商出来的key做加密/解密
  • SSL: Secure Sockets Layer 安全套接层协议, TLS 协议 的前身

TLS/SSL 协议在网络层所处的位置

网络参考模型.jpeg
  • http, TLS/SSL 协议同属于应用层
https网络模型.png

HTTPS 和 TLS/SSL 关系

application角度网络模型.png

这个模型把应用层协议分的更细, 将SSL/TLS 协议独立了出来,从这个角度来讲http协议位于更上层。

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

TLS 握手过程

TCP 握手流程

Tcp握手过程.png

SSL的握手流程

TLS握手过程.png

使用wireshark 抓包

  • SSL端口号: 443

  • http 示例

    • 可见完整的tcp握手操作
    • 可见明文信息
    • 可见心跳包的存在 (keep-alive) ,心跳间隔约1秒, 但心跳包持续时间较短
    • 前后间隔较短的请求,不会反复触发握手操作
http抓包截图.png
  • https 实例
    • 可见完整的tcp握手操作
    • 紧接着进行ssl握手操作
    • 可见心跳包的存在 (keep-alive) ,心跳间隔约1秒, 但心跳包持续时间较长


      ![非对称机密过程.png](https://upload-images.jianshu.io/upload_images/2031664-7f8a686014b0e7f5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

验证

加密和数字证书

  • 对称加密:算法公开,密钥保密
  • 非对称加密(加密密钥和解密密钥不一样): 加密公开,解密保密
    • 产生原因

      • 解决对称密钥分配问题
      • 解决数字签名问题
    • 组成

      • 密钥

        • PK(Public Key) : 加密密钥公开
        • EK(Secret Key): 解密密钥私有
      • 算法

        • 加密算法E: 公开
        • 解密算法D: 公开
    • 特性

      • 对于报文X进行D运算和E运算或进行E运算和D运算其结果是一样的
非对称机密过程.png

结论:

  • 在知道公钥的情况下,任何客户端都可以与服务端通信
  • 由于只有服务端持有解密密钥,那么服务端对报文X进行E运算, 客户端对报文进行D运算,则可以得到还原报文X,而且能确认报文的来源于该服务器。

数字签名

  • 鉴别性: 即可以追溯发送者身份
  • 完整性: 即可以确认报文的完整性(没有被篡改)
  • 不可否认性: 即发送者不能抵赖对保温杯的签名
数字签名过程.png

数字签名能起到标识符的作用,但是并不安全,通常会和加密组合使用


兼具保密和数字签名.png

参考文章

SSL协议握手过程报文解析

SSL与TLS的区别以及介绍

详解 HTTPS、TLS、SSL、HTTP区别和关系

提问

客户端如何鉴别数字签名,如何确定其有效性 --Reporter: KNOX

数字签名过程:


手绘数字签名过程.png

数字签名讲解.png

你可能感兴趣的:(SSL/TLS 协议详解)