2010-05-17 65 views
1

我使用VB.Net的RijndaelManaged(RM)加密文件,使用RM.GenerateKeyRM.GenerateIV方法生成密钥和IV,并使用CryptoStream类对文件进行加密。我打算将这个Key和IV保存到一个文件中,并且要确保我以正确的方式进行操作。我将IV + Key组合起来,然后用我的RSA公钥对其进行加密,并将其写入文件中。然后,为了解密,我使用这个文件上的RSA私钥来获得IV +密钥,将它们分开并将RM.Key和RM.IV设置为这些值并运行解密器。如何安全地保存和检索Key/IV对?

这是最好的方法来完成这个,或者是否存在一个首选的方法来保存密钥IV &?

回答

1

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

您可能会考虑为您的文件格式使用S/MIME(或其基础加密消息语法)之类的标准。我不确定Bouncycastle是否已将其S/MIME(或PGP)库移植到.NET中,或者.NET是否具有内置的S/MIME支持,但可能会有适用于您的平台的免费库。像这样一个广泛使用的开源库可能已经被测试和仔细审查了,你可以自己去做,并且它们实现了由加密专家设计的协议,所以你不必想知道你忽略了哪些陷阱。

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

PGP具有基本等同的模式。