【发布时间】:2011-01-09 04:02:17
【问题描述】:
我正在寻找 .NET 应用程序和嵌入式设备之间的密钥交换解决方案。这两个端点有一个共享的密钥,这使得椭圆曲线 Diffie-Hellman (ECDH) 算法非常适合安全地交换会话的主密钥。
有一个很好的C++库crypto++,它实现了ECDH,适用于嵌入式设备。但是,它的 ECDH 实现与 Mirosoft 的 ECDiffieHellmanCng 实现不同(正如其 FAQ 所暗示的那样)。我们希望与 .NET 安全算法保持兼容,以便我们可以坚持使用 PC 应用程序的托管代码(现在,或者如果我们使用 CNG,当我们有一天会放弃 XP 时)。
有没有人见过除 Microsoft 之外的与 Microsoft 兼容的实现?或者,在 .NET 代码和嵌入式 C++ 代码之间是否有其他好的密钥交换解决方案可与预共享密钥一起使用?
2010-01-27 更新:澄清一下,我正在尝试使用 ECDH 在两个互不信任的临时端点之间执行双向身份验证和密钥交换,直到他们看到它们共享同样的秘密。这类似于带外交换共享密钥的蓝牙配对场景(除了在我的情况下,设备可能彼此不靠近)。
【问题讨论】:
-
您链接到的常见问题解答是 Peter Gutmann 的 cryptlib 的常见问题解答 - 不适用于 crypto++。
-
很好的修正。最好通过常见问题解答条目作为一般警告,您不能仅仅假设同一个通用加密算法的两个实现可以相互工作。我希望有人碰巧知道是做什么的。
标签: c++ security cryptography shared-secret