Public-Key

使用非對稱或對稱主密鑰加密對稱會話密鑰?

  • April 1, 2020

每天,我必須備份我的伺服器的文件,加密備份,並將其上傳到不受信任的雲儲存(dropbox、s3 等)

我花了一些時間在 security.stackexchange 上,發現典型的方法是:

  • 使用隨機的一次性對稱密鑰(“會話”密鑰)加密備份,以提高速度
  • 使用非對稱密鑰加密會話密鑰(“主”密鑰:公鑰/私鑰對中的公鑰)
  • 將加密備份和加密會話密鑰上傳到雲儲存

*但我不明白:為什麼不使用另一個對稱密鑰作為主密鑰?*換句話說:這裡沒有密鑰交換,因為我既是“發送者”又是“接收者”——那麼我如何從使用非對稱密鑰作為主密鑰中受益?

(例如,我使用的是gpg,所以我的伺服器可以儲存一個 100 字元密碼的對稱密鑰,並使用它來加密日常會話密鑰。)

老實說,對稱密碼學在這裡可以很好地工作。


在此設置中公共加密的主要優點是您可以僅使用公共密鑰進行加密。所以你會得到以下操作:

設置:

  • 創建公鑰/私鑰對;
  • 用密碼加密私鑰。

加密:

  • 創建隨機會話密鑰;
  • 使用公鑰加密會話密鑰;
  • 使用會話密鑰和隨機 nonce 加密數據。

對於解密:

  • 解密密碼加密的私鑰;
  • 使用私鑰解密會話密鑰;
  • 使用隨機 nonce 使用會話密鑰解密數據。

換句話說,在加密期間您不需要訪問私鑰,因此您也不需要密碼。你只需要確保你不會洩露你的臨時會話密鑰。

這似乎對於備份頻繁且通常是自動化的備份特別有用,而恢復通常是手動且不頻繁的。


筆記:

  • 還可以以其他方式保護私鑰,例如儲存在 USB 記憶棒上或在智能卡內生成(在生成密鑰對後導出公鑰);
  • 您可能還想為每個文件生成一個對稱密鑰,而不是為每個會話派生一個密鑰 - 請注意,某些模式(例如 GCM)對一個密鑰可以處理的數據量有明確的限制;
  • 修復通常太少見,不要忘記最初和之後經常測試您的修復。

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