1

我正在构建一个身份验证系统,其中一些信息被加密存储,因此人类无法阅读。因为它是加密的,所以我需要使用该generateSecretKey()函数(因为我没有使用 CFMX_COMPAT 方法)。当用户在系统中注册并一直使用它时,我对创建它感到紧张,所以我考虑在每次用户登录时创建一个新的,但不确定这是否真的有必要。我已经在调用一种方法来更新每次登录时的用户登录时间戳,因此添加一个新的密钥也不错,但我想确保我没有过火,所以我的问题是:

在为用户生成用于加密信息的密钥时,最好是在每次登录时创建一个新密钥,还是在注册时创建一个并一直使用?

4

1 回答 1

1

你的回答(正如精灵对佛罗多所说)是肯定的和否定的。或者用鲍勃·多尔的话来说,当被问及他是否穿平角裤或短裤时……“取决于”。

您所询问的内容与要求密切相关。表面上,第二种选择——“生成新密钥”——比重复使用相同的密钥更安全。在第一种情况下,每个用户都有一个密钥。在第二个中,您的密钥更加短暂,并且在会话后消失。所以真正的问题是,什么级别的安全性足以满足您的要求。

权衡是代码稍微复杂一些,服务器必须更加努力地工作,并且您不能持久化会话(因为重新启动服务器可能会杀死您的密钥)。它还可能使审计报告等事情变得更加困难,因为听起来您正在加密某些日志类型或审计跟踪类型的信息。

我要补充一点,如果您将这些密钥与数据一起存储,您最好不要费心生成新密钥。您已经降低了将钥匙放在欢迎垫下可能获得的任何好处;)

希望这会有所帮助......抱歉含糊不清。

于 2012-05-22T16:10:04.697 回答