我正在研究一个使用密码学的项目。它是一个 .net 应用程序,其密钥存储在 sql server 数据库中。对于密码学,该项目使用类似于链接的维基百科文章中描述的硬件安全模块。
我想了解使用 HSM 设备而不是使用“标准实现”(例如 .net BCL 中的一个)在 .net 代码中进行加密/解密/签名/验证和密钥生成的好处。我们在这里讨论的是 RSA/DES。
如果密钥存储在设备内部,我会理解,但如果密钥存储在其他地方,我很难理解它的好处。当然,你可以确定加密算法没有被篡改,但是如果你害怕被篡改,那么还有很多其他代码在数据被加密之前/在数据被解密之后处理数据可以被篡改,并且这几乎可以说是我认为的任何项目。
我可以想象的一个可能原因是性能,如果应用程序执行大量加密,但我不知道项目是否就是这种情况。那么还有什么其他好处呢?