我需要一些关于我正在做的学校项目的建议。我正在制作一个AES应用程序来加密一些文件中的数据。现在,许多人都可以访问这些文件。
对于AES密钥,我正在考虑使用RFC2898DeriveBytes从密码短语中获取加密密钥。MSDN有一些关于如何使用它的很好的教程。现在,我的问题是在哪里以及如何存储该密钥?
我想将密钥存储在闪存驱动器中的一个文件中,但如果有许多用户,那么如何同时将密钥写入多个闪存驱动器?(一台计算机只能有有限数量的端口)。另外,假设我有一个新用户,他应该有访问某些文件的权限,我如何将密钥写入他的闪存驱动器?
发布于 2012-12-17 23:21:16
这真的取决于应用程序的目标。
关于使用嵌入式安全数据的几个提示:
发布于 2012-12-18 07:39:50
您不能存储密钥;您必须告诉用户密钥是什么。如果您只是简单地存储输出,那么RFC2898DeriveBytes是无用的。如果您需要一个随机密钥,请使用一个播种良好的随机数生成器。
通常,您将使用从用户密码生成的密钥对随机数据密钥进行加密。然后使用数据密钥对数据进行加密。通过这种方式,您可以为多个用户加密一个文件;只需像现在一样加密与用户相同的密钥(使用RFC2898DeriveBytes中的PBKDF2函数生成)即可。
确保每次用户输入他/她的密码时使用不同的盐。还强烈建议在数据文件中添加一个随机IV,并使用身份验证模式加密或(H)MAC。
发布于 2012-12-17 22:29:29
就我个人而言,我不会将密钥存储在任何地方--只是要求他们输入密码并按需生成密钥。
https://stackoverflow.com/questions/13915985
复制相似问题