2010-05-16 37 views
3

'salt'在字符串到鍵(s2k)說明符中指的是什麼?'salt'在字符串到鍵(s2k)說明符中指的是什麼?

這似乎是一個隨機數發生器動搖的東西,但我想知道什麼是「鹽」代表什麼嗎?

例如,它寫的是:

3.6.1.2. Salted S2K 

    This includes a "salt" value in the S2K specifier -- some arbitrary 
    data -- that gets hashed along with the passphrase string, to help 
    prevent dictionary attacks. 

     Octet 0:  0x01 
     Octet 1:  hash algorithm 
     Octets 2-9:  8-octet salt value 

    Salted S2K is exactly like Simple S2K, except that the input to the 
    hash function(s) consists of the 8 octets of salt from the S2K 
    specifier, followed by the passphrase. 

但鹽是沒有定義,但它的意義似乎很清楚。

回答

3

Wikipedia來自:

在密碼學中,鹽包括被用作輸入到密鑰導出函數一個隨機比特。其他輸入通常是密碼或密碼。密鑰派生函數的輸出存儲爲密碼的加密版本。

鹽只是一些位用來增加系統的安全性。他們幫助防止pre-computed dictionary attacks

+0

稱他們爲「隨機」並不真實,而維基百科文章至少可以說是值得懷疑的。我認爲即使它們是一個常量,它們也可能被稱爲「鹽」,我敢肯定它們可以被稱爲「鹽」,即使它們不是隨機的,而是來自諸如用戶ID之類的常數值。 – 2010-05-16 21:41:08

+0

更準確地說,如果鹽對於每個條目都是恆定的,它仍然會阻止預生成的彩虹表工作;如果salt也隨每個用戶而變化,則它還可以防止攻擊者生成彩虹表並在每個條目上使用它。 – 2010-05-16 21:42:53

+1

@ Lo'oris:我認爲在許多情況下使用user_id作爲鹽是一個壞主意。例如,根在某些系統上具有user_id 0,您可以預先計算該鹽的字典。鹽不應該提前預測。這就是爲什麼一個隨機數是好的,儘管我承認還有其他方式來產生不可預知的數字,比如使用散列。 – 2010-05-16 22:33:18

3

鹽可以是任何一致的值。

要麼一個常數,或用戶ID。如果它包含兩者,則更好。

這是用來防止預生成的彩虹表從工作。

+0

什麼是「預先生成的彩虹桌」? – WilliamKF 2010-05-16 23:24:27

+0

一個沒有任何鹽的哈希表,即創建哈希只是簡單的密碼。是的,人們仍然這樣做。 – 2010-05-17 08:59:08

2

我想你問的期限,而不是定義的起源

時間爲一輪folk etymology! (直到有人給出了真正的答案)

我的猜測是,它是從烹飪的比喻:鹽是促進添加劑。有一點點長遠。