Encryption

將密文與明文異或的含義是什麼?

  • May 17, 2019

我對這個問題很感興趣:增加複雜性是否意味著更安全的密碼?

這讓我想知道:將密文與原始明文消息進行異或有什麼含義(如果有的話)?所以:

$$ C=(E_k(m)\oplus m) $$

我的第一印像是:*“這聽起來是個壞主意。”*但這是必然的嗎?似乎類似的東西被用於傳播密碼塊連結

“在 PCBC 模式下,每個明文塊在加密之前都與前一個明文塊和前一個密文塊進行異或運算。”

這不是正確的加密方案,因為它無法正確解密。考慮 $ E_k $ 成為一次性密碼(OTP),關鍵是全零。然後,對於任何消息,您都有:

$$ C = E_{0^{|m|}}(m) \oplus m = (m \oplus 0^{|m|}) \oplus m = m \oplus m = 0^{|m|} $$

或者考慮加密一些隨機字元串 $ r $ ,那麼你有:

$$ C = E_k(r) \oplus r $$

這基本上是OTP。您希望如何解密?

PCBC 模式也不將此構造作為密文的一部分輸出,而是將其作為輸入提供給與明文塊進行異或的塊密碼加密。

最初,我認為一個案例可能是將密文隱藏在密文中,這需要一個虛擬密鑰,這將導致一個虛擬的明文,而真正的密鑰會顯示真正的純文字。

但是,這個特定問題的答案使用相同的**“原始消息”和相同的密文**,該密文是用私鑰對其進行異或運算,這將是通過對這兩者進行異或運算來計算相同的私鑰!這種破壞將等於在新消息上重用私鑰(因為對使用相同密鑰簽名的兩個密文進行異或運算也會計算私鑰。這種類型的異或運算類似於一次性密碼,假設沒有填充和所有字元串的長度相同。

下面是一個使用隨機 31 位二進製字元串的範例:

  • 純文字 = 1001011110010111101001010000101
  • 私鑰 = 1111011011010110110101101101111
  • 密文 = 0110000101000001011100111101010

(即密文由明文計算 $ {\oplus} $ 私鑰

回答所提問題的測試:密文 $ {\oplus} $ 純文字 = 私鑰。

XOR 的關聯性和交換性非常有趣,以及可以在這裡看到的其他品質:https ://en.wikipedia.org/wiki/Exclusive_or

旁注:我開發並發現對探索 XOR 有用的一個練習是將 XOR 的 1 位真值表擴展為 2 位,這將使組合從 4 增加到 16,然後將所有可能的組合對(輸入)映射到相應的XOR 運算,這將揭示每個密文重複 n 次,其中 n 等於組合數的平方根,即位長乘以 2 並提高到 2 的冪(即在這種情況下為 2 位,乘以 2 為 4,二次方為 16,其平方根為 4。

這符合這樣的概念,即任何計算的任意密文都將精確重複 n 次,其中 n 等於消息空間的平方根乘以密鑰空間。因此,從 2^n 個可能的消息範圍內,乘以 2^n 個可能的鍵,該總和的平方根為 2^n。(其中每個都將具有唯一排序的 XOR 函式輸入,從而產生相同的密文輸出)。

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