我正在建立一个身份验证系统,其中一些信息被加密存储,因此它不能被人类阅读。因为它是加密的,所以我需要使用generateSecretKey()
函数(因为我没有使用CFMX_COMPAT方法)。当用户在系统中注册并一直使用它时,我很担心创建这个,所以我想在每次用户登录时创建一个新的,但不确定是否真的有必要。我已经调用了一种方法来更新每次登录时的用户登录时间戳,所以添加一个新的密钥也不错,但我想确保我没有过火,所以我的问题是:
为用户生成加密信息的密钥时,最好每次登录时创建一个新密钥,或者只是在注册时创建一个密钥并一直使用它?
答案 0 :(得分:1)
你的回答(正如精灵们对佛罗多所说的那样)既是肯定也是否定。或者也许用Bob Dole的话来说,当被问到他是否穿着拳击手或小号时......“依赖”。
您所询问的内容与要求紧密相关。表面上第二种选择 - “生成一个新密钥” - 比重用相同的密钥更安全。在第一种情况下,每个用户只有一个密钥。在第二个你的密钥更短暂,并在会话后消失。所以真正的问题是,对于您的要求,足够的安全级别。
权衡的是代码稍微复杂一点,服务器必须更加努力,并且你不能持久化会话(因为重新启动服务器可能会毁掉你的密钥)。它可能也会使审计报告更加困难,因为它听起来像是在加密某些日志类型或审计跟踪类型信息。
我想补充一点,如果您将这些密钥与数据一起存储,您可能也不会为生成新密钥而烦恼。通过将钥匙放在欢迎垫下,你已经降低了你可能获得的任何好处;)
希望这有助于...抱歉模糊不清。