I'm developing a messenger application with encrypted chats.
In the first version of the app I've used PBKDF2 (10000 iterations, SHA1, random salt) to extend a short user password and generate keys to encrypt (AES256) and sign message (HMAC).
In the current version of the app I generate a random 130-bit key and use it instead of a user password. I think that using PBKDF2 with such a key has some overhead.
I see 2 possible ways to improve the current approach:
- Keep using PBKDF2 and decrease iterations to 1 or 10.
- Don't use PBKDF2 and use HKDF instead.
What are the advantages and disadvantages of each approach? Are there any other options?