我一直在寻找 RFC 2246 中 PRF 函数的实现。我找到了三个。一个在这里,一个来自 openSSL 库,一个来自 wpa_supplicant。它们都返回不同的结果。所以我的第一个问题是:某处是否有样本 PRF 输入和样本 PRF 输出?
该功能是从 PHP 连接到 .NET Web 服务(受 WS-Security 保护)的一部分。
到目前为止我发现的是这个。我的客户首先使用用户名/密码和随机数发送一个令牌请求——这是一个 RST。服务器在其 RSTR 中以另一个 nonce 和一个安全令牌进行响应。我的客户的下一个请求应该带有一个签名,其密钥来自两个随机数和一个“主密钥”。该派生密钥是根据 RFC 2246 计算的。这就是为什么我需要一个可靠的实现。
即使我有一个可靠的实现,在 WS-Security 的上下文中,该函数的参数是什么?PRF 函数应采用三个参数,即:
秘密,标签,种子。
我在这里读到,微软使用的标签是“WS-SecureConversationWS-SecureConversation”,但那篇文章是在 2006 年写的……现在,秘密是什么?是原密码吗?安全令牌?这些的组合?最后,种子是什么?我有两个随机数——我是连接它们,还是它们,异或?
我被严重卡住了。非常感谢任何帮助。