对称加密——使用一个对称密钥加密另一个是不安全的还是我需要使用非对称密钥

Symmetric encryption - is it insecure to use one symmetric key to encrypt another or do I need to use asymmetric keys

我正在尝试向我的 PHP 应用程序添加混合加密方案,"hybrid" 我的意思是数据库中的每条记录都由其自己唯一的对称密钥和每个对称密钥加密密钥由未存储在数据库中的共享私钥加密。对称密钥是 256 位 AES 密钥,私钥是 2048 位 RSA 密钥。

混合加密方案有效,但解密对称密钥给应用程序带来了瓶颈 - 解密一个密钥没问题,但如果我需要从数据库中检索 100 条记录并解密其中的一个字段,脚本执行时间正在成为一个真正的问题,因为解密对称密钥的开销增加了。我使用 OpenSSL 中的速度工具进行的不科学测试表明,从 1024 位 RSA 密钥到 2048 RSA 密钥会导致我的机器上的解密时间延长七倍。

为什么我不能只使用共享对称密钥(安全存储)来加密每条记录的对称密钥,是否有充分的理由?我不完全清楚使用非对称密钥方案的好处是什么。我知道 RSA 密钥不能用于加密大量数据(这就是我使用对称密钥来加密的原因)但是是否不应该使用对称密钥来保护小数据数据量,即 256 位 AES 密钥?

在此先感谢您的帮助或指导!

你的问题具有讽刺意味的是 2048-bit RSA key to encrypt a 256-bit AES key actually degrades the security 的使用——参见 Table 1(破解 88 位对称密钥的难度与破解难度大致相同一个 2054 位 RSA 密钥)!

对于这样的应用程序,public 密钥加密的好处是解密发生在一个孤立的地方而不是加密。但是,如果它们都发生在同一个地方,那么引入 RSA 只会让事情变得更糟。相反,只需坚持使用 AES。