首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES密钥管理建议

AES密钥管理建议
EN

Stack Overflow用户
提问于 2012-12-17 22:26:05
回答 3查看 874关注 0票数 2

我需要一些关于我正在做的学校项目的建议。我正在制作一个AES应用程序来加密一些文件中的数据。现在,许多人都可以访问这些文件。

对于AES密钥,我正在考虑使用RFC2898DeriveBytes从密码短语中获取加密密钥。MSDN有一些关于如何使用它的很好的教程。现在,我的问题是在哪里以及如何存储该密钥?

我想将密钥存储在闪存驱动器中的一个文件中,但如果有许多用户,那么如何同时将密钥写入多个闪存驱动器?(一台计算机只能有有限数量的端口)。另外,假设我有一个新用户,他应该有访问某些文件的权限,我如何将密钥写入他的闪存驱动器?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-17 23:21:16

这真的取决于应用程序的目标。

  1. 如果要对数据进行加密,使应用程序的任何用户都可以访问它,则更合适的做法是在应用程序本身中嵌入密钥(或者,更安全的是,用于派生密钥的数据)。
  2. 如果要限制对每个用户的访问,则需要按用户存储密钥(或用于派生密钥的数据)(以便仅授权用户可用)。

关于使用嵌入式安全数据的几个提示:

  • 将数据拆分成多个片段,可以从应用程序中的不同位置提取。使用自定义算法组合数据。
  • 嵌入从中派生密钥的数据要比嵌入密钥本身安全得多。如果黑客使用二进制编辑器,并且发现您的密钥在应用程序中完好无损,那么解密文件将会容易得多。如果同一个黑客找到了从中派生密钥的数据,他仍然必须确定您用来从该数据派生密钥的算法,然后才能使用该数据。
票数 3
EN

Stack Overflow用户

发布于 2012-12-18 07:39:50

您不能存储密钥;您必须告诉用户密钥是什么。如果您只是简单地存储输出,那么RFC2898DeriveBytes是无用的。如果您需要一个随机密钥,请使用一个播种良好的随机数生成器。

通常,您将使用从用户密码生成的密钥对随机数据密钥进行加密。然后使用数据密钥对数据进行加密。通过这种方式,您可以为多个用户加密一个文件;只需像现在一样加密与用户相同的密钥(使用RFC2898DeriveBytes中的PBKDF2函数生成)即可。

确保每次用户输入他/她的密码时使用不同的盐。还强烈建议在数据文件中添加一个随机IV,并使用身份验证模式加密或(H)MAC。

票数 2
EN

Stack Overflow用户

发布于 2012-12-17 22:29:29

就我个人而言,我不会将密钥存储在任何地方--只是要求他们输入密码并按需生成密钥。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13915985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档