概述:我正在尝试设计一个应用程序来加密文件以安全地发送蜗牛邮件(大量数据)。我计划使用 .Net 中的 AES/RijndaelManaged 加密来最初加密文件,使用随机生成的密钥RNGCryptoServiceProvider
。然后我使用 RSA 公钥加密这个随机 AES 密钥。数据的接收者是唯一拥有 RSA 私钥来解密数据的人。
我的问题:这是做这样的事情的正确方法吗?如果是这样,将这个 RSA 加密密钥与数据一起发送是否安全,因为它需要私钥才能解密?
EDIT- 根据答案,这确实是正确的方法。
编辑-感谢您的回复。现在我真正想知道的是:
当最终用户生成其公钥/私钥对时,保存私钥的最佳方法是什么?我不希望它只能从一台机器访问,所以我试图避免使用用户的密钥存储。但MSDN http://msdn.microsoft.com/en-us/library/tswxhw92(v=VS.80).aspx说将密钥保存到文件中不安全,那么您还能如何完成此操作呢?
Use PGP http://en.wikipedia.org/wiki/Pretty_Good_Privacy除非有充分的理由不这样做。 PGP 是电子邮件中常用的混合加密的开放且普遍的标准。 PGP 有多种实现方式。我所知道的唯一 .NET 是BouncyCastle 加密项目的 C# 库 http://www.bouncycastle.org/csharp/index.html。 PGP 实际上提供了您所描述的功能的超集;例如,PGP 还可以对消息进行数字签名。
关于私钥存储。典型的解决方案是在将私钥写入磁盘之前对其进行对称加密。只有私钥的真正所有者知道密码秘密,并且他们不会告诉任何人。这样,即使攻击者获得了私钥文件,他们仍然必须泄露秘密或暴力破解对称密码。我所知道的所有 PGP 实现都是这样做的。
如果 PGP 能满足您的需要,请不要重新实现它。 PGP 得到了相当广泛的支持。此外,像我(大概还有你自己)这样的凡人几乎没有机会把一切都做好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)