DDS安全证书存储

DDS Security certificate storage

我目前正在使用启用了安全插件的 DDS 进行开发。 当应用程序启动时,它会查找 CA 证书、本地证书和私钥的路径并将它们加载到内存中以备将来使用。

包含 public 密钥的证书不敏感,因为它们通常以明文形式发送并使用 CA 证书进行检查。因此攻击者无需访问它。对吗?

但是,在 Ubuntu 文件系统上,如何保护私钥?我看到的唯一方法是将密钥设置为只读,只供将 运行 应用程序的特定用户使用。但是由于权限提升,这似乎不安全。

有没有安全的方法来保护文件系统上的私钥?

关于 permissions_ca 和 Governance/Permissions 文档,如果这些文档被攻击者更新(这将创建自己的 CA 并签署新的 Governance/Permissions 文档),那么,应用程序可以可以有更多的权限?这意味着这些文件应该在文件系统上受到保护?

您的大部分问题都不是针对 DDS 安全性的,而是关于 DDS 安全性所利用的一般 Public Key Infrastructure (PKI) 机制。

Certificates containing the public keys are not sensitive as they are usually sent in clear and checked using the CA certificate. So an attacker has no need to get access to it. Is that correct?

是的,没错。 DDS 安全规范定义的内置插件使用 PKI。 public key certificate 通常不包含任何机密信息。

However, on a Ubuntu filesystem, how can I protect the private key?

使用 "traditional" Unix 权限只允许文件的所有者访问它是常见的做法。例如,默认情况下,Ubuntu 上的 SSH 以这种方式在 ~/.ssh 中存储私钥。此外,规范允许使用密码加密私钥。这也是常见的做法。

这是否足以满足您的方案取决于您的系统要求。通过实施自定义安全插件,可以与 Windows 证书存储或 macOS 钥匙串等现有的更强大的密钥存储解决方案集成。规范中定义的可插拔架构旨在实现这一点,但此类解决方案的实际可用性取决于您使用的 DDS 产品。

About the permissions_ca and Governance/Permissions documents, if those are updated by an attacker (which would create its own CA and sign new Governance/Permissions documents), then, can an application could have more permissions?

治理和权限文件都必须由签名机构签名。篡改这些文件会破坏签名验证,因此会被域中的其他参与者检测到。

安全 DDS 域中的所有参与者都需要信任相同的签名机构才能使该机制发挥作用。攻击者要想成功修改治理或权限文档,就必须能够访问签名机构的私钥。同样,这是 public 密钥基础设施中使用的一种常用技术,类似于 public 密钥证书签名。

尽管有篡改保护,保护这些文件仍然有意义。篡改或删除这些文件的实际结果将是拒绝服务,这也是有害的。