我有一个执行RSA混合加密/解密的应用程序--也就是说,消息是用一个新的AES密钥加密的,然后使用RSA-OAEP加密,并与消息一起发送。然后解密做相反的。
现在我想通过PKCS#11提供对硬件安全模块(HSM)的支持。(应用程序是用Java编写的,所以这实际上是通过一些包装器(比如默认的SunPKCS11库)编写的)。我可以看到实现解密的两个选项:
我的直觉是,在带有AES-NI指令的服务器上,选项1通常比选项2更快。因为AES密钥对于每条消息都是唯一的,所以它看起来也不那么安全--因此AES密钥并不比消息本身更敏感。
是否有任何理由选择备选案文2?我唯一的想法是,如果客户在符合FIPS标准的HSM上花了很多钱,那么他们可能出于遵从性的原因,希望在设备上执行所有密码。有可能发生这种情况吗?
发布于 2018-05-26 23:31:36
AES只是用来保护数据。尽管在HSM中保留AES密钥更安全,但您需要记住,没有什么理由比数据本身更好地保护它。
但是,如果你不需要速度,为什么不选择HSM选项呢?至少,您可以合理地确定密钥是安全的,没有侧通道攻击,并且该算法将按照设计的操作(例如,关于IV的随机生成、自我测试、密钥销毁等)。
因此,如果您需要速度、HSM资源或低延迟,请在软件中使用AES。否则,如果不需要使用HSM中的AES键。
https://crypto.stackexchange.com/questions/59560
复制相似问题