Encryption
Python KDF - 主密鑰和衍生物
可以通過以下組合(任意 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。
如果我了解您的要求,您希望:
- 一個打開加密的主密鑰。
- 三個子密鑰,至少需要其中兩個才能打開加密。
如果我理解正確,您可以通過
- 從主設備派生加密密鑰,例如 $ KDF(M, salt) $ ,或者按原樣使用主密鑰,如果它只需要打開一個加密並且它是從派生密鑰派生的不是問題。
- 使用任何共享該加密密鑰 $ (2,3) $ –秘密共享系統。
對特定實現的建議是題外話,但您應該能夠找到他們知道術語“秘密共享”。