Block-Cipher

使用帶有分組密碼的一次性密碼本

  • July 13, 2019

一次性填充通常用簡單的 XOR 密碼來描述。

這很好地展示了一次性便箋簿的理論優勢,但在密鑰重用存在危險的實際場景中卻不是很好。

那麼,使用帶有 n 位密鑰的 n 位分組密碼來代替 XOR 操作(其本身是帶有 1 位密鑰的 1 位分組密碼)是否可行?

所以加密操作就變成了

for each pBlock is n bits of plaintext
    take kBlock as the corresponding n bits of the key
    encrypt pBlock with kBlock as key using the block cipher and the result is cBlock
    append cBlock to the ciphertext

解密也是一樣。

我是否正確,這將使它比使用簡單的 XOR 更能抵抗(但不完全)密鑰重用和已知的明文攻擊?還是我在計劃中添加了一個很大的漏洞?

嗯,不。

你所描述的是歐洲央行的運作模式。ECB 的操作模式是不安全的,因為明文塊的重複會導緻密文塊的重複。這是資訊洩漏,因此破壞了機密性。因此,即使您因為密鑰重用而洩漏的資訊較少,但如果發生這種情況,您仍然會洩漏資訊。

此外,可以通過針對明文塊中的部分資訊驗證密文塊來確定密鑰是否(可能)正確。這打破了 One Time Pad 提供的完美保密性。


我將嘗試進一步解釋最後一部分。

請注意,沒有 $ 2^n $ 可能的排列,有 $ 2^n! $ 可能的排列。為了完全安全,您應該允許它們中的每一個(以相同的機率,不少於)。

這意味著對於任何明智的 $ n $ 密鑰大小會不成比例地增長。此外,您必須有一個密碼,將所有這些密鑰映射到一個排列,這對於通常的分組密碼來說是不正確的。

因此,即使您有一個 n 位的密鑰,其中 m < n 位已知明文,那麼您很可能以高於 $ 0.5 $ 如果它是正確的,則打破剩餘 n - m 位的完全保密。

我認為 Maarten Bodewes 的最後評論至關重要。即使使用統一選擇的密鑰,由於隨機排列 $ {0,1}^n $ 大致有 $ 2^n/e $ 固定點,“塊 OTP”屬性將相對較快地失去,無論密鑰重用如何。

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