4
我看到config/initializers/devise.rb中有一個名爲「config.stretches」的配置。我不明白stretches
是什麼意思。它說,這是我想要密碼「重新加密」的時代。爲什麼我們的密碼將被重新加密?爲什麼我應該指定一個「時代」?設計的database_authenticatable的「延伸」是什麼意思?
我看到config/initializers/devise.rb中有一個名爲「config.stretches」的配置。我不明白stretches
是什麼意思。它說,這是我想要密碼「重新加密」的時代。爲什麼我們的密碼將被重新加密?爲什麼我應該指定一個「時代」?設計的database_authenticatable的「延伸」是什麼意思?
簡短的回答是,它使暴力字典攻擊需要更長的時間。
This blog post是用合理的英文寫的,可能會讓你更好地瞭解正在發生的事情。
感謝您的回答。那篇文章對我來說有點難,我還是不明白,對不起。爲什麼你說它可以使攻擊需要更長的時間?如果我將它重置爲100,會發生什麼? – Freewind 2010-07-03 07:01:11
然後它需要10倍的工作來計算你的密碼散列值。這一點就是生成密碼哈希值很昂貴。當你只需要1(就像有人登錄時),那麼沒什麼大不了的。你不會注意到額外的時間。你正試圖讓某人在合理的時間內進行字典攻擊更令人討厭/不可能。他們需要產生大量的哈希,所以越慢越好(對於你而不是他們)。 – jdl 2010-07-03 08:02:38
維基百科在這個話題上有一篇體面的文章。我不相信bcrypt正在做這個(我不明白bcrypt算法在任何程度上),但這個想法是一樣的。 http://en.wikipedia.org/wiki/Key_stretching – jdl 2010-07-03 08:05:47