当密钥未存储在硬件安全模块中时,它们有什么好处?

信息安全 密码学 硬件 编程 hsm
2021-09-04 02:32:19

我正在研究一个使用密码学的项目。它是一个 .net 应用程序,其密钥存储在 sql server 数据库中。对于密码学,该项目使用类似于链接的维基百科文章中描述的硬件安全模块。

我想了解使用 HSM 设备而不是使用“标准实现”(例如 .net BCL 中的一个)在 .net 代码中进行加密/解密/签名/验证和密钥生成的好处。我们在这里讨论的是 RSA/DES。

如果密钥存储在设备内部,我会理解,但如果密钥存储在其他地方,我很难理解它的好处。当然,你可以确定加密算法没有被篡改,但是如果你害怕被篡改,那么还有很多其他代码在数据被加密之前/在数据被解密之后处理数据可以被篡改,并且这几乎可以说是我认为的任何项目。

我可以想象的一个可能原因是性能,如果应用程序执行大量加密,但我不知道项目是否就是这种情况。那么还有什么其他好处呢?

1个回答

在许多 HSM 中,用于安全存储的容量非常小(例如,几千字节)。因此,HSM 真正存储在其内部的是一些主密钥K(对称)。应用程序使用的密钥对存储在外部,但使用K加密;它们仅在 HSM 中被解密和使用。在这样的设置中,密钥既“逻辑地”在 HSM 内部,又“物理地”存储在外部。这可能是您感兴趣的系统中发生的情况。


HSM 对安全性有什么好处是一个有趣的问题。基本上,HSM 确保如果您的密钥被盗,您会知道,因为窃取密钥的唯一方法是盗取整个 HSM,此时您不再拥有它。这与可以复制而不会留下任何盗窃痕迹的软件密钥形成对比。

如果 HSM 与外部存储的密钥一起使用,而不使用如上所述的某些主密钥进行加密,那么 HSM 确实是一个简单的加速器,用于性能原因,而不是提高安全性。这在十几年前曾经很流行,但随着基本 PC 提供的性能不断提高而失去了很多相关性。大多数 HSM 都有相当“固定”的设计,因为对 HSM 的任何更改都会使其 EAL 4+ / FIPS 140-2 认证失效,因此目前市场上的许多 HSM 设计使用十年前设计的 ASIC,其性能曾经是真正的很好,但现在只能与 500 美元的服务器所能提供的相媲美(每秒数千次私钥操作)。