我为asp.net成员资格系统加密PasswordFormat时,正在使用AES算法对密码进行加密和解密。如果格式为哈希,我将为每个密码生成唯一的盐值,并将其存储在存储密码的表的列中。但是对于加密,情况有所不同,我在下面担心

1个

如果我为每个密码生成唯一的IVKey,那么我必须将其维护在某个地方。从安全角度来看,这是正确的方法吗?

2

如果我在应用程序配置(web.config)文件中的HardCode IVKey,那么我将不得不担心上述任何一对更改时会发生什么情况?我应该如何处理这种情况?

3

请告诉我您应该做什么。我会把它们放在这里:)

最佳答案

答案:


不,每个密码都不需要唯一的密钥-它将没有用,因为您的密钥必须存储在某个地方。您最好将密码存储在该安全系统中。
您不应将密钥存储在与密码具有相同访问条件的同一系统中。这会使加密的存储徒劳无功。您应该将密钥放在防止滥用的其他位置,然后在该系统内执行加密。


选择诸如PBKDF2之类的功能并存储其结果要好得多。密钥管理是一件棘手的事情,不应该对如何进行工作有一个好主意就应该选择密钥管理(如果那样做,请聘请专业人员)。

最后,IV的整个想法是当使用相同的键时,它可以保护纯文本。如果每个纯文本/密文对都有一个密钥,则可以将IV设置为全零。但是,您的想法是使用一个密钥,将其存储在保存的某个位置,并将一个随机IV与密文一起存储。

如前所述,如果您还不知道这一点,那么您的方案是不安全的,因为还有很多其他事情需要考虑,而您可能还没有。

PS Microsoft有一些方法可以将密钥安全地存储在系统中,您可能需要搜索stackoverflow。但是,我不是MS API的专家。

09-10 07:41
查看更多