【问题标题】:Server public key in server key exchange message EAP-TLS服务器密钥交换消息 EAP-TLS 中的服务器公钥
【发布时间】:2014-09-15 06:20:43
【问题描述】:

我从 RADIUS 服务器收到此 EAP-TLS 片段:

我在 C 语言的一个 uint8_t 数组中收到了这个数据包,当我将这些位与此消息中包含的公钥进行比较时,我发现它们都是不同的。这使我相信公钥已被加密。如果是这样,它是如何加密的,我该怎么做才能检索公钥?它是否与 pubkey 后面的签名(256 位)有关?我需要它来完成两边的DH参数生成。

谢谢!

【问题讨论】:

  • 区别在哪里?至少 8 个字节在我看来是一样的。
  • 如何在 C 中接收它们?是否存在字节网络排序问题?
  • 区别在于公钥和签名,即EC Diffie-Hellman Server Params,是的,其中一些是相同的,但大多数是不同的。我使用原始套接字在 C 中接收它们,我不认为这是一个字节顺序问题,因为其余字节是完美的

标签: c ssl openssl wireshark


【解决方案1】:

我在 C 中的一个 uint8_t 数组中收到了这个数据包,当我将这些位与此消息中包含的公钥进行比较时,我发现它们都是不同的。

服务器的公钥B(即g ^ b应该在协议的每次运行中都不同。如果您看到重复值,则说明有问题。请参阅RFC 4492,第 18 页:

public:临时 ECDH 公钥

“ephemeral”是暂时的,用过一次就扔掉。


它是如何加密的,我可以做些什么来检索公钥

它没有加密;它是一个使用过一次的临时密钥。


是否与公钥后面的签名(256位)有关?

没有。


OpenSSL 有一个关于椭圆曲线密码学的 wiki 页面。见Elliptic Curve Cryptography

【讨论】:

  • 我想你误解了我的问题,我将同一个数据包的内容复制到了一个 uint8_t[] 数组中,并打印了数组的内容。当我比较每个单独的索引时,我发现它们与我在 Wireshark 中看到的不同。感谢您清除签名部分
  • 所以我很清楚:您在编程网站上问过 Wireshark 复制/粘贴问题?叹息....
  • 我的问题是,为什么我通过网络收到的数据包的内容与 Wireshark 显示的不同。我不知道这是不是复制/粘贴问题
猜你喜欢
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 2016-02-27
相关资源
最近更新 更多