使用c#与香港发展基金进行ECDH



在使用原生windows函数的windows中,使用HKDF作为密钥导出函数来实现椭圆曲线diffie-hellman的最佳方法是什么。

我无法从获取ECDiffieHellmanCng(https://learn.microsoft.com/en-us/windows/win32/seccng/cng-portal)运行时只支持以下KDF(tls、hmac、hash(

其他库不是首选(只有在没有本机支持的情况下(

目前,我还没有找到只使用windows(cng或dotnet5 crypto-lib(进行ECDH密钥交换的方法,该交换不使用密钥派生函数(以获得纯密钥(。

所以我无法使用HKDF密钥推导函数。

我去的方式是使用Bouncy Castle ECDH和Bouncy Castle HKDF。

这对我很有效。

遗憾的是,我不得不部署另一个依赖项(即使它是一个很棒的加密库(

您实际上可以使用ECDiffieHellmanCng库与HKDF进行ECDH。DeriveKeyFromHmac((执行密钥协议以及HKDF提取功能,因此剩下的就是执行HKDF扩展以获得共享机密,例如:

var ecdh = new ECDiffieHellmanCng();
var extractedSecret = ecdh.DeriveKeyFromHmac(otherPartyKey, HashAlgorithmName.SHA256, salt, prependData, appendData);
var sharedSecret = HKDFExpand(extractedSecret, info, length);

最新更新