我有一个具有加密数据库的android应用程序。现在我想在一定时间后更改密码密钥。那么如何将以前的密钥转换为新的密钥呢? 数据量巨大。所以我想知道是否有任何有效的方法来做到这一点。
答案 0 :(得分:0)
确切的答案取决于您的加密方案,但最有可能没有比使用旧密钥解密数据更好的方法,然后使用新密钥重新加密它。
由于您希望定期执行此操作,因此您可能需要考虑将数据分成方便大小的块(记录,表等),并使用随机密钥(不同的随机密钥)加密每个数据块。对于每个块),然后使用单个主密钥加密这些块密钥。要访问数据,您必须首先获取并解密块密钥,然后使用块密钥来解密实际数据。您可能还希望存储与块密钥一起使用的任何IV。如果要更改主密钥,则使用新主密钥解密/重新加密块密钥,但不必触摸数据(因为块密钥不会更改)。如果要更改块密钥,则必须解密/重新加密该部分数据,如果要修改该数据,这可能不是问题。
不要忘记,当涉及到安全性时,要偏执 - 他们会帮助你!
答案 1 :(得分:0)
创建密钥间接。这是创建一个加密数据加密密钥的顶级密钥。然后可以更改顶级密钥,不需要更改数据加密密钥,因此不需要对数据进行解密和重新加密。