Aes
如何要求兩個密鑰持有者解密文件?
我想創建一個系統來加密文件並將其與第 3 方一起儲存,但直到某個未指定的以後日期才能讓第 3 方解密它。似乎解決方案是將密鑰分成兩部分,提供給兩個不同的受信任的第三方。然後當日期到來時,這些第 3 方可以聚在一起解密文件。
我意識到,對於擁有一半密鑰的人來說,拆分密鑰會有效地將密鑰的強度降低一半。
- 將 AES 密鑰分成兩部分是防止任何一方解密文件的有效方法嗎?
- 是否有拆分密鑰的首選方法?中下?每隔一個字節,等等?
- 拆分密鑰時,一方在蠻力攻擊中會比另一方有優勢嗎?換句話說,密鑰的某些部分是否比其他部分更重要?
拆分密鑰根本不會降低密鑰強度。只需生成兩個隨機的 128 位字元串並給每一方一個。使用兩個隨機字元串的異或加密數據。
假設您的隨機數生成器是正確的,則每個字元串單獨都不會提供有關最終密鑰的任何資訊。任何一方都沒有任何優勢。
“拆鍵”的常用方法 $ K $ 成兩個鍵 $ K_0 $ 和 $ K_1 $ 為所述目的向兩方提供的資訊如下:
- 產生 $ K_1 $ 隨機,大小相同 $ K $ ;
- 放 $ K_0 = K \oplus K_1 $ .
《加入》 $ K_0 $ 和 $ K_1 $ 進入 $ K $ 簡直就是 $ K = K_0 \oplus K_1 $ .
這種結構使得兩方中的每一方都無法通過獲得其拆分密鑰獲得任何優勢 $ K_j $ ,除非它也得到另一個;它只是隨機的,與 $ K $ .
這可以概括為 $ n>2 $ 各方必須合作重建 $ K $ :
- 產生 $ K_1 $ 到 $ K_{n-1} $ 隨機,大小相同 $ K $ ;
- 放 $ K_0 = K \oplus K_1 \oplus ..\oplus K_{n-1} $ .
當然加盟是 $ K = K_0 \oplus K_1 \oplus ..\oplus K_{n-1} $ .
這可以進一步推廣到 $ n $ 至少其中的締約方 $ k $ 必須合作重建 $ K $ ,使用Shamir 秘密共享,或其他一些秘密共享方案。