Hash
一個很長的密碼理論上可以消除對慢散列的需要嗎?
在我提供詳細資訊之前,我想澄清一下,我並不打算實際實現這一點,但我只是要求更好地理解。
按照我目前的理解,我們使用慢速雜湊作為密碼,因為密碼的可能性太少。這意味著人們可以在使用性能散列時相當快地計算出所有潛在的密碼(或其中的一大堆),並找出是什麼組成了摘要。例如,如果在一個虛構的世界中,摘要是 3 個字節,並且雜湊值緩慢持續十年,我的密碼是“abb”,它會導致摘要“x3x”,獲得此雜湊值的人可以通過雜湊“aaa”開始檢索我的密碼,然後“ aab”,然後是“abb”,結果是“x3x”,所以我的密碼必須是“abb”。使用緩慢的雜湊,他將沒有時間計算所有三個結果。
這對於短密碼是有意義的,但我認為現代分組密碼的優勢在於密鑰空間。例如,對於 Two-fish,它可以具有來自 2^256 個不同變體中的任何一個的密鑰。嘗試所有這些變化將是瘋狂的,因此(目前)無法完成。
考慮到這兩件事,性能雜湊作為密碼儲存工具的強度不會隨著每個字母而增加嗎?字母數字字母在 ASCII 中涵蓋 32 到 127,因此每個字元有 6 位熵(我認為)。如果這是真的,那麼使用 SHA 256 進行雜湊處理時,43 個字元的密碼是否安全?
儘管使用 43 個字元的密碼不切實際,但我會說是的,這樣長的密碼在僅使用 SHA256 散列時是安全的。假設有 127 個可能的 ascii 字元,8 個字元的密碼將需要攻擊者搜尋大約 2^56 個可能性(可行),而 43 個字元的密碼將需要搜尋大約 2^300 個可能性(不可行,考慮到 2^128 用於加密使用 128 位密鑰是不可行的)。擁有如此長的密碼會使慢速雜湊變得多餘。對於 43 個字元的密碼,我懷疑彩虹表也會出現問題。