I am trying to derive a symmetric key based on a master key, combined with a simple string. Based on my limited knowledge, it seems that something like PBKDF2 would do that for me in a well-defined way:
DK = PBKDF2(PRF, Password, Salt, c, 256)
- Password = master key
- Salt = simple string
- c = number of iterations
- DK is the 256 bit derived key
However, I am working in a very constrained embedded environment, so a high number for 'c' is not an option. Now for my question:
Would I improve security if I used a low value for 'c', but I did some kind of table lookup as a final step, such that
DK_final = table[F(DK,i) MOD size]
- Assume DK is twice is large as DF_final, so 256 bits and 128 bits respectively
- table = a large table of randomly chosen bytes (more than 4000 elements)
- F(DK,i) = a simple function that takes the i'th 2 byte pair from the string DK
- size = the number of elements in the table
- DK_final = the final derived key, 128 bits in this example
I could not find any published material on such a method, besides a vague reference here. However, no indication of cryptanalysis was given.
Any help on such a scheme would be appreciated, if only to warn against it: It seems that the general rule of thumb is never invent you own clever idea with it comes to cryptography.