Tls

是否有任何流行的對稱密碼允許直接重新加密?

  • July 17, 2017

假設我有一些使用密鑰加密的數據, $ K_1 $ , 格式化 $ D_1 $ ,我想轉換成格式 $ D_2 $ 可以使用解密 $ K_2 $ .

所以我知道 $ D_1, K_1 $ 和 $ K_2 $ .

我想轉換 $ D_1 $ 至 $ D_2 $ 但我想避免實際解密數據 $ D_1 $ 成其明文形式。是否可以對任何流行的對稱加密算法(如 DES、3DES、ARCFOUR、AES、Camellia、RC2、IDEA、SEED)這樣做?我猜這是不可能的,但我還是想問一下,因為我對這些方法中的大多數都不太了解。

這樣做的一個原因可能是在企業環境中,公司通常會創建自己的 https 代理並充當 MITM。如果他們只想分析 http 數據包的標頭而不是正文本身,那麼他們只能解密一部分數據並傳遞其餘數據。通過這種方式,它們可以在考慮到安全策略的情況下進行微創。

是的,這對於您的明文的所有同步流密碼都是可能的 $ M $ 只是帶有密鑰流的 XoRed $ K_1 $ 生成密文: $ D_1=M\oplus K_1 $ 因為那樣你就可以簡單地再次 XoR 加密數據 $ D_1 $ 和 $ K_1\oplus K_2 $ 一起得到:

$$ D_2= D_1 \oplus K_1\oplus K_2 = M \oplus K_1\oplus K_1\oplus K_2 =M\oplus K_2. $$ 因此,現代流密碼(例如Chacha20)以及較舊的流密碼(例如 AES-CTR)都支持這一點。

這也意味著您也可以在 CTR操作模式下將其與任何分組密碼一起使用,因此 Camellia、IDEA、AES 等都可以。

但是,其他流密碼具有與密文相關的操作,例如AES-CFB,並且不會那麼容易地允許它。此外,如果您想獲得真正的安全性,您還應該擔心數據的真實性和完整性,這意味著您必須在之後再次使用新密鑰進行 HMAC(或 CBC-MAC)… AEAD 方案通常不支持“重新加密”的密碼。

其他密碼也可能以類似於最近的答案中解釋的方式使用。

還有其他可延展的方案可能允許您在不解密的情況下更改部分或全部秘密材料,前提是您知道舊的和新的秘密材料,例如在 RSA 中很容易更改公共和私人指數,但是那麼你需要使用相同的 $ N=pq $ ,所以任何人都知道這些因素 $ p,q $ 仍然能夠破解兩個私人指數,給定公共指數。

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