Encryption 如何存储用于加密的密钥

Encryption 如何存储用于加密的密钥,encryption,coldfusion,coldfusion-9,des,Encryption,Coldfusion,Coldfusion 9,Des,我正在构建一个身份验证系统,其中一些信息被加密存储,因此无法被人类读取。因为它是加密的,所以我需要使用generateSecretKey()函数(因为我没有使用CFMX\u COMPAT方法)。当用户在系统中注册并一直使用它时,我很担心仅仅创建一个,因此我考虑在用户每次登录时创建一个新的,但不确定这是否真的有必要。我已经调用了一个方法来更新用户每次登录时的登录时间戳,因此添加一个新的密钥并不坏,但我想确保我没有过火,所以我的问题是: 为用户生成加密信息的密钥时,最好是在每次登录时创建一个新密钥,

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

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

你的答案(就像精灵对佛罗多说的)是肯定和否定。或者用鲍勃·多尔的话来说,当被问到他是否穿着拳击服或短上衣时。。。“视情况而定”

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

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

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

希望这有助于。。。抱歉说得含糊不清。

你的回答(就像精灵对佛罗多说的)是肯定和否定。或者用鲍勃·多尔的话来说,当被问到他是否穿着拳击服或短上衣时。。。“视情况而定”

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

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

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


希望这有助于。。。抱歉说得含糊不清。

这并没有那么含糊,我想答案正是这样。我决定为每个登录生成一个新的密钥,因为这确实提供了更多的安全性。我加密的数据实际上是一些会话信息,我想确保它们在cookie或其他任何可能有人访问它们的地方不可读。酷。。。很高兴支持您的解决方案:)这并不是那么含糊,而且正是我所想的答案。我决定为每个登录生成一个新的密钥,因为这确实提供了更多的安全性。我加密的数据实际上是一些会话信息,我想确保它们在cookie或其他任何可能有人访问它们的地方不可读。酷。。。很高兴支持您的解决方案:)