如何将 HKDF 与 ECDiffieHellmanCng 一起使用

How to use HKDF with ECDiffieHellmanCng

我正在尝试使用 ECDiffieHellmanCng class 在桌面和通过 BLE 连接的设备之间执行密钥交换操作。系统规范要求使用 HKDF 来派生密钥。这似乎不是 ECDiffieHellmanCng class 中散列函数的选项。有没有办法做到这一点?然后我需要获取生成的密钥并将其传递给 AesCng 对象。

ECDiffieHellmanCng 很糟糕,因为它迫使您使用三个预定义 post 处理密钥派生函数(Hash、Hmac 或 Tls)之一。如果其中 none 个符合您的协议,那您就不走运了。

您也许可以使用 Hmac 变体,因为这是 HKDF ("extract") 的第一个内部操作。只需将 HmacKey 属性 设置为 HKDF 中的盐即可。然后自己手动进行第二次Hmac操作("expand")得到最终的HKDF结果