Я ищу решение для обмена ключами между приложением .NET и встроенным устройством. Две конечные точки имеют общий секретный ключ, что делает алгоритм Диффи-Хеллмана с эллиптической кривой (ECDH) превосходным для безопасного обмена главным секретом для сеанса.
Существует хорошая библиотека C ++, crypto ++ , которая реализует ECDH и подходит для встроенного устройства. Однако его реализация ECDH отличается от реализации Mirosoft ECDiffieHellmanCng (как упоминалось в FAQ ). Мы хотели бы оставаться совместимыми с алгоритмами безопасности .NET, чтобы мы могли придерживаться управляемого кода для приложения для ПК (сейчас, или если мы будем использовать CNG, когда мы когда-нибудь выпустим XP).
Кто-нибудь видел реализацию, кроме Microsoft, которая совместима с Microsoft? В качестве альтернативы, существуют ли другие хорошие решения для обмена ключами между кодом .NET и встроенным кодом C ++ для использования с предварительно общими ключами?
Обновление 2010-01-27: Чтобы уточнить, я пытаюсь использовать ECDH для выполнения двусторонней аутентификации и обмена ключами между двумя конечными точками ad-hock, которые не доверяют друг другу, пока не увидят, что они совместно используют тот же секрет. Это похоже на сценарий сопряжения Bluetooth, когда общий секретный ключ передается вне полосы (за исключением того, что в моем случае устройства могут не находиться рядом друг с другом).