Je suis à la recherche d'une solution d'échange de clés entre une application .NET et un périphérique embarqué. Les deux extrémités ont une clé secrète partagée, ce qui rend l'algorithme ECDH (Elliptic Curve Diffie-Hellman) excellent pour échanger en toute sécurité un secret principal pour la session.Qu'est-ce qu'une bibliothèque C++ avec une implémentation compatible ECDiffieHellmanCng?
Il existe une bonne bibliothèque C++, crypto++, qui implémente ECDH et convient au périphérique embarqué. Cependant, son implémentation de l'ECDH diffère de l'implémentation ECDiffieHellmanCng de Mirosoft (comme mentionné dans son FAQ). Nous aimerions rester compatibles avec les algorithmes de sécurité .NET afin que nous puissions nous en tenir au code managé pour l'application PC (maintenant, ou si nous utilisons CNG, quand nous abandonnerons XP un jour).
Est-ce que quelqu'un a vu une implémentation en plus de Microsoft qui est compatible avec Microsoft? Sinon, existe-t-il d'autres bonnes solutions d'échange de clés entre le code .NET et le code C++ intégré pour une utilisation avec des clés pré-partagées?
Mise à jour 2010-01-27: Pour clarifier, j'essaie d'utiliser ECDH pour effectuer à la fois l'authentification bidirectionnelle et l'échange de clés entre deux terminaux point de vente qui ne se font pas confiance jusqu'à ce qu'ils voient qu'ils partagent le même secret. Ceci est similaire au scénario d'appariement Bluetooth où le secret partagé est échangé hors bande (sauf dans mon cas, les périphériques peuvent ne pas être proches les uns des autres).
La FAQ que vous liez est la FAQ pour cryptlib de Peter Gutmann - pas pour crypto ++. –
Bonne correction. L'entrée de la FAQ est préférable à travers une mise en garde générale que vous ne pouvez pas supposer que deux implémentations du même algorithme de cryto général fonctionneront les uns avec les autres. J'espère que quelqu'un arrive à savoir ce que fait. –