首页 > 解决方案 > DDS 安全证书存储

问题描述

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

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

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

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

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

标签: data-distribution-service

解决方案


您的大多数问题都不是针对 DDS 安全性的,而是与 DDS 安全性所利用的通用公钥基础设施 (PKI)机制有关。

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

对,那是正确的。DDS 安全规范定义的内置插件使用 PKI。公钥证书通常不包含任何机密信息。

但是,在 Ubuntu 文件系统上,如何保护私钥?

使用“传统”Unix 权限只允许文件的所有者访问它是常见的做法。例如,Ubuntu 上的 SSH 默认以这种方式存储私钥,在~/.ssh. 此外,该规范允许使用密码对私钥进行加密。这也是常见的做法。

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

关于 permissions_ca 和 Governance/Permissions 文档,如果攻击者更新了这些文档(这将创建自己的 CA 并签署新的 Governance/Permissions 文档),那么应用程序是否可以拥有更多权限?

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

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

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


推荐阅读