One-Time-Pad
雙重加密 - One Time Pad
加密系統的安全性可以通過使用兩個隨機選擇的密鑰進行雙重加密來提高嗎?
雙重加密是指使用兩個密鑰 K1 和 K2,每個 20 位長,以獲取密文 $ C = ( M ⊕ K_1 ) ⊕ K_2 $ .
答案是我們不能以這種方式提高一次性便箋簿的安全性。直覺的原因是雙重一次性墊只是一種效率較低的一次性墊。
傳統的基於異或的一次性密碼器的安全性要求密鑰 $ K $ 為每條消息均勻隨機選擇,並且密鑰至少與消息一樣大。
因為 xor 操作是關聯的,我們可以將雙重一次性填充重寫為 $ C = M \oplus(K_1 \oplus K_2) $ 或者 $ C = M \oplus K $ , 在哪裡 $ K = K_1 \oplus K_2 $ . 現在如果 $ K_1 $ 和 $ K_2 $ 是均勻的,很容易證明 $ K $ 也是統一的。假設密鑰和消息有長度 $ n $
$ P_K[k] = \sum_{x \in {0,1}^n}P_{K_1,K_2}[k_1 = x, k_2 = k \oplus k_1] = \frac{1}{2^n} $
換句話說 $ K_1 \oplus K_2 $ 可以簡單地替換為單個統一密鑰,因此 $ K_1 $ 足夠的。此外,雙重一次性填充效率低下,因為它需要兩次異或運算。
關於級聯加密,Maurer 和 Massey表明級聯加密與第一個密碼一樣強大。Matthew Green 的部落格文章是多加密安全性的一個很好(易於閱讀)的總結。
對於一次性密碼,答案是否定的,因為它已經實現了資訊論安全(意味著密文在統計上獨立於明文)。因此,應用它兩次不會增加任何額外的安全性(如果第二個密鑰不獨立於第一個密鑰,實際上可能會降低安全性)。