我有一组预定义的明文密钥,用于对称加密/解密。这些密钥用于与连接到PC的硬件设备进行加密通信。我想使用CNG密钥存储提供商来安全地存储这些密钥。加密和解密必须在CNG之外进行。我只需要一个安全的地方来存储和检索我的预定义明文密钥。前几天,我研究了CNG函数参考,但找不到任何方法将由名称标识的明文对称密钥导入/导出到CNG密钥容器中。
我知道CryptoAPI提供了导入/导出会话密钥的功能。但是这个旧的API没有提供持久的(会话)密钥,也没有办法在密钥容器中按名称选择/标识密钥。
任何帮助都是非常感谢的。提前谢谢。
发布于 2015-01-23 23:25:17
因为CNG密钥存储提供商目前支持非对称密钥,但不支持对称密钥,所以恐怕您没有得到直接解决方案的运气。只有基元提供程序支持对称密钥。
此模型适用于必须长期保护的非对称密钥,对称密钥仅用于一个会话,然后被丢弃。这些对称密钥可能来自非对称密钥,例如Diffie-Hellman或ECDH。
您说您希望密钥安全存储,但是加密/解密是在CNG之外完成的。根据您试图防御的威胁,这可能不是正确的方法。通常,如果您在密钥存储提供程序中存储密钥,您希望在密钥存储提供程序中完成加密操作,并且不希望密钥离开它(除非使用另一个密钥加密),因为这会将密钥材料暴露给攻击者。
但是,如果您确定这是您想要的,一种选择是在密钥存储提供程序中生成RSA密钥,并使用它对对称密钥进行加密和解密。您可以将加密的对称密钥blobs存储在其他地方,例如在文件系统中。
https://stackoverflow.com/questions/26739583
复制相似问题