美文网首页程序员
SSL/TLS 协议详解

SSL/TLS 协议详解

作者: 狼性刀锋 | 来源:发表于2019-02-27 17:07 被阅读3次

    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://img.haomeiwen.com/i2031664/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 协议详解

        本文链接:https://www.haomeiwen.com/subject/tdifuqtx.html