1

我正在开发一个类似 CMDB 的应用程序,我必须在其中存储我们的安全凭证(服务器用户名和密码,...)。

我正在寻找使用这些约束安全存储它们的最佳方法:

  • 大多数用户将无法访问所有凭据(取决于用户角色)
  • 我们不希望所有密码都使用相同的密钥加密(已经尝试过:当用户离开公司时,更改密钥很痛苦......)
  • 事实上,我们不希望任何私钥被硬写在应用程序源中,甚至存储在任何地方(在我们之前的版本中,私钥存储在我们的耳朵之间......)
  • 我们需要实现密码强度审计(即从脚本中解析解密的密码)
  • 在任何情况下我们都不能再访问我们的凭据(丢失的密钥,...)=>我们不希望未经授权的人查看它们,但我们也不想丢失它们=>解决方案约束可能是定期导出到物理储物柜...

我不是在询问应用程序(https,...)或数据库(没有公共访问权限,...)安全问题本身,而只是关于存储方面(甚至可能不在数据库中......?加密文件或其他东西) ...) :是否有可能阻止某人,即使可以访问应用程序代码或数据库内容(最坏的情况),也能够读取解密的凭据?

我知道我正在寻求一些神奇的解决方案,但我想知道它是否存在;o)

4

1 回答 1

2

您要求做的一般情况是不可能的。现代密码学的所有类型都具有机械优势。也就是说,他们用一个小秘密来保护一个更大的秘密。如果不能保守小秘密,就没有安全。如果您希望能够逐个密码地向某人提供密码,那么您实际上是在向他们提供秘密 - 密码 - 他们需要访问相关项目。

这个问题就是为什么存在联合身份系统(Kerberos/Active Directory/etc.)系统——以允许中央机器对用户进行身份验证而不向所述用户公开秘密。但是使用联合身份系统需要待登录系统和身份服务之间的合作。

于 2012-07-25T01:30:31.410 回答