2016-02-28 80 views
0

我打算在会话期间在内存中存储明文密码,并且希望得到一些关于这种情况会不安全的反馈。存储密码的原因是,在应用程序的用户执行某些操作时,会话期间将多次使用该密码来加密和解密后台数据。我认为每次让用户输入密码会更安全,但这会导致非常差的用户体验,因此我试图提出尽可能安全的解决方案,而不会刺激用户。将会话密码存储在会话持续时间的变量中

回答

0

不要直接使用密码来加密/解密数据,您应该从密码中派生一个密钥(请参阅PBKDF2)。用于加密/解密的派生密钥对于长时间存储在内存中更安全。

+1

感谢您的评论。纠正我,如果我错了,但我假设你的建议是这样的:用户提供他们的密码,然后从这个密码派生一个密钥,这个密钥存储在内存中的会话持续时间,并习惯于加密和解密任何数据。我只有一个关于这个问题 - 如果攻击者获得了派生密钥,攻击者是否能够解密任何加密数据?谢谢你的帮助! – user3607758

+0

*“用于加密/解密的派生密钥对于长时间存储在内存中更安全。”* - 您能否解释为什么这会更安全?我不认为这是。 –

+0

是的,他们能够解密/加密数据,如果他们获得派生密钥,但您的用户会感激他们的实际密码没有暴露。将解密密钥存储在内存中通常是不可避免的,但存储密码是另一回事。 – zeroimpl