Encryption

重複使用一次性密碼本的部分內容來加密新密碼本?

  • January 14, 2016

OTP 的主要問題是它們只能使用一次。

是否可以使用一個隨機數,例如 512 位,然後將其中的 256 個用於(非隨機)消息,剩下的 256 個用於發送新墊的一半(以便能夠發回消息),然後再使用那些最後的 256 發送後半部分?

據我所見,明文顯然是模糊的(與標準 OTP 完全相同),並且重複使用的部分也是安全的,因為加密資訊也是隨機的。

與兩次/多次墊的最大區別在於,重複使用的部分永遠不會與任何可預測的數據接觸;這是消息的完全不同的部分。因此,據我所知,您可以說 OTP 加密 256 位數字,就像 256 位數字加密 OTP 一樣(兩者都是完全隨機的)。因此,這種安全性與使用 OTP 的正常方式之間應該沒有區別。如果您要重新使用加密純文字的鍵盤部分,那麼您將很容易受到已知的純文字攻擊。

當然,效率並不高,因為如果發現了加密第一條消息的隨機數,則可以發現所有未來的數字。但除此之外,它可能非常有趣。

讓我說清楚; 如果您要發送 256 位消息並獲得 256 位回复,則使用 OTP 的明顯方法是消息用完 256 位填充,而回復用完單獨的 256 位填充,總共使用512 位。

相反,您建議使用總共 512 位來發送消息(和一個臨時填充),然後將使用臨時填充對回復進行加密);這總共使用了 … 512 位填充。

好吧,我看不出有任何不安全的原因(但是,您似乎認為您有辦法將其擴展到多條消息;具體如何工作尚不清楚),但是我也看不到任何與普通 OTP 相比的特定優勢;在這兩種情況下,您都使用 512 位填充來傳輸總共 512 位的消息。

您描述的方案是完全安全的,只要您只發送與預共享密鑰一樣長的消息。所以基本上這是一種低效的方式來做一個一次性墊。讓我們看看當您只有 512 位預共享密鑰時嘗試發送 768 位消息時會發生什麼:

讓 $ A $ 和 $ B $ 是兩個預共享密鑰材料塊(每個塊是 256 位)。讓 $ M_0 $ , $ M_1 $ , 和 $ M_2 $ 是您要發送的三個消息塊(共 768 位)。讓 $ C, D $ , 和 $ E $ 是隨機塊。

第一條消息由三個塊組成:

  1. $ C_0 = M_0 \oplus A $ ,
  2. $ C_1 = B \oplus C $
  3. $ C_2 = B \oplus D $

第二條消息由兩個塊組成:

  1. $ C_3 = M_1 \oplus C $ ,
  2. $ C_4 = D \oplus E $

第三條消息由一個塊組成:

  1. $ C_5 = M_2 \oplus E $

現在用簡單的代數…

$ C_1 \oplus C_2 \oplus C_3 \oplus C_4 \oplus C_5 = M_1 \oplus M_2 $ ,

…您又回到了使用兩次便箋簿的問題上(使用它可以發現未加密消息的簡單功能)。

你當然可以發送 $ M_0 $ 和 $ M_1 $ ,這將是安全的——但在這種情況下,沒有理由亂用額外的隨機塊,因為你可以使用 $ A $ 和 $ B $ 直截了當。

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