我正在構建瀏覽器擴展,NodeJS應用程序(服務器)和C#應用程序之間的通信線。我需要使用像Diffie-Hellman或ECDH這樣的方法在每個實例之間交換密鑰,以便我可以開始加密敏感數據。是我可以在NodeJS,CSharp和WebCrypto之間使用DH/ECDH方法嗎?
通信線路如下:
瀏覽器 < - >節點 < - >CSHARP
瀏覽器需要僅與節點通信,並且CSHARP應用程序也只需要與節點進行通信。
我需要找到執行某種像ECDH密鑰交換,在大多數瀏覽器(可browserified節點代碼)的作品和對端的NodeJS兼容實現的方法。我需要找到另一種方法來在NodeJS和C#之間做同樣的事情。
我可以看到C#中有很多使用ECDH的例子(例如:https://blogs.msdn.microsoft.com/shawnfa/2007/01/22/elliptic-curve-diffie-hellman/),但我沒有看到像使用Node一樣的ECDH曲線。在這些平臺之間進行密鑰交換有一些常見的方式嗎?
謝謝!墊片的想法應該很好。在進一步挖掘之後,似乎CSharp具有可用於ECDH的曲線規範(https://msdn.microsoft.com/en-us/library/system.security.cryptography.cngalgorithm(v=vs.110).aspx),但我如何將它們與Node節點相匹配?舉例來說,我有一些約定俗成的「ECDiffieHellmanP521」和C#的一面「ECDiffieHellmanP384」,但沒有對節點側類似的跡象,也許除了「secp521r1」和「secp384r1」 ... –
你至少可以嘗試的。這看起來是正確的。 –
我嘗試了C#端的ECDiffieHellmanP256和javascript中的prime256v1曲線。同時使用C#端的公鑰來計算祕密,它會引發錯誤。 (未知)的事件處理程序中的錯誤:錯誤:未知點格式在ShortCurve.decodePoint(background.js) at KeyPair._importPublic(background.js) at new KeyPair(background.js) at Function.fromPublic(background .js:34695:10) at EC.keyFromPublic(background.js:34473:18) at ECDH.computeSecret(background.js:31187:28) –