国密https握手协议抓包及流程详解

这篇具有很好参考价值的文章主要介绍了国密https握手协议抓包及流程详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简要解释下几个概念。

国密:也就是国家密码局认定的国产密码算法,简称为国密。其中对称密码算法主要有ZUC、SM1、SM4和SM7,非对称密码算法主要有SM2和SM9,杂凑密码算法主要有SM3。

HTTPS:Hypertext Transfer Protocol over Secure Socket Layer(SSL) 或 Hypertext Transfer Protocol Secure,是以安全为目标的http通道,简单讲是http的安全版。 https相当于在HTTP下加入SSL层,https的安全基础是SSL。

SSL:Secure Sockets Layer,安全套接字层。是一种标准安全协议,用于在在线通信中建立Web服务器和浏览器之间的加密链接。

TSL:Transport Layer Security,传输层安全。是 IETF 在 SSL 3.0 的基础上设计的协议,它是 SSL 协议的升级版。两者差别极小,可以理解为 TLS 是 SSL 3.1。

SSL/TSL子协议:

  1. 握手协议 :负责通信双方之间协商决定密码算法和共享密钥。
  2. 密码规格变更协议 :负责向通信对象传达变更密码方式的信号。
  3. 警告协议 :负责在发生错误时将错误传给对方。
  4. 应用数据协议 :是将TLS承载的应用数据传达给通讯对象。

TLCP:传输层密码协议,可以理解为是国密SSL并形成国标GBT38636-2020。TLCP参照了TLSv1.0规范,整个协议握手和加密国产基本一致,但和TLSv1.0并不兼容。主要的不同体现在三个地方:

  1. 协议的版本号不同,握手和加密协议细节不同;
  2. 协议采用的主要是SM2/SM3/SM4算法,不同于TLS采用的国际密码算法;
  3. 采用的是SM2双证书体系。

这里涉及的是HTTPS协议在TLCP握手阶段的消息流程,注意这里客户端与服务器之间采用的是单向身份鉴别,即客户端对服务器端进行身份鉴别。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 消息1:客户端向服务器端发送Client Hello消息。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 Client Hello消息中重要字段包括:

可用的版本号- version

当前时间-GMT Unix Time

客户端随机数-Random Bytes,随机数1。

会话ID- Session ID,恢复之前的会话时会用到。

可用的密码套件清单-Cipher Suites,这里使用的是国密浏览器所以可以看到支持都是国密算法,服务器端将在依照这个列表选择本端支持的算法进行回复确认。

可用的压缩方式清单-Compression Methods

消息2:服务器端向客户端发送Server Hello消息。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 Server Hello消息中重要字段包括:

使用的版本号-version

当前时间-GMT Unix Time

服务器随机数-Random Bytes,随机数2。

会话ID-Session Id

使用的密码套件清单-Cipher Suite,这里服务器端选择了ECC_SM4_CBC_SM3密码套件,也就是SM2公钥算法、SM4-CBC分组密码算法和SM3杂凑算法。具体来说,这里SM2算法密钥交换算法,SM4是加密算法(SM4-CBC)、SM3是校验算法(国标要求为HMAC-SM3)。

使用的压缩方式清单

消息3:服务器端向客户端发送Certificate消息。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 Certificate消息中重要字段包括:

服务器的签名证书:国密使用的双证书体系,签名证书和加密证书分开使用,不可混用。签名证书内容如下。在扩展字段中KeyUsage标识出DigitalSignature为true和contentCommitment为true。即该证书用于数字签名和不可否认性(由nonRepudiation修改而来)。

签名算法-Signature:iso.2.156.10197.1.501,即使用SM3消息摘要然后SM2签名。这里的取值和algorithmIdentifier相同。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 服务器的加密证书:加密证书中在同样在扩展字段中KeyUsage标识出KeyEncipherment为true和dataEncipherment为true,即数字证书中包含的公钥可用来做密钥加密密钥和数据密钥。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 具体公钥信息包含subjectPublickey公钥数据信息和算法名称,例如这里就是使用公钥04c9f......采用iso.2.156.10197.1.301也就是SM2算法进行加密操作。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 消息4:服务器向客户端发送Server Key Exchange消息。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

这里Server Key Exchange是用于生成预主密钥。

消息5:服务器向客户端发送Server Hello Done消息,通知客户端 Hello 时间结束。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 消息6:客户端向服务器端发送Client Key Exchange消息,消息内容取决于双方Hello消息协商出的密钥交换算法,客户端用服务器端加密公钥加密后传输。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 

 消息7:客户端向服务器端发送Change Cipher Spec消息,这不是握手协议,而是密码规格变更协议。客户端告诉服务器我要换密码了。因为已经双方已经交换了密码套件信息,可以开始切换密码进行通信了。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 

后面就开始正常加密通信,服务器端也会发送Change Cipher Spec,之后开始加密通信。

SSL/TLS/TLCP在通信过程中提供机密性、完整性保护。具体来说,先对消息明文M生成MAC然后将M和MAC一起进行加密传输。所以这里我们看到应用数据就是一个加密后的密文字符串。

