I want to encrypt a small amount (few kilobytes) of data and be fairly confident it will be secure against brute force decryption and advances in cryptanalysis for at least a a few decades (or more). I am flexible on the amount of time it takes (even a minute is reasonable) to encrypt as this will run on the client machine, and not on a server.
My thought was to combine a few encryption algorithms over an iterative process - each iteration with a fresh key. The reasoning being:
- Multiple iterations increases the time necessary for each brute force attempt.
- Multiple algorithms means a failure in any one algorithm doesn't compromise the whole encryption.
- Multiple key effectively increases the key size to astronomical.
So it might look like this:
CipherText = AES(TwoFish(Serpent(PlainText)));
Except with many more layers of nesting (repeating the selected algorithms). Each layer will have a CSRNG generated Key and IV and use CBC.
- Is this a good idea?
- Does the nesting increase the security, or does it somehow introduce a new vulnerability?
- If this is a good idea, which algorithms would be best to use?
- Would it be better to use asymmetrical algorithms instead of symmetrical ones?
- How many iterations is enough?
I'm fine with it being overkill. Just want to make sure it isn't going to make things worse.
Updated to specify resistance to cryptanalysis, use of CSPRNG for Key and IV and using CBC. Also removed references to outdated algorithms.