Encryption

使用 Caesar crypt,然後使用 PGP 加密輸出,然後使用 AES-256 加密

  • January 15, 2020

那可能嗎?嗯,當然是這樣,但是如果你解密它,它會在最終輸出中顯示實際消息嗎?如果可能的話,這並不是我在實踐中真正這樣做的。

假設您使用密鑰 22 使用凱撒加密來加密此消息:“糞便”。

輸出將是一堆隨機的廢話。拿那個隨機的廢話並用 PGP 加密它,你會得到更多的隨機廢話。然後用 AES-256 加密那個隨機的廢話,你會得到你見過的最隨機的廢話。

現在你解密 AES-256 得到更少的隨機垃圾,然後你解密它得到更少的隨機垃圾,然後你使用密鑰 4 解密凱撒方法,你會得到“糞便”嗎?

TL;DR 是“是的,這就是加密的工作方式”。這意味著算法不關心它的輸入是什麼,它會加密它(“把它變成垃圾”),如果它在功能上是正確的,它會在沒有問題的情況下將它返回解密;DR這個答案的(和更正式的)版本。

密碼系統最基本的屬性是所謂的功能正確性。直覺地說,這是密碼系統在不受攻擊時始終工作的特性。用更數學的方式表示,讓 $ i\in{1,2,3} $ 和 $ \mathcal K_i $ 是每個加密算法的所有可能密鑰的集合。此外讓 $ \mathcal P_i $ 和 $ \mathcal C_i $ 是所有三種算法的明文和密文空間,使得 $ \mathcal P_2=\mathcal C_1 $ 和 $ \mathcal C_2=\mathcal P_3 $ . 最後讓 $ E^i_K(p) $ 表示明文的加密 $ p $ 下鍵 $ K $ 使用方案 $ i $ 和 $ D^i_K(c) $ 是產生的密文的對應解密。方案 $ i $ 據說在功能上是正確的1如果以下陳述成立:

$$ \forall k\in\mathcal K_i:\forall p\in\mathcal P_i:D_k^i(E_k^i(p))=p $$ 也就是說,對於所有可能的密鑰和所有可能的消息,加密的解密必須返回原始明文。

現在我們選擇了方案 $ 1 $ 為凱撒加密,方案 $ 2 $ 是 PGP 加密和方案 $ 3 $ 是一些基於AES的加密。我們假設所有這些在功能上都是正確的(它們應該是正確的)。最後我們選擇了 $ p=\text{faeces} $ . 現在我們加密: $ c=E^3(E^2(E^1(p))) $ 並解密 $ p’=D^1(D^2(D^3(c))) $ . 如果我們替換,我們得到

$$ p’=D^1(D^2(D^3(E^3(E^2(E^1(p))))))=D^1(D^2(E^2(E^1(p))))=D^1(E^1(p))=p $$符合預期和要求(為了提高可讀性,方程式中省略了鍵)。因此,我們在解密時檢索“糞便”,並且新建構的方案在功能上是正確的。


1:實際上,有時您還會看到一個方案在功能上正確的不同表述,如果它以壓倒性的機率返回正確的明文。從數學上講,這意味著對於某些安全參數 $ l $ 以下應成立: $ \forall l\in \mathbb N:\forall k\in\mathcal K:\forall p\in\mathcal P:\Pr[D_k(E_k(p))\neq p]<\operatorname{negl}(l) $ 在哪裡 $ \operatorname{negl}(\cdot) $ 是一個可忽略的函式,即比任何多項式都快接近 0 的函式。

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