【问题标题】:TLS Extended Master Secret- calculate session hashTLS Extended Master Secret - 计算会话哈希
【发布时间】:2016-08-16 07:05:53
【问题描述】:

我有使用 openssl 库手动剖析 ssl/http 流量的工具。它在大多数情况下都可以正常工作,但是当客户端/服务器使用 Extended Master Secret 扩展时会失败。

在握手的最后阶段发生了失败,在该阶段执行了测试加密数据的验证。

据我了解,为了使此扩展程序正常工作,我需要使用特定的 TLS 字段(客户端问候、服务器问候、密钥交换)正确填充握手缓冲区,然后应根据握手缓冲区的散列生成主密钥。

不幸的是,它不适合我。

所以我的问题是应该对哪些 tls 打包进行散列以生成正确的主密钥?

将不胜感激任何 cmets。 谢谢。

PS:我从 github 下载了 openssl 的实验版本,实现了这个功能。

openssl s_server/s_client 使用 corespond 扩展,我可以在 Wireshark 中看到它,并且能够使用服务器 pem 文件解码流量。

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserInformation Security Stack Exchange 会是一个更好的提问地方。还有Where do I post questions about Dev Ops?.
  • openssl 是一个编程加密框架,这是一个问题,关于在调用 tls1_generate_master_secret 函数之前我需要调用哪个函数(以及以何种顺序)。为什么这个问题不是关于开发的?谢谢。
  • 该问题不包含代码引用,甚至没有来自您的特殊工具或 OpenSSL 的一行。这与编程无关:"...我的问题 - 应该对哪些 tls 打包进行散列以生成正确的主密钥"。您应该将其带到为您的问题设计的网站。或者,把它留在这里,得不到答案。适合自己。

标签: ssl openssl


【解决方案1】:

您需要执行以下操作来生成会话哈希

1) 附加所有握手消息,除了按到达顺序加密的握手,请不要在握手中包含记录头。只有消息和消息头

2) 基于散列,简单地说, 哈希算法因密码套件和协议版本而异 TLS1 和 TLS1.1 混合了 SHA1 和 MD5(各 16 位) TLS1.2 主要是基于密码套件的 SHA256 或 SHA384。

【讨论】:

  • RFC 说使用 tools.ietf.org/html/rfc2104 中定义的 HMAC 算法。这个哈希的关键/种子是什么?对于常规主密钥,它是客户端随机和服务器随机连接。会话哈希会是什么? client-random 和 server-random 会成为 session-hash 的种子,而 session-hash 又会成为 EMS 的种子吗?
  • 我不记得明确设置种子,我使用了来自所选密码套件的哈希算法并对上述会话详细信息进行哈希处理。它对我有用。您可以参考 GNU TLS 代码,以及它们如何散列会话信息。它比 OpenSSL 更容易导航。
猜你喜欢
  • 2016-06-23
  • 2017-02-04
  • 2012-04-14
  • 2014-01-14
  • 1970-01-01
  • 2023-02-23
  • 2017-12-26
  • 2011-12-08
  • 1970-01-01
相关资源
最近更新 更多