1. 程式人生 > >實踐求真知

實踐求真知

一 點睛

鹽是由偽隨機數生成器生成的隨機數,在生成金鑰(KEK)時會和口令一起輸入單向雜湊函式。

金鑰(KEK)是根據祕密的口令生成的,加鹽好像沒有什麼意義,那麼鹽到底起到什麼作用呢?

鹽是用來防禦字典攻擊的。字典攻擊是一種事先進行計算並準備好候選金鑰列表的方法。

我們假設在生成KEK時沒有加鹽。那麼主動攻擊者就可以根據字典資料事先生成大量的候選KEK。

在這裡,事先是很重要的。這意味著攻擊者可以在竊取到加密的會話金鑰之前,就準備好大量的候選KEK。當攻擊者竊取加密的會話金鑰後,就需要嘗試將它解密,這時只要利用事先生成的候選KEK,就能夠大幅縮短嘗試的時間,這就是字典攻擊。

如果在生成KEK時加鹽,則鹽的長度越大,候選KEK的數量也會隨之增大,事先生成候選KEK就會變得非常困難。只要攻擊者沒有得到鹽,就無法生成候選KEK。這是因為加鹽之後,候選KEK的數量會變得非常巨大。

二 加鹽和不加鹽字典攻擊對比