Encryption

我應該如何實現加密的安全恢復?

  • August 8, 2016

我想創建一個系統來盡可能安全地託管加密數據,即使系統也無法知道數據的內容,但它可以被恢復。

我想知道其他系統是如何實現使用多字恢復密碼的,例如一些比特幣錢包,使用者定義其密碼,但也得到一組要寫入和安全保存的單詞,以防萬一密碼忘記了。

這是一個額外的密鑰,因此它們是解密數據的兩個可能的密鑰嗎?或者只是相同密鑰的另一種形式?什麼算法支持這個?

我將不勝感激任何提示或連結,以便我可以更深入地研究。

謝謝

通常,您有一把重要的鑰匙(萬能鑰匙)。

這可以是您的私人比特幣密鑰、您的密碼數據庫密鑰、驅動器加密密鑰或其他任何東西。

通常你會加密這個密鑰,因為你想盡可能不頻繁地更改它並使用一些使用者輸入(例如密碼)來加密它,因為重新設置系統的成本很高。

您現在有兩種方法來實現備份(輕鬆):

  1. 給使用者密鑰並告訴他們正確儲存它(可能結果不好)
  2. 為使用者提供另一種身份驗證方式(例如密碼),並在標準加密密鑰旁邊儲存使用此方式保護的主密鑰的副本。

方法一:

第一種方式的優點是它可能是header的完整備份,因此如果header損壞,您仍然可以恢復數據。

當然,缺點是您必須信任使用者當然會儲存極其敏感的數據,而這些數據通常對人類非常不友好,是隨機的字節塊。

通常的解決方案是遵循第二種方法並讓使用者對標頭進行備份。

方法 2:

這樣您就可以儲存兩份加密主密鑰副本:一份用於正常操作,一份用於備份情況。然後,備份材料允許通過密鑰的加密備份副本訪問數據。通常,您還會備份包含此密鑰的整個標頭以防止數據失去。


最後還有最後一種方法,它更難使用,並且可能使保護系統變得非常困難:確定性密鑰生成。通過這種方式,您可以使用密碼以確定的方式生成主密鑰,並且相同的密碼輸入將始終產生相同的密鑰。優點當然是不需要備份標頭,只需要一個密碼即可。缺點當然是,如果使用者選擇了錯誤的密碼(如果這是一個選項),那麼通過這種方法暴力破解密鑰可能是一個可行的攻擊向量。

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