4

我有一组用于对称加密/解密的预定义明文密钥。这些密钥用于与连接到 PC 的硬件设备进行加密通信。我想使用 CNG 密钥存储提供程序来安全地存储这些密钥。加密和解密必须在 CNG 之外进行。我只需要一个安全的地方来存储和从哪里检索我的预定义明文密钥。最近几天我研究了 CNG 函数参考,但找不到任何方法将按名称标识的纯文本对称密钥导入/导出到 CNG 密钥容器中。

我知道 CryptoAPI 提供了导入/导出会话密钥的功能。但是这个旧 API 不提供持久(会话)密钥,也无法在密钥容器中按名称选择/识别密钥。

非常感谢任何帮助。提前致谢。

4

1 回答 1

4

恐怕您无法获得直接解决方案,因为 CNG 密钥存储提供商目前支持非对称密钥,但不支持对称密钥。只有原始提供者支持对称密钥。

该模型适用于必须长期保护的非对称密钥,对称密钥仅用于一个会话,然后被丢弃。这些对称密钥可能源自非对称密钥,例如 Diffie-Hellman 或 ECDH。

您说您希望安全地存储密钥,但加密/解密是在 CNG 之外完成的。根据您要防御的威胁,这可能不是正确的方法。通常,如果您将密钥存储在密钥存储提供程序中,您希望在密钥存储提供程序内部完成加密操作,并且不希望密钥永远离开它(除非由另一个密钥加密),因为这会将密钥材料暴露给一个攻击者。

但是,如果您确定这是您想要的,一种选择是在您的密钥存储提供程序中生成一个 RSA 密钥,并使用它来加密和解密对称密钥。您可以将加密的对称密钥 blob 存储在其他地方,例如文件系统中。

于 2015-01-23T15:25:16.653 回答