Hash
組合密碼儲存算法?
組合密碼散列算法(例如 Scrypt、Bcrypt、SHA-3 等)是否更安全?如果攻擊者想要使用專用硬體,他將需要一個用於每種算法的硬體。但是,我知道擁有多種算法會增加出現錯誤和洩漏的可能性。
如果每個密碼有多種算法會造成洩漏,那麼對於不同的密碼使用不同的算法會怎樣:如果攻擊者只有 Bcrypt 的硬體,他就無法暴力破解使用 Scrypt 散列的密碼。
編輯:通過組合,我的意思是 hash2(hash1(hash0(password)))。在第二段中,我的意思是 hash0(P0)、hash1(P1)、hash2(P2)、hash0(P3)、hash1(P4)、hash2(P5)。
編輯: hash0(P0), hash1(P0), hash0(P1), hash1(P1), … 怎麼樣?
就某些定制硬體 (ASIC) 而言,不同方案的組合可能有些優勢,但我認為劣勢大於它們。
- 我假設使用者可以接受某種固定時間。沒有人會使用她或他必須等待幾分鐘的程序。現代密碼散列方案的特點是它們不僅時間密集,而且記憶體困難。簡單來說,就是在使用者可以接受的時間內在 RAM 中創建一個向量。如果可用時間較少,則此向量較小。將可接受的時間劃分為多個密碼散列方案會減少為每個單一方案生成向量的時間。所以整個過程變得不那麼記憶困難。
- 與所有加密程序一樣,密碼散列方案可能容易受到側通道攻擊。例如,這適用於記憶體定時攻擊。幾個方案提供了更多的目標。
- 正如提問者已經正確指出的那樣,有幾種方案對錯誤的敏感性更大。
我寧願依賴 Argon2id 之類的方案,並花費所有可用時間來使這種方法盡可能難以記憶。