国密抓包,# 密码应用协议,https,ssl,密码学,网络安全,系统安全

 现在还有一个问题,就是用于MAC完整性和真实性保护的密钥以及数据加密密钥是怎么生产的(这两个密钥称为工作密钥)。工作密钥的长度由选用的密码算法决定,由主密钥、客户端随机数(随机数1)、服务器端随机数(随机数2)、常量字符串经PRF计算生成。其中主密钥由预主密钥、随机数1、随机数2、常量字符串经PRF计算生成。在这个例子里,数据加密算法使用SM4-CBC,所以用于数据加密的密钥长度为128bit。完整性保护使用HMAC-SM3,SM3分组长度为512bit,所以用于验证完整性的工作密钥长度为512bit。文章来源地址https://www.toymoban.com/news/detail-556416.html

到了这里,关于国密https握手协议抓包及流程详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Wireshark抓包分析TCP协议:三次握手和四次挥手

    面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程,为什么总喜欢问这个问题呢? 其实我们平时使用的很多协议都是应用层协议,比如HTTP协议,https协议,DNS协议,FTP协议等;而应用层协议都是要基于传输层的两个协议之上的,也就是TCP协议和UDP协议。我们在使用

    2024年01月21日
    浏览(41)
  • 【三、接口协议与抓包】TCP的三次握手与四次挥手

    你好啊!我是山茶,一个持续探索 AI + 测试之路的程序员。 TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。常常被用于处理实时通信,因此,在传输效率上会稍逊色于UDP协议 报文结构 TCP协议的报文结构如下(图片源于网络,如果侵权,请联系我删除) 对于

    2024年03月14日
    浏览(58)
  • 浅析 TLS(ECDHE)协议的握手流程(图解)

    通过 wireshark 抓取 HTTPS 包,理解 TLS 1.2 安全通信协议的握手流程。 重点理解几个点: TLS 握手流程:通过 wireshark 抓取 HTTPS 包理解。 协商加密:双方通过 ECDHE 椭圆曲线的密钥交换算法,协商出共享的 会话密钥 进行内容对称加密通信,避免传输会话密钥被中间人窃取。 CA 证

    2024年02月07日
    浏览(48)
  • fiddler 手机抓包(含https) 完整流程

    一.使用任一浏览器搜索【fiddler下载安装】,并下载fiddler 安装包。 二.fiddler安装包下载成功后,将下载的fiddler压缩包解压到自定义文件夹【fiddler】或者解压到当前文件夹下,双击文件夹中的【fiddler.exe】文件 三.双击文件后,可以按照下面的流程进行安装。如果是汉化版的那

    2024年02月14日
    浏览(39)
  • 网络扫盲:Tcp协议和hettp、https协议、三次握手四次挥手

    是一种用于传输超文本的协议,是Web应用程序的基础。HTTP协议使用客户端-服务器模型,客户端发出请求,服务器返回响应。HTTP协议是无状态的,即服务器不会记住之前的请求和响应,每个请求和响应都是独立的。HTTP协议使用TCP作为传输协议,通常使用80端口。 HTTP协议的应

    2024年02月04日
    浏览(92)
  • fiddler 手机抓包工具(含https) 完整流程

    第一部分:下载并安装fiddler 一.使用任一浏览器搜索【fiddler下载安装】,并下载fiddler 安装包。 二.fiddler安装包下载成功后,将下载的fiddler压缩包解压到自定义文件夹【fiddler】或者解压到当前文件夹下,双击文件夹中的【fiddler.exe】文件 三.双击文件后,可以按照下面的流程

    2024年02月03日
    浏览(40)
  • Fiddler抓包工具安装后抓取不到Https协议解决办法!!!

    Fiddler刚刚下载安装好后,默认不支持https协议的,想要抓取https,需要手动设置 一、首先点击Tools按钮中的Options…选项  二、选择HTTPS选项,进行图如下三项勾选,最后点击Actions按钮 三、选择将证书保存在桌面  四、保存成功可以在我们的桌面看见证书   五、最后我们需要

    2024年02月16日
    浏览(39)
  • 【国密】Libcurl的Android库编译流程及使用详解

    一、概述 本文旨在提供一个Android libcurl 国密库的编译流程和使用详解 国密算法(SM2/SM3/SM4)是中国国家密码管理局颁布的密码算法标准,用于安全通信、数字签名等领域,本文将使用libcurl库,因为它是一个广泛使用的,支持多种协议的网络传输库,所以需要将libcurl库与国密

    2024年02月13日
    浏览(35)
  • WFD抓包及视频提取

    一、手动抓取tcpdump数据包信息步骤如下: 1、使用USED版本,USB连接测试机和PC 2、adb root–》adb disable-verity–重启手机–》重启后执行adb root–adb remount 挂载成功–adb shell 3、然后在adb shell中执行命令 tcpdump -i p2p0 -w sdcard/XXX自定义的文件名.cap 进行tcpdump数据包抓取不要断开,然

    2023年04月09日
    浏览(28)
  • Wireshark抓包及DNS报文分析

    Wireshark抓包及DNS报文分析 来来来,点我进行5分钟视频学习,冲冲冲 一、抓包整体描述 第一行,帧Frame 2 指的是要发送的数据块,其中,所抓帧的序号为2,捕获字节数等于传送字节数:696字节。 第二行,以太网,有线局域网技术,是数据链路层。源Mac地址为00e04c3639fa;目标

    2023年04月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包