使用Wireshark分析SSL/TLS

发表于:2017-12-22 09:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:20179216    来源:博客园

  一、基本概念
  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)服务器回答给客户端以下信息
  (3)客户端发送给服务器
  服务器发送给客户端
  服务器端发送change_cipher_spec和finished消息。到这里握手结束。
  下面是一个server证书采用DSA算法的握手过程。由于采用了DH算法交换密钥,多了server_key_exchange这一步。
  WireShark抓到TLS数据包后的显示结果:
相关文章
Wireshark分析TCP三次握手过程

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号