Multiparty-Computation
共享文件的多方加密
是否有一種加密算法/協議,其中任何一組預定義的密鑰/密碼都可以成功解密文件?密鑰的數量可以是固定的,例如 10 或 20 個可能的密碼。
上下文是單個應用程序(具有單個嵌入式文件),沒有伺服器端組件。它應該可以在使用者之間共享,在預定義的密碼集中,任何密碼都將成功獲得訪問權限(解密文件)。
編輯:考慮到這一點,我可以在文件中附加一個(對稱)加密密鑰,其中解密的密碼是使用者的密碼嗎?即對於每個使用者,在用使用者密碼加密後附加主密鑰。我不確定這裡適合什麼算法,或者這是否完全安全。
免責聲明:除了基本概念和實現之外,我對密碼學還很陌生——我不太了解這些術語,因此我找不到類似的問題。
是否有一種加密算法/協議,其中任何一組預定義的密鑰/密碼都可以成功解密文件?
不完全是一個協議,但有一些格式可以允許這種事情。使用類似方法的範例係統是LUKS,它提供“key-slots”,完全符合您的要求 - 但針對全盤加密。
$$ C $$我在文件中附加了一個(對稱)加密密鑰,其中解密的密碼是使用者的密碼?
是的,您可以,儘管這些資訊通常放在文件的前面,因此您不必從最後開始收集密鑰然後再次跳到前面。
我不確定這裡適合什麼算法。
我正在快速描述每個鍵槽需要容納的東西。然後外推到 20 個插槽是微不足道的。
- 插槽可能包含一個標識符,因此每個使用者都可以快速發現他的插槽。這可能是電子郵件的雜湊(SHA-3-256或SHA-256)或其他適當的標識符。
- 插槽可能包含用於密鑰派生、加密和身份驗證的算法標識符,以防您計劃將來更改格式。
- 每個插槽應包含一個唯一的、隨機的 16 - 32 字節鹽。
- 插槽應保存用於密鑰推導的推導參數。
- 插槽必須包含一個唯一的、隨機的 IV,每個IV長度為 12 - 16 個字節。
- 插槽必須保存加密的文件密鑰和文件的加密 IV。
至於算法:
密鑰派生算法(按優先順序):
- Argon2是密碼雜湊競賽 (PHC) 的獲勝者,需要至少兩個參數和一個鹽以及密碼,您可能缺少 Argon2 的實現,因為它是相當新的
- 任何其他 PHC 建議(Makwa 除外),它們都是相當新的,您可能沒有實現,它們都需要鹽和至少兩個參數
- scrypt,將需要三個參數和一個鹽,並且比 Argon2 和 PHC 建議更可能可用並且使用大量記憶體
- bcrypt,只需要一個參數和一個鹽,並且很可能可用
- PBKDF2-SHA256,100% 可用,或者您可以很容易地自己實現它
文件密鑰、文件 IV 和文件的加密算法(按優先順序):
- AES-GCM / AES-OCB,如果可用,請使用 AES-OCB,但由於專利,您可能無法使用,如果可用,則 AES-GCM 是您的最佳選擇
- AES-CCM / AES-EAX,如果可能,請使用這些模式,或者如果您有權訪問 AES 原語,則在必要時自行實施它們。
- AES - CTR + HMAC-SHA-256,以先加密後認證的方式使用此模式,並且僅在您可以使用 AES 和 HMAC 但可以實現 EAX 或 CCM 時使用它。
- 3DES - EAX / 3DES - CCM,如果您可以訪問 3DES (或只是DES)的實現並在頂部實現 EAX / CCM,請使用它。
- TEA - EAX / TEA - CCM,如果您無權訪問任何分組密碼的任何實現(極不可能),請使用它