存储会话密钥

【勇芳软件工作室】汉化HomePreviousNext

本节讨论如何使用CryptoAPI来存储会话密钥供以后使用。这在您使用密钥加密文件并希望稍后解密文件的情况下很有用。另一种可能的情况是您与其他用户共享会话密钥,并且您希望稍后使用该密钥发送其他用户加密的邮件。

在这两种情况下,您的应用程序必须在CSP之外存储会话密钥一段时间。以下是存储会话密钥的过程。

1.使用CryptExportKey功能创建一个简单的键盘。这将会将会话密钥从CSP传输到应用程序的内存空间。指定您自己的密钥交换公钥用于加密密钥blob。

2.将已签名的密钥blob存储到磁盘。这里假设所有磁盘都是非安全的。

3.之后,当您需要使用密钥时,请从磁盘读取密钥blob。

4.使用CryptImportKey功能将关键点输入到CSP中。

如果会话密钥只是与加密文件捆绑(以便稍后解密该文件),并且该密钥不会用于加密任何更多的数据,则上述过程提供足够的安全性。

如果您打算稍后再使用会话密钥进行加密,那么在将密钥存储到磁盘之前,应使用密钥交换密钥对密钥blob进行签名。当您稍后从磁盘中读取密钥blob时,应验证签名以确保密钥blob完整无缺。如果省略这些步骤,那么有权访问您的存储媒体的用户可以创建自己的会话密钥,并用密钥交换公钥加密,并将其替换为密钥。然后,您可以不知不觉地使用其会话密钥加密文件和消息,这些不道德的用户可以轻松解密。(数字签名在哈希和数字签名部分详细讨论。)