我对公钥加密的一般安全目标及其不同元素感兴趣。
用例概述:
我的用例是一个嵌入式设备,它将使用 TLS 在服务器和客户端(嵌入式设备)之间建立安全通信。此外,TLS 与相互身份验证握手一起使用,这也需要客户端证书。嵌入式设备包含一个硬件安全模块 (HSM),用于高效的加密操作和安全存储。
嵌入式设备中将存在以下元素以启用 TLS 通信:
- 来自 CA 的 TLS 根证书(包括其公钥)用于对服务器进行身份验证
- 客户端叶证书(包括其公钥)
- 客户端叶子证书的私钥
我们可以假设 HSM 的存储空间足够大,可以同时容纳所有元素 1、2 和 3。
我现在的问题是,应该在 HSM 中存储哪些元素?
- 根证书:
无需保密,因为此信息是公开可用的,因为根证书将安装在任何想要参与 PKI 的设备中。
但是诚信呢?我想如果这样的根证书被篡改(或交换)以稍后允许从访问的恶意网站验证最初不可信的叶证书,则会出现安全问题。将根证书存储在 HSM 中是否有好处,还是仅在软件中不提供任何接口来更改存储在设备正常内存中的证书就足够了? - 客户端证书:
在我看来,这里我们也不需要保密,因为在相互身份验证 TLS 握手期间将未加密的证书发送到服务器。我们是否应该将整个证书连同其私钥一起放入 HSM?如果证书本身存储在 HSM 中,是否存在可以缓解的攻击场景? - 客户证书的私钥:
这个我100%确定。私钥需要进入 HSM 以增加安全性。
一句话概括一切:
如果可用,私钥应存储在 HSM 中,但是将证书(包含其公钥)也存储在 HSM 中是否有任何好处?
编辑:
据我了解,此用例中的 HSM 仅为存储私钥提供了安全优势。但是,我在许多情况下阅读了有关在 HSM 中存储证书的信息。我只是不确定,如果这样的陈述是因为草率的措辞,或者实际上将证书存储在 HSM 中是否有任何好处。示例:A、B、C