使用AES加密对密码进行加密和解密与将密码存储在JBOSS保险库中的优势



我们的安全部门不希望我们有JOSS web配置文件(oracle db.properties),其中包含我们正在连接的数据库的纯文本密码。有人告诉我应该从JBOSS密码库中检索密码,但我很难弄清楚如何做到这一点,并发布了一个问题来尝试找出答案。(请参阅Java/Spring:如何从JBOSS保险库中检索密码)

我正在考虑是否将密码加密的密码存储在oracle-db.properties中并使用此处显示的AES加密算法,https://howtodoinjava.com/java/java-security/aes-256-encryption-decryption/,对其进行解密(我使用加密过程来确定要放入oracle-db.properties文件中的加密密码)。我在想,因为密钥和salt存储在代码中,所以可以对代码进行反向编译以获得这些值。我想知道这种方法与从JBOSS Vault中检索密码相比有什么利弊(https://access.redhat.com/documentation/en-us/red_hat_jboss_web_server/5.3/html/installation_guide/vault_for_jws_)。对于大多数公司来说,将AES 256添加到我们的应用程序中通常就足够了吗?

我在想,因为密钥和salt存储在代码中,所以可以对代码进行反向编译以获得这些值。

正确。AES加密密码几乎没有任何效果,事实上会让事情变得更糟:它看起来是加密的(因为它是加密的),人们会认为加密的人不会太密集,以至于把密钥放在密码文件旁边。

除了有效地就在那里(他们必须反编译类文件,但这并不困难,也不能变得困难),所以你造成了错误的印象。

你的安全团队需要给你提供威胁模型,他们不能只说";"不从文件读取密码";,因为那是不可能的为什么你不能那样做?他们想通过什么途径减轻攻击?

示例:

  • 我不希望syadmin随意地cat处理该文件,从而将密码涂抹在他们的屏幕和终端应用程序的历史缓冲区中,让任何人都只需承担surf

答案:只是base64。是的,它根本不是加密货币,但至少它毫不犹豫:人们会看到它的base64,并假设他们不是白痴,这意味着密码就在那里。但它可以防止肩部冲浪和"意外"回忆(有人用眼睛看到了它,因此即使他们不打算,也可能只记得它)。必须有人想方设法解除屏蔽64,如果规则规定你不能这样做,至少你现在已经强迫员工彻底违反规则,并可能犯罪。

  • 我担心有人会入侵服务器,使其读取文件并将其回复给黑客

那么base64什么都不做,AES计划也不做(因为他们可能还可以让你的Web服务器cat拥有自己的jar和类文件)。一种解决方案可以是,启动服务器的脚本读取文件(并且是root操作的,在webserver帐户下运行服务器)-该脚本读取密码(从而允许您使该文件归root所有,webserver帐户无法读取),将其作为参数或环境变量传递。当然,这要求您将env-var泄漏的风险视为比文本文件低得多。这当然是可能的。或者,脚本可以将密码写入webserver用户可读的纯文本文件中,Web服务器将读取该文件,然后删除该文件。这并不常见,但它表明了威胁模型的意义:一旦你知道自己在对抗什么,你就可以想出一个计划并相应地执行。

  • 我想使用JBoss密码库

这不是明智的安全策略:这不是威胁模型。JPV根本无法解决这些问题。

  • 我希望黑客能够获得对盒子的完全访问权限,包括webserver用户的根和/或写访问权限,而不能将其作为攻击DB的跳板

这是不可能的如果安全团队告诉你这是他们需要你减轻的威胁,你可以告诉他们去拿哈利波特的魔杖,因为没有它,你就无法传递。例如,黑客可以简单地重写您自己的类/jar,将密码发送到黑客的服务器。这强烈表明,你的安全团队不知道如何做好他们的工作:他们会考虑风险,无论风险多么不可能,并要求"防范"风险(这不是一件真正的事情;你可以减少和缓解,安全不是非黑即白的),而不考虑威胁模型或权衡。

让他们接受教育,或者决定对他们撒谎。如果他们不这样做,你就赢不了。也许可以越过他们的头,让老板参与进来。

  • 我希望一个成功获得整个磁盘克隆的黑客无法访问数据库

可以,但很棘手。一个简单的方法是,服务器也不知道密码,将以仅限管理员的模式启动,管理员将数据库密码键入一个表单,然后解锁服务器以正常运行。然后,服务器可以只在内存中保留此密码,从而阻止任何磁盘副本。不过,你最好换一个,或者把它存储在另一个磁盘上!

如果你不想手动操作,可以使用TPM芯片(通常是windows/linux系统)或T2(苹果)。我不知道有任何java可访问的工具可以做到这一点,也不知道有数据库可以做到这。这类算法需要一个挑战/响应模型,你不能只是以一种有意义的方式在其中"存储密码"。

向安保团队索要8万左右的预算。如果他们犹豫不决,那么他们已经学到了一些东西。安全是一场权衡的游戏。

最新更新