在保护 https 密钥库时,Wildfly 保险库 (JCEKS) 有什么意义?

What's the point of the Wildfly vault (JCEKS) when securing the https keystore?

我觉得我完全错过了 Wildfly 中新的 JCEKS 密钥库格式的要点。也许你可以让我直截了当。

我们配置 Wildfly 的方式(很多 Internet 都指导我们这样做,):

这一切到底完成了什么???

如果我们只使用 JKS 文件和嵌入 standalone.xml 的密码,系统容易受到:

如果我们以描述的方式使用 JCEKS 容器,系统容易受到:

如果我们将实际证书放入 JCEKS 文件中,这将有点意义,在这种情况下,暴力和查找 table 攻击在第二种攻击情况下会更难,但到目前为止我还没有找到直接将 JCEKS 格式的密钥库与 https 连接器一起使用的方法。

真的,我太在意这个的唯一原因是我们显然有使用 "vault" 的安全要求,但这似乎毫无意义。

更新:值得注意的是,通过使用保管库,您在 jboss 配置文件中使用了保管库的 "masked" 密码,但我不明白这是什么意思.显然,您的屏蔽密码 + salt + rounds 可以解锁 JCEKS 密钥库 (source),所以我不确定屏蔽到底完成了什么。它看起来像是第三级重定向。我一定是遗漏了什么...

JBoss 声明 "vault" 背后的安全机制是隐蔽式安全 (https://developer.jboss.org/wiki/JBossAS7SecuringPasswords)

How secure is this?

  • The default implementation of the vault utlizes a Java KeyStore. Its configuration uses Password Based Encryption, which is security by obscurity. This is not 100% security. It only gets away from the problem of clear text passwords in configuration files. There is always a weak link. (As mentallurg suggests in the comments, the keystore password is the weakest link).
  • Ideally, 3rd party ISV robust implementations of Vaults should provide the necessary security.

Vault 使用未知密码和算法对密钥库密码进行对称加密。没有 HSM,你将永远面临 "where store the, e.g., datasource password" 的问题。所以通常你会定义一个带有访问控制列表的 属性 文件并将编码的密码存储在那里。

保管库只是增加了获取安全密码的工作量,让攻击者要么读取内存中的密码,要么对保管库加密算法 + 密钥进行逆向工程。

重要的是要了解 "vault" 背后的安全机制是隐蔽式安全,这意味着您只是在屏蔽您的敏感数据。这意味着如果攻击者可以访问您的 standalone.xml 和密钥库,他就可以轻松读取您的所有数据。 保险库 "increases the effort" -> 攻击者无法直接看到它们,但需要一些(一点点)努力。