我正在寻找 .NET 应用程序和嵌入式设备之间的密钥交换解决方案。这两个端点有一个共享的密钥,这使得椭圆曲线 Diffie-Hellman (ECDH) 算法非常适合安全地交换会话的主密钥。
有一个很好的 C++ 库crypto++,它实现了 ECDH 并且适用于嵌入式设备。但是,它的 ECDH 实现与 Mirosoft 的ECDiffieHellmanCng实现不同(如其常见问题解答中所述)。我们希望与 .NET 安全算法保持兼容,以便我们可以坚持使用 PC 应用程序的托管代码(现在,或者如果我们使用 CNG,当我们有一天会放弃 XP 时)。
有没有人见过除了微软之外的与微软兼容的实现?或者,.NET 代码和嵌入式 C++ 代码之间是否有其他好的密钥交换解决方案可与预共享密钥一起使用?
2010-01-27 更新:为了澄清,我正在尝试使用 ECDH 在两个不相互信任的临时端点之间执行双向身份验证和密钥交换,直到他们看到它们共享相同的秘密。这类似于蓝牙配对场景,其中共享密钥在带外交换(除了在我的情况下,设备可能彼此不靠近)。