2012-01-13 142 views
1

我一直在想很多不同形式的哈希和密碼。是的,我知道鹽醃,可能會加上這個哈希,但這是沒有任何醃製。我可能會使用動態醃製技術。哈希函數和保護密碼

除了所有這些,我想知道是否是合乎邏輯的做我在下面顯示?

​​

回聲輸出如下:

464e07afc9e46359fb480839150595c5

d27937f914ebe99ee315f04449678eccfb658191

$hash_crc32_md5 = $hash_md5 + $hash_crc32 + $hash_sha1 . $hash_md5 . $hash_crc32 . $hash_sha1; 

<?php echo '<br /><br />' .$hash_crc32_md5; ?> 

呼應輸出:

5820170431464e07afc9e46359fb480839150595c51180170431d27937f914ebe99ee315f04449678eccfb658191

那麼你認爲這將是一個超必殺散列這樣的密碼?我應該堅持一種哈希加鹽的形式嗎?我知道我不能第一個想到這樣的事情,因爲它看起來很明顯。

你認爲用這種形式碰到散列碰撞等等會有多難?

感謝您的回覆! :)

回答

4

這是矯枉過正?我無法對此發表評論。我說,它可能是較少安全比只使用其中一種方法(就信息論而言)。

原因是,您實際上通過給出多個散列算法的結果,向預期的黑客提供更多信息給信息。

在這些哈希方法中使用的算法沒有什麼祕密。哈希通過這樣一個事實來消除信息,儘管它是可逆的,但仍有大量可能產生相同哈希的文本。

然而,在提供多個散列輸出,則有效地除去大量的這些可能性,因爲,例如,可以產生特定的MD5是文本數相交與那些產生特定SHAx。

從你有的MD5散列角度思考。也許有不同的文字可以產生這種價值。這是一個非常大的搜索空間。

現在考慮SHAx哈希。也可能有萬億不同的文本可以產生它。再次是一個大的搜索空間。

但是,如果相交這兩個搜索空間是四十二個不同的文本,那就不會花很長時間來破解。

密碼是不適合心臟微弱,或爲那些沒有得到在該領域的博士學位:-)

1

一個哈希密碼的一點是,你仍然可以驗證密碼,防止它通過使用與第一次散列相同的方式對明文密碼進行散列,然後將其與存儲的散列進行比較,而無法將散列值轉換爲明文形式。從這個意義上說,你正在做的事情並沒有帶來任何意義。

散列的弱點主要有兩方面:如果通過所有可能的密碼相對便宜,將它們散列並將它們與存儲的散列進行比較,則可能會強制散列散列。從這個意義上說,你的技術增加了一點安全性,因爲你的三重散列函數需要的時間比單純的散列值要長一點,所以攻擊者需要更多的時間去嘗試所有的組合。雖然這並不重要。實現這一點的更好方法是使用較慢的散列算法和/或簡單地重複散列操作一定次數(100-1000+次)。

另一個弱點是彩虹表,有人已經經歷了創建一個表,將所有可能的密碼映射到散列值的麻煩。您的技術在這裏增加了一點安全性,因爲您的特定算法不可能在某處存在彩虹表。這對兩個用戶具有相同密碼的情況沒有幫助,因爲這兩個用戶都會哈希到相同的哈希值,因此攻擊者會得到兩個一個的密碼。在這種情況下,每個用戶的獨特鹽份是非常重要的,因爲這意味着攻擊者需要爲每個用戶單獨嘗試每個密碼,而不是每個用戶只有一次密碼。

所以,你所做的並沒有真正添加任何尚未做得更好的東西,而且最重要的是還缺少一種獨特的鹽。

+0

我打算說算法的可能性實際上可能削弱散列,但@pax已經寫得比我更好。 :) – deceze 2012-01-13 03:37:04