Symmetric

我可以用多個密鑰加密數據並用一個解密嗎?

  • May 23, 2019

我可以用多個密鑰加密數據並用一個解密嗎?需要明確的是,我並不是說加密文件,解密它,然後用不同的密鑰再次加密它。我想加密它,然後再加密一次,然後再加密一次,甚至可能再加密一次。我想知道我是否只能使用一個密鑰來解密。密鑰可以更改,但不必是相同的密鑰(實際上不應該如此)。

我需要一種智能方法來將密鑰更新為新密鑰,具體取決於數據被加密的次數。此外,獲得新密鑰的唯一方法是擁有舊密鑰……這可能嗎?是否有可以多次堆疊並由一個密鑰解密的加密算法(我可以創建該密鑰)嗎?要麼這已經可以完成,要麼我瘋了——記住,我是新手……


之前處理過 StackOverflow 上的評論:

“多次加密有什麼意義?正確加密的數據與隨機雜訊無法區分。”

我不是想通過這樣做來使它更安全……

“你想用許多可能的密鑰之一執行 E(k_n, msg) 然後 E(k_d,ciphertext) 來獲取密文嗎?或者你想執行 E(k_1, E(k2, … E( k_n,msg) … ) ) 作為加密?

後者,除了我不想一次用所有密鑰進行加密。我想要 E(k_1, msg) … 一段時間 … E(k_2, encrypted_msg) … 等等,但我想知道我是否可以在經過多次加密後用一個密鑰解密(以及如何獲得那把鑰匙)。

“考慮一下:‘我真的想要一種聰明的方法來將密鑰更新為新密鑰’。”

是的。當然,加密文件會在此過程中發生變化。

也許這個架構會滿足您的需求,即使它不完全符合您的要求:

加密你的明文 $ M $ 使用對稱密鑰 $ K $ , 生產 $ {M}K $ . 然後加密 $ K $ 和 $ K_1 $ . 店鋪 $ {K}{K_1}||{M}_K $ (和 $ || $ 是連接運算符)。

然後,當您想要更新您的加密密鑰時 $ K_2 $ : 解密 $ {K}{K_1} $ 並用 $ K_2 $ (你需要知道 $ K_1 $ 和 $ K_2 $ 這一步)。通過用新值覆蓋它來更新儲存文件的標題,獲得 $ {K}{K_2}||{M}_K $ .

根據需要重複多次,獲得 $ {K}_{K_n}||{M}K $ . 在每個加密步驟 $ n $ ,您將需要上一個密鑰 $ K{n-1} $ 和鑰匙 $ K_n $ . 你永遠不必解密 $ {M}_K $ .

這是一個基於普通消息密碼的候選系統 $ \mathcal E_\kappa(p) $ 和 $ \mathcal D_\kappa(c) $ 以便 $ \mathcal D_\kappa(\mathcal E_\kappa(p)) = p $ 和 $ \mathcal E_\kappa(p) $ 對於任何不知道的人來說,都無法與均勻的隨機雜訊區分開來 $ \kappa $ .

讓 $ k_i $ 成為 $ i^\mathit{th} $ 加密密鑰,讓 $ {E^i}{k_i}(x) $ 成為 $ i^\mathit{th} $ 加密函式,讓 $ k $ 是解密密鑰,讓 $ D_k(x) $ 是解密函式。我們要定義 $ E^i $ 和 $ D $ 以便$$ D_k({E^{n-1}}{k_{n-1}}(\cdots({E^1}{k_1}({E^0}{k_0}(x)))\cdots) = x, $$但除此之外,我們想要所有中間密文, $ {E^i}{k_i}(\cdots({E^0}{k_0}(x))\cdots) $ , 與不知道的對手無法區分均勻隨機雜訊 $ k $ 或者 $ k_i $ .

為此,定義

$$ \begin{align*} {E^0}{k_0}(x) &= \mathcal E{k_0}(x), \ {E^i}_{k_i}(x) &= x, &&\text{for $i > 0$.} \end{align*} $$

解密很簡單:解密密鑰很簡單 $ k_0 $ , 和 $ D_k(x) = \mathcal D_k(x) $ .


如果這不能滿足您的需求,您將需要更具體地說明您的需求,以便他們有意義地排除此系統。“有意義地排除”意味著您必須給出一些與您的應用程序相關的原因為什麼這不起作用,而不是僅僅說您不喜歡它並且 $ E^i $ 函式必須實際做一些事情。

特別是,這將有助於您確定更改了密鑰以及更改密鑰的原因。您是發送者還是接收者,您是否正在更改密碼,因為它已被洩露並通過外科手術從所有儲存系統中刪除了從它派生的先前密鑰的所有痕跡以及用它加密的密文?是否涉及多方,例如組織成員為了避免單方面擁有醫生記錄的權力而將行政職能分開?你或他們都想完成什麼?你假設的對手能夠做什麼來操縱他們試圖用來完成它的資源?你想確保對手不能做什麼?

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