在使用原生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);