We are focusing on mobile phone and hard drive encryptions. This idea can be extended to any data encryption also.
iPhone and recent Androids are all encrypted. We know that changing the password will not change the encrypted data. It only changes the Encrypted Masker Key. For instance:
- Master Key is used to encrypt/decrypt the data. That is
decrypt_01(Master_Key,Encrypted_Data) = Plain_Data
. - Master Key is not permanently stored in the phone. Master Key is only available in RAM while the phone is working.
- Encrypted Master Key is stored in the phone permanently.
- User Password is used to decrypt the Encrypted Master Key to Master Key, which
decrypt_02(User_Password,Encrypted_Master_Key) = Master_Key
.
In case of security breach, the attacker recorded the Master Key. Even if we change the password, the attacker will always be able to decrypt the data (including old and even new data).
Similar case applies to encrypted storage hard drives (e.g. cold storage or NAS) and encrypted server hard drives (e.g. using LUKS). I have never heard of any encryption scheme that changing the password will lead to a re-encryption.
For mobile phone, we can perform re-encryption and generate a new Master Key by factory reset the phone.
For hard drives, we may move the data to another encrypted hard drive with a different master key.
I did some researches but could not find anyone suggesting re-encryption in every certain period to tighten security. However this logic makes sense. The longer time the same Master Key is using, the more the risk to have it compromised. Is it just too tedious that no one would bother it? For critical servers or confidential storages, I am sure the effort is worth. Automated scripts can help also.