1

在我们的服务器上,我们有几个通过 API 登录到外部帐户的定期作业。目前,这些密码是硬编码的(明文)。我们将它们存储在数据库中并希望加密密码,但我们必须能够解密它们才能登录到外部站点。有没有办法安全地存储这些密码,而无需明文存储另一个密码以进行加密/解密?(这似乎是一个常见问题,但我对安全术语不够熟悉,无法对其进行分类)。谢谢!

4

1 回答 1

2

您要实现的目标与此问题非常相似。理想情况下,您不想将这些秘密保存在数据库中,而是希望它们尽可能远离您的应用程序。为什么?因为通过这种方式,您至少可以将应用程序本身排除为攻击面,并且访问这些密码将变得更加困难。

在您的情况下,您想使用密码保护加密密钥。这意味着您必须将密码存储在某处。您是否应该再次加密该密码?这导致了一个恶性循环——这就是我这部分答案的意思:

...是什么把我们带到了那个资源。这确实是密钥存储和密码的一个鸡蛋问题。唯一真正干净的解决方案是每次启动应用程序/数据库时手动输入密码。但这往往是一个真正的问题(想想:半夜崩溃),所以人们倾向于将密码存储在文件系统上的文本文件中。只要您遵循一些准则,这是可以接受的:...

如果你加密某些东西,那么就会有一个秘密资源,即涉及的密钥。保守秘密的理想方法是,如报价中所述,记住它并手动输入它,这样就不会留下任何痕迹。由于这通常是不可管理的,因此您必须忍受比记忆更不安全但比以纯文本形式存储秘密更好的东西。

与该帖子中相同的建议适用于您将秘密密码存储在文件中的情况。作为替代方案,您可以尝试利用操作系统安全存储设施,例如Windows 数据保护

于 2011-08-12T18:14:09.163 回答