我正在尋找.NET應用程序和嵌入式設備之間的密鑰交換解決方案。兩個端點具有共享密鑰,使得橢圓曲線Diffie-Hellman(ECDH)算法非常適合安全地交換會話的主密鑰。什麼是具有ECDiffieHellmanCng兼容實現的C++庫?
有一個很好的C++庫,crypto++,它實現了ECDH並且適用於嵌入式設備。但是,ECDH的實現與Mirosoft的ECDiffieHellmanCng實現不同(正如其暗示的FAQ)。我們希望保持與.NET安全算法的兼容性,以便我們可以堅持用於PC應用程序的託管代碼(現在,或者如果我們使用CNG,當我們有一天放棄XP時)。
有沒有人看到除微軟以外的兼容微軟的實現?或者,.NET代碼和嵌入式C++代碼之間是否還有其他良好的密鑰交換解決方案,以便與預共享密鑰一起使用?
更新2010-01-27:爲了澄清,我試圖使用ECDH在不相互信任的兩個ad-hock端點之間執行雙向身份驗證和密鑰交換,直到他們看到他們共享同一個祕密。這與藍牙配對方案類似,其中共享機密是在帶外交換的(除非我的情況下設備可能不在彼此附近)。
您鏈接到的FAQ是Peter Gutmann的cryptlib的常見問題解答 - 不適用於crypto ++。 – 2010-01-25 19:22:36
好的修正。常見問題解答條目最好是作爲一般性警告,您不能假設相同的通用cryto算法的兩個實現可以相互協作。我希望有人碰巧知道是什麼。 – 2010-01-25 19:46:32