2012-12-28 66 views
6

我已經讀過要使用的鹽應該和哈希密碼具有相同的長度,這是什麼原因?它會增加密碼保護嗎? 我看過它 Here鹽爲什麼要和散列值的長度相同?

爲了使它不可能爲攻擊者創造一切可能的鹽的查找表,鹽一定要長。一個好的經驗法則是使用與散列函數輸出大小相同的salt。例如,SHA256的輸出是256位(32字節),所以鹽應至少有32個隨機字節。

+7

你在哪裏讀到這個? –

+0

@GregS看鏈接 – user962206

+3

'爲了使攻擊者無法爲每種可能的鹽創建查找表,鹽必須很長。「這就是答案 – Dikei

回答

9

Here是一個很好的描述爲什麼需要密碼鹽。

不,你不需要你的鹽與密碼長度相同。實際上,文章中列出的實現都沒有這樣做。通常對於每個添加的鹽份,您都需要攻擊者加倍他的存儲預算。

因此,擁有10字節的鹽應該足以滿足當今的技術水平。還要注意鹽是二進制值,而密碼不是,所以鹽長度應該以位/字節而不是字符來衡量。

2

我認爲鹽的強度應該與密碼的強度大致相同,因爲兩者都應該抵抗強力攻擊。

一個簡單的鹽會更脆弱,但即使是一個簡單的鹽也會使得攻擊比沒有鹽更加費力。

+2

鹽不需要抵制暴力攻擊。這不是祕密。所有它需要是唯一的。 –

4

鹽沒有特別的需要那麼長時間,但它肯定不會受到傷害。

salt應該滿足的唯一真正的要求是它應該是全球唯一的。即使這並非hard的要求,從某種意義上講,重複使用幾種鹽並不能真正幫助攻擊者。只有當你得到批次重複,鹽開始失去其有效性。

特別地,由於birthday paradox,如果鹽是隨機選擇它們理想地應至少2·日誌(Ñ)比特長,其中Ñ是你希望的用戶的最大數目擁有(或者更一般地說,您希望使用您選擇的散列方法的最大用戶數)。當然,除此之外還有一些安全邊緣是個好主意。

特別是,地球的總人口有點超過2 。這意味着,即使地球上的每個人都爲您的系統註冊了一個帳戶,64位鹽仍然足夠。