对称加密 - 使用一个对称密钥加密另一个对称密钥或者是否需要使用非对称密钥是不安全的

时间:2017-04-03 21:00:43

标签: encryption encryption-symmetric

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

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

为什么我不能只使用共享的对称密钥(安全存储)来加密每条记录的对称密钥?我并不完全清楚使用非对称密钥方案的好处是什么。我知道RSA密钥不能用于加密大量数据(这就是我使用对称密钥来做到这一点的原因)但是对称密钥不应该是这样的情况。用于保护少量数据,即256位AES密钥?

提前感谢您的任何帮助或指导!

1 个答案:

答案 0 :(得分:1)

你问题的讽刺之处在于使用2048-bit RSA key to encrypt a 256-bit AES key actually degrades the security - 参见表1(打破88位对称密钥的难度与打破2054位RSA密钥的难度大致相同)!

对于像这样的应用程序,公钥加密的好处是解密发生在与加密隔离的地方。但是,如果它们都发生在同一个地方,那么你只是通过引入RSA使事情变得更糟。相反,只需坚持使用AES。