Encryption

Python KDF - 主密鑰和衍生物

  • June 12, 2014

可以通過以下組合(任意 2 個 DK 或 1 個 MK)打開加密文件:

DK1 + DK2
DK1 + DK3
DK2 + DK3
DK1 + DK2 + DK3
MK

任何與 Python KDF 邏輯有關的單挑?任何好的文件/參考也足以達到目的。

我嘗試派生密鑰,KDF(MK, "pass1") -> DK1但組合邏輯不起作用。

雖然您的文章很難破譯,但我知道您需要拆分您的主密鑰 $ (MK) $ 分成三股 $ DK_i $ ,其中任何兩個都足以恢復 $ MK $ .

這稱為秘密拆分(或共享)或(2,3)門檻值方案。

許多可能的方法之一是使用 Shamir 的秘密共享方案 (SSSS)。它在正確實施時被證明是安全的,並且可以在包括 Python 在內的多種語言中使用。

有關更多資訊,請參閱https://en.wikipedia.org/wiki/Secret_sharing,或查看shamir-secret-sharing

如果我了解您的要求,您希望:

  • 一個打開加密的主密鑰。
  • 三個子密鑰,至少需要其中兩個才能打開加密。

如果我理解正確,您可以通過

  1. 從主設備派生加密密鑰,例如 $ KDF(M, salt) $ ,或者按原樣使用主密鑰,如果它只需要打開一個加密並且它是從派生密鑰派生的不是問題。
  2. 使用任何共享該加密密鑰 $ (2,3) $ –秘密共享系統。

對特定實現的建議是題外話,但您應該能夠找到他們知道術語“秘密共享”。

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