【发布时间】:2014-06-25 12:53:38
【问题描述】:
我们希望存储 FTP、网站、数据库等的密码。您可以将我们的软件与 keypass 进行比较,但我们想做自己的解决方案。 密码将被加密并存储在数据库中。我们不能使用校验和,因为我们需要以明文形式显示密码。
问题是我们找不到存储私钥的好方法。如果它是写在代码中的,你可以很容易地得到它。如果它隐藏在一个dll中,你无法有效地隐藏它,因为机器必须使用它。我们软件的所有用户都可以完全访问源代码、带有加密密码的数据库,并且是他们 PC 上的管理员,因此他们可以在使用代码时阅读代码。
我们考虑将私钥存储在一个单独的数据库中,该数据库可以使用另一个密码访问,但无论如何都会使用该密钥。
所以,我们无处可去。我们知道没有 100% 保存的解决方案,但必须有一个几乎安全的解决方案。
【问题讨论】:
-
您还没有提到为什么您不能以他们获取加密密钥的方式模拟 keypass:要求用户输入密码。此外,鉴于您拒绝 dll 嵌入,您似乎对“几乎安全”(即不安全,“但谁会注意到?”)解决方案不满意。总体而言,您没有提供足够的上下文来帮助您找到安全的解决方案(如果有的话):您的应用程序应该将 谁的 密码存储在 谁的 PC 上以供 哪些合法使用?
-
我们是几个人,有一些共享 FTP 等条目。目前,我们共享一个 Keepass-File。这意味着我们每个人都可以使用主密码访问每个条目。那是我们不再想要的了。每个人都应该能够访问他自己的条目和特定的共享条目。那些共享的是我们的问题。到目前为止,条目将使用私钥加密。但是,如果您想共享该条目,则另一个必须使用相同的私钥对其进行解密。我现在正在为此寻找解决方案。我们所有 PC 上的软件,服务器上的数据库
-
如何为每个人使用一个公共的 Keepass 文件和私人文件?回到自制解决方案:如果您想要更精细的访问控制,您可以为每个用户分配一个非对称密钥对,如果有人与某个组共享密码,您的软件会使用该组成员的每个公钥加密密码。
-
似乎是唯一可行的方法。我们还没有使用它,因为我们想要 AES 加密。所以我研究了用 key1 加密密码。然后将用户的私钥添加到可以解密 key1 的密钥列表中。由于我找不到这样做的方法,我们可能会使用 RSA。谢谢你的回答。
标签: encryption passwords private-key