What approaches are generally accepted for generating a password-protected symmetric key?
My intuition is to generate and store a random string of appropriate length as the password-protected key, then HMAC it with a PBKDF2ed password to get the actual symmetric key. With this approach, is the PBKDF2 step necessary or superfluous? Is there a better approach (e.g., XORing the generated key bits with the PBKDF2ed password key bits)?
Edit: I realized after making this post that it makes more sense to do HMAC(key, password) than HMAC(PBKDF2(password), key).
Update: The answer is PBKDF2(SHA256, password, key, iterations).
HMAC(key, password)should be an acceptable approach, no? – Stephen Touset Sep 12 '12 at 03:22PBKDF2('SHA256', password, key, iterations), wherekeyis a secret key used as the salt? – Stephen Touset Sep 12 '12 at 07:46