• 使用wireshark分析SSL/TLS


    一、基本概念

      SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。

        TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。

        SSL/TLS位于传输层和应用层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

    1、不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。

    (1) 窃听风险(eavesdropping):第三方可以获知通信内容。

    (2) 篡改风险(tampering):第三方可以修改通信内容。

    (3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。

    2、SSL/TLS协议是为了解决这三大风险而设计的,希望达到:

    (1) 所有信息都是加密传播,第三方无法窃听。

    (2) 具有校验机制,一旦被篡改,通信双方会立刻发现。

    (3) 配备身份证书,防止身份被冒充。

    3、SSL/TLS协议的基本过程是这样的:

    (1) 客户端向服务器端索要并验证公钥。

    (2) 双方协商生成"对话密钥"。

    (3) 双方采用"对话密钥"进行加密通信。

    前两步又称为“握手阶段(handshake)”

    4、握手阶段的详细过程

    可分为5步(使用Diffie – Hellman算法):
    第一步,浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
    第二步,服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。
    第三部,并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey。
    第四部,浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。
    第五部,服务器发给浏览器一个session ticket。

     二、步骤

     (1)客户端向服务器提供以下信息

    (2)服务器回答给客户端以下信息

    4

     

    (3)客户端发送给服务器

    服务器发送给客户端
    服务器端发送change_cipher_specfinished消息。到这里握手结束。

    下面是一个server证书采用DSA算法的握手过程。由于采用了DH算法交换密钥,多了server_key_exchange这一步。

     的WireShark抓到TLS数据包后的显示结果:

  • 相关阅读:
    JQuery Ajax 在asp.net中使用总结
    直接拿来用!最火的Android开源项目(一)
    专访邓凡平:Android开发路上的快速学习之道
    C/C++使用心得:enum与int的相互转换
    学习汇编的第一步
    《汇编程序》王爽实验9的解法(显示的问题)
    《汇编程序》王爽实验10.2的解法
    GDB调试精粹及使用实例
    aptget 使用详解
    《汇编程序》王爽实验10.3的解法
  • 原文地址:https://www.cnblogs.com/jmjm/p/7906174.html
Copyright © 2020-2023  润新知