2014-03-02 58 views
1

思考這些下面兩種情況,哪一個是最好的,最安全的一個2加密/散列的情況下,哪一個是最好

第一種情況

//key1 generated from static salt and user password, because in case attacker don't know about source code (bad assumption, but still my assumption), attacker have only hashed or encrypted data + random generated salt 
staticSalt = "StaticSalt" 
key1 = pbkdf2(userPassword, staticSalt, iteration) 

//key2 generated from key1 and randomSalt, this will be actual key to be used for encryption 
randomSalt = GenerateRandomSalt() 
key2 = pbkdf2(key1, randomSalt, iteration) 

aes.Key = Key2 
aes.IV = aes.GenerateIV() 

第二種情況

//directly generate key from randomSalt and password 
randomSalt = GenerateRandomSalt() 
key1 = pbkdf2(userPassword, randomSalt, iteration) 

aes.Key = Key1 
aes.IV = aes.GenerateIV() 

我的問題是,使用第一種情況是否有任何缺點,它會增加或減少熵,或使得不太安全?

或者第二種情況是遠遠更好的和安全的方式做

尋找一些加密專家的回答。

+1

如果您將其發佈在http://crypto.stackexchange.com/上,您很可能會收到適當的回覆。 –

+0

案例1應該提供的額外步驟有什麼好處?如果這只是你在PBKDF2算法的基礎上拋出的一個含糊不清的想法,比如「更多擾亂更好」,這可能不會有幫助。 – user2357112

回答

0

此問題更適合於Sec.SE

如果您使用此代碼存儲密碼,請參閱this question,特別是如何正確散列和存儲密碼。


第一種情況似乎添加了默默無聞,而不是安全性。從長遠來看,通過增加攻擊區域(即更多發生錯誤的地方),這實際上可能會降低安全性。

請記住,你don't want to be a Dave

+0

感謝您的兩個鏈接,不幸的是我不能讓你的答案有幫助。但只是想知道如何提供更多的防禦線,而不是提供更多的防禦線,這會增加攻擊區域,並且容易出現更多的漏洞發生位置,而先前也使用相同的推薦pbkdf2方法 – toughcanny

相關問題