.NET アプリと組み込みデバイス間のキー交換ソリューションを探しています。2 つのエンドポイントには共有の秘密鍵があるため、楕円曲線 Diffie-Hellman (ECDH) アルゴリズムは、セッションのマスター シークレットを安全に交換するのに優れています。
ECDH を実装し、組み込みデバイスに適した優れた C++ ライブラリcrypto++があります。ただし、ECDH の実装は、Mirosoft のECDiffieHellmanCng実装とは異なります ( FAQで言及されています)。.NET セキュリティ アルゴリズムとの互換性を維持して、PC アプリのマネージド コードを使い続けることができるようにしたいと考えています (現在、または CNG を使用している場合は、いつか XP を廃止するとき)。
Microsoft と互換性のある Microsoft 以外の実装を見た人はいますか? または、.NET コードと埋め込み C++ コードの間で事前共有キーを使用するための優れたキー交換ソリューションは他にありますか?
更新 2010-01-27: 明確にするために、ECDH を使用して、2 つのアドホック エンドポイント間で双方向認証とキー交換の両方を実行しようとしています。これらのエンドポイントは、同じ秘密を共有していることを確認するまで、お互いを信頼しません。これは、共有シークレットが帯域外で交換される Bluetooth ペアリングのシナリオに似ています (ただし、私の場合、デバイスが互いに近くにない可能性があります)。