Rsa

使用 AES-256-CBC 的 SSH 密鑰加密的建議密碼複雜度

  • August 24, 2015

當使用基於密碼的加密來保護 SSH 私鑰時,如果密鑰以某種方式被盜/洩露,那麼在不久的將來,如果密鑰被盜/洩露,那麼在不久的將來任何時候破解密碼都變得太難而不值得的一個好的最小密碼複雜度 + 長度標準是什麼。

出於這個問題的目的,私鑰是一個 2048 位 RSA 密鑰(我認為這對這個問題並不重要,但僅供參考,以防我不知道有一些相關性),並且它被 AES-256 加密-CBC。

我當然假設密鑰不會被電腦竊取到可以安裝鍵盤記錄器的程度,而是例如被一些漏洞竊取,例如最近被利用的Firefox pdf.js 漏洞野外並尋找 SSH 密鑰。

AES 密鑰大小和 RSA 密鑰大小都很重要,因為在最薄弱的連結之外添加安全性是沒有用的。這裡最薄弱的環節是 2048 位 RSA,它被認為在安全性上大致等同於 100-128 位對稱密鑰(取決於你問誰)。因此,擁有超過 100位熵的密碼將毫無用處。

實際上,這取決於您對安全性的重視程度。80 位足以抵禦大多數人的攻擊,但如果像 NSA 這樣的大型對手投入足夠的資源,他們可能能夠破解它。100 位應該至少在幾十年內對任何人都是安全的。

對於這在實踐中意味著什麼,舉幾個例子:

  • 80 位密碼:14 個隨機字母數字字元(大寫和小寫)。
  • 80 位密碼:六個diceware字。
  • 100 位密碼:17 個隨機字母數字字元。
  • 100 位密碼:八個 diceware 字。

但是,這裡缺少一個重要的事實:密鑰派生。AES-256 密鑰必須從密碼中派生,並且具有良好的密碼散列功能,這有效地為您的密碼選擇添加了“計算熵”。不幸的是,據我所知,SSH 的預設設置仍然是一個沒有添加任何內容的非迭代 KDF。

如果您選擇使用更強(基於 PBKDF2)的格式(Google 應該會幫助您),您可以根據迭代次數為密碼安全性添加 10-20 位。這意味著您可以略過密碼長度,或者只接受額外的安全性。

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