一鍵快速加密,多鍵順序快速解密
有沒有這樣的加解密機制:給定一個加密 C = E(K1, M),其中 K1 是加密密鑰,M 是明文,它必須依次使用兩個密鑰 K2 和 K3 進行解密才能恢復 M,即是 D(K3, D(K2, C)) = M。給定一個 K1,生成無限數量的對 K2 和 K3 以確保分佈式信任是理想的。對於較大的數據量,加密和解密不應太慢,因此首選對稱密碼。
或者,有沒有辦法從三個密鑰/種子 K1、K2、K3 生成三個隨機數序列 R1(K1)、R2(K2)、R3(K3),使得 R1(K1) = R2(K2) XOR R3 ( K3)? 如果是這樣,上面的問題也可以解決。
我知道 Threshold ElGamal 或其他用於多方加密的公鑰加密,但與 RC4 等對稱網路相比,它們太慢了。
讓我用另一種方式來描述這個故事:Alice 將她的數據上傳到節點 Bob,然後 Carol 查詢 Bob 並下載 Alice 的數據。幾個設計考慮:
- Alice 的數據在上傳給 Bob 或被 Carol 檢索時應被加密;
- Carol 或 Bob 永遠無法單獨解密 Alice 的數據;
- 數據可能很大,需要快速加解密;
- 愛麗絲可能並不總是線上;
- 假設 Bob 和 Carol 不會串通是可以接受的,但如果可以設計一個審計機制(例如區塊鏈)來確保 Bob 和 Carol 在沒有 Alice 的授權的情況下不會合作,那就更好了。
或者,有沒有辦法從三個密鑰 K1、K2、K3 生成三個隨機數序列 R1、R2、R3,使得 R1 XOR R2 XOR R3 = 0?
那部分很簡單;我們可以定義:
$$ R1 = \text{SHAKE}(K1) \oplus \text{SHAKE}(K2) $$ $$ R2 = \text{SHAKE}(K3) \oplus \text{SHAKE}(K1) $$ $$ R3 = \text{SHAKE}(K2) \oplus \text{SHAKE}(K3) $$
(在哪裡 $ \text{SHAKE} $ 例如,可以是可擴展的輸出函式;即,將原像轉換為任意長度位串的函式)。
單獨(和成對), $ R1, R2, R3 $ 所有看起來都是隨機的(假設無法猜測密鑰),但是它們按照您的要求相互異或為 0。
針對問題最後一節的 1/2/3/4 的命題:鍊式混合加密。
我們將使用
- 一種快速的對稱認證加密方案,如AES-GCM或ChaCha20-Poly1305,帶有 256 位密鑰,使用密鑰加密 $ K $ 著名的 $ C=E_K(M) $ 和解密 $ M=D_K(C) $ .
- 一種非對稱加密方案,能夠加密 256 位消息,並註明加密 $ C=\mathcal E_P(M) $ 和解密 $ M=\mathcal D_S(C) $ , 在哪裡 $ (P,S) $ 是一個(公共,私人/秘密)密鑰對。RSAES-OAEP或ECIES可以。
我們假設 Bob 和 Carol 已經生成了密鑰對 $ (P_B,S_B) $ 和 $ (P_C,S_C) $ , 和傳輸的公鑰 $ P_B $ 和 $ P_C $ 以確保完整性和來源證明的方式(可能通過數字證書)向 Alice 發送。
通過 Bob 的代理向 Carol 加密,Alice
- 繪製兩個隨機的 256 位密鑰 $ K_B $ 和 $ K_C $
- 計算 $ C_B=\mathcal E_{P_B}(K_B) $
- 計算 $ C_C=\mathcal E_{P_C}(K_C) $
- 計算 $ C_0=E_{K_B}(C_C) $
- 計算 $ C_1=E_{K_C}(M) $
- 向 Bob 發送消息 $ C=C_B\mathbin|C_0\mathbin|C_1 $ .
Bob 接收和儲存 $ C $ . 當 Carol 請求加密消息時,Bob
- 提取物 $ C_B $ , $ C_0 $ 和 $ C_1 $ 從 $ C $
- 計算 $ K_B=\mathcal D_{S_B}(C_B) $
- 計算 $ C_C=D_{K_B}(C_0) $
- 表格並發送給卡羅爾 $ C’=C_C\mathbin|C_1 $ .
卡羅爾得到 $ C’ $ 和
- 提取物 $ C_C $ 和 $ C_1 $ 從 $ C’ $
- 計算 $ K_C=\mathcal D_{S_C}(C_C) $
- 計算 $ M=D_{K_C}(C_1) $
每當解密失敗時,Bob 或 Carol 就會中止。
請注意,批量消息 $ M $ 只加密一次,滿足性能要求。
我們可以用對稱加密方案替換非對稱加密方案, $ (P_B,S_B) $ 帶著問題的 $ K_2 $ 和 $ (P_C,S_C) $ 帶著問題的 $ K_3 $ (然後順便說一下,可以簡化系統以擺脫 $ K_B $ )。但是通過對稱,我們失去了非對稱密碼學的好處:Alice 不需要保守任何秘密,也不能使用這樣的秘密來嘗試破譯發送給 Bob 或 Carol 的其他通信。