windows - 如何使用 CNG 处理明文 key ?

标签 windows encryption key plaintext cng

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

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

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

最佳答案

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

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

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

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

关于windows - 如何使用 CNG 处理明文 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739583/

相关文章:

excel - 生成用于凭据加密的安全 Windows 用户特定加密 key

使用循环和 key 进行 Java 加密?

java - 保密字符串的值

linux - AWS Linux 实例上的权限被拒绝(公钥)

c - Windows 中的返回约定

C++ 代码可以在 CentOS g++ 中编译,但不能在 Visual studio 2008 中编译

windows - 如何使用 NAudio 获取当前使用 powershell 播放音频的应用程序的名称?

.net - 如何通过索引而不是显式名称访问数据转发器的项目?

使用 BouncyCaSTLe SSL 使用 keyFile 进行 Java AES 解密

php - 根据另一个查找/映射数组替换数组中的键