如何安全地保存和检索Key / IV对?

时间:2010-05-17 18:06:37

标签: vb.net visual-studio-2008 cryptography rijndaelmanaged

我正在使用VB.Net的RijndaelManaged(RM)加密文件,使用RM.GenerateKeyRM.GenerateIV方法生成密钥和IV,并使用{{加密文件1}}类。我打算将此密钥和IV保存到文件中,并希望确保我以正确的方式执行此操作。我正在组合IV + Key,并使用我的RSA公钥加密它并将其写入文件。然后,要解密我在此文件上使用RSA私钥来获取IV +密钥,将它们拆分并将RM.Key和RM.IV设置为这些值并运行解密器。

这是实现这一目标的最佳方法,还是有一种优选的方法来保存IV&键?

1 个答案:

答案 0 :(得分:1)

这是一般的想法。然而,IV不需要保密。只有“秘密密钥”才是秘密。

您可以考虑使用S / MIME(或其基础加密消息语法)等标准作为文件格式。我不确定Bouncycastle是否已将其S / MIME(或PGP)库移植到.NET,或者.NET是否内置了S / MIME支持,但可能有适用于您的平台的免费库。像这样广泛使用的开源库可能已经比你自己能够做的更仔细地进行测试和审查,并且它们实现了密码学专家设计的协议,因此你不必怀疑你忽略了什么陷阱。

您描述的模型与密钥交换的S / MIME“KeyTransRecipientInfo”方法类似。生成对称密钥以加密数据,然后使用每个预期接收者的公钥加密该密钥。加密密钥和IV(在此标准中未加密)与有关CMS结构中使用的算法的信息捆绑在一起。加密数据可以包含在同一个包中,也可以位于单独的文件中。

PGP的模式基本相同。