我是新来的密码领域的人,所以如果我不善于解释这件事,我很抱歉。所以如果我误解了什么就纠正我。
我目前正在开发一个Java应用程序,其中包括使用“记住密码”选项。
密码必须是可逆的。因此,在这种情况下,我需要使用加密(我知道哈希+ salt (例如使用Bcrypt)更好,但是我不能这样做,除非用户必须在每次登录时输入他们的密码)。
我只是想知道实现这一目标的最佳方法是什么。
例如,我可以创建一个KeyStore来存储密钥对,然后将加密的密码存储在配置文件中。但我不知道如何存储KeyStore的密码。还有,我需要加密私钥,对吧?需要保护私钥的密码吗?
有人有什么好的、安全的方法来处理这个问题吗?这不一定是我解释过的方式(使用JKS) --我对其他方法持开放态度。
发布于 2017-02-23 22:23:04
如果不使用某种DRM或其他设备,就不可能使此安全。如果攻击者有权访问正在运行的程序,则攻击者能够检索密码。当然,您可以尝试在内存中隐藏和/或加扰密码,但这是您可以做的任何事情。这就归结为混淆。
有时,操作系统可以访问额外的资源来保护密码。几乎在默认情况下,您需要向操作系统提供密码。因此,例如,Windows有一个凭据管理器,您可以从应用程序访问它。我环顾四周,发现了一些使用它的方法,这里 (警告:我从未使用或查看过此解决方案)。显然,这样的代码不能跨操作系统移植。
最后,您可能最好尝试保护应用程序本身。确保您的输入是净化的,并且调试端口没有完全打开。确保限制对应用程序的访问。一旦攻击者能够完全访问用户帐户(或者更糟的是系统帐户),那么您的应用程序安全性可能是用户最不担心的。
https://crypto.stackexchange.com/questions/44145
复制相似问题