Public-Key

一個 SSH 密鑰的 KDF 輪數是多少?

  • May 30, 2020

使用ssh-keygen生成SSH密鑰對時,選擇多少次密鑰派生函式 (KDF)輪次/迭代的最佳實踐是什麼?

我是否正確地說如果密碼足夠強就沒有必要?考慮到密碼長度和 KDF 輪次,是否有某種公式可以計算破解私鑰需要多長時間?

我的猜測是,生成Ed25519密鑰時的預設值 16足夠小,以至於對於正常使用(從命令行登錄到伺服器)幾乎察覺不到,但會為任何蠻力嘗試增加大量費用。我想知道是否值得增加它。

我也嘗試-a在 MacBook Pro Mid14 (i7) 中為該標誌找到一個合適的值,嘗試登錄到 Debian 8.5,我得到了以下結果:

  • -a 1000花了大約 20 秒。
  • -a 100在 ~3.5s 到 ~6s 之間變化。
  • -a 64(4x 預設值)~3 到~9s。
  • -a 16(預設)~2s ~2.5s。

最後我只是堅持使用預設值,因為我不是偏執狂而且我不喜歡等待,但是我在研究中確實發現了一個值100並不少見。

新格式使用 bcrypt_pbkdf() 來派生對稱密鑰。當涉及到工作因素時,這與普通 bcrypt 的行為略有不同。

每個編寫 bcrypt_pbkdf() 的 Ted Unangst:

bcrypt 的原始難度參數是重新加密密碼的 log2 次數。bhash 將此數字固定為 64,而是依靠 PBKDF2 回合參數來控制難度。

來源:http ://www.tedunangst.com/flak/post/bcrypt-pbkdf

由於密碼每次迭代被重新加密 64 次,預設的 16 輪將總共執行 1024 次重新加密操作,這等於工作因子為 10 的原始 bcrypt。

您可以在此處閱讀有關選擇 KDF 輪數的更多資訊。

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