Encryption

自適應函式中的“工作因子”和“迭代計數”命名法

  • May 24, 2019

在像 PBKDF2 / bcrypt 這樣的自適應函式中,我經常讀到人們提到“迭代計數”而其他人提到“工作因子”,它們似乎可以互換使用(即使它們不是——後者用於計算前者) .

我也看到了這個(大約 2019 年的商品硬體):

  • 迭代次數:例如100,000
  • 工作因數:例如16or 17,即2^16..2^17( 65536..131072)

我喜歡工作因子的概念,因為它在編碼時更容易推理,例如我可以每年“增加工作因子”,這意味著從1617等等。所以它是一個以 2 為底的“數量級”。

然而,什麼是“正確”的命名法?

沒有關於功能/術語正確與否的國際委員會。

工作因素似乎是一個更通用的術語,在談論需要執行的相對工作量時,我更喜歡這個術語。這 - 至少在內部 - 迭代計數與散列算法一起使用是一個實現細節。

工作因素本身並沒有真正的通用價值。因此,任何執行密鑰拉伸的密碼雜湊/KBKDF 都必須具有工作因子。但是這個工作因子如何反映工作量是特定於算法的。它可能使用對數刻度,對於許多算法來​​說就是這種情況。然而,迭代計數——它是線性的——也是一個工作因素——即使特定的算法規範沒有明確地使用該名稱。

最後,比較所需時間(CPU 時間或使用者時間)的最佳方法是測試這些值。如果您了解內部細節,您可以做出相當不錯的選擇,但最終小的改變——例如具體的實現——可能會產生很大的不同。

引用自:https://crypto.stackexchange.com/questions/70779