Hi,I was looking at PBKDF2, bcrypt and scrypt as options for key derivation; 
and would like to try using them all together in order to get the cryptographic 
strength of the strongest one (which seems to be scrypt so far unless something 
novel is discovered, but the assumption is that it is not known which one is 
the strongest). My first thought was to apply the first kdf to the password, 
then apply the second kdf to the obtained key (using it as the second 
password), and then the third. Is there something inherently wrong with this?I 
saw a different approach posted by user perseids 
here:http://www.unlimitednovelty.com/2012/03/dont-use-bcrypt.htmlI quote: 
"Derive p_1 = HMAC(Salt1+"PBKDF2") with key sha256(p), p_2 = 
HMAC(Salt2+"bcrypt") with key sha1(p) and p_3 = HMAC(Salt3+ "scrypt") with key 
sha1(p). Derive key k1, k2 and k3 by using the key derivation function PBKDF2, 
bcrypt and scrypt respectively, each of them using 1/30 seconds CPU time with 
input p_1, p_2 and p_3 respectively. Compute the key (or database reference 
entry) as sha256(k1+k2+k3). Here "+" designates the concatenation of byte 
arrays. "So basically the 3 kdfs are applied in parallel, and the resulting 
keys are concatenated and then hashed together. What do you guys think about 
this one? Is this obviously superior to just applying the multiple kdf "in 
series"?Also, I haven't looked at the sources of the scrypt utility yet, is it 
straightforward to take the source files from there to use scrypt as a function 
call from another program? Or is there a scrypt library specifically for 
that?Thank you!

Reply via email to