Cryptanalysis

以下場景中異或的漏洞有哪些?

  • December 31, 2019

以下場景中異或運算符的安全漏洞有哪些:

  • 密鑰、密文和明文的比特大小相同。
  • 密鑰只使用一次,它是秘密的
  • 明文只使用一次,它是秘密的
  • 因此,Cyphertext 只使用一次,但它是公開的
  • 只有密文,因此對手知道密鑰的大小

然而:

  • 密鑰由偽隨機數生成器生成
  • 明文(這是其他東西的私鑰)也是由偽隨機數生成器生成的

因此密鑰和明文都不是完全隨機的,容易受到頻率攻擊。


所以我不關心實際問題,比如密鑰共享的難度。我只關心安全問題。

我們可以確定此設置可能容易受到頻率分析的影響,如下所述:

  • https://stackoverflow.com/a/1135204

  • 但是除了密鑰和明文的偽隨機性之外,還有其他漏洞嗎?

  • 如果密鑰和明文都是真正隨機的,這會提供完美的保密性嗎?

您基本上擁有的是二進制加法流密碼,使用您的偽隨機數生成器作為密鑰流生成器。如果使用得當(即同一個密鑰流不會被使用兩次),這種密碼的安全性完全取決於偽隨機數生成器的強度。

如果在不知道生成器種子的情況下實際上無法將生成器的輸出與真正隨機的比特流區分開來,並且如果種子本身是從足夠大的空間中隨機選擇的,使得對所有可能的種子的蠻力測試變得不切實際,那麼這樣的密碼確實是安全的(在保護明文機密性的意義上;請注意,這種基於 XOR 的密碼通常具有延展性,因此容易受到主動篡改攻擊)。

不幸的是,大多數偽隨機數生成器的設計目的不是即使對於故意的攻擊者也無法與隨機數區分。一個典型的 PRNG 的輸出在不經意的觀察者看來只是隨機的,但如果你知道生成器是如何工作的,就可以很容易地將其與隨機區分開來。旨在抵制這種區分嘗試的算法通常被描述為CSPRNG或簡單地描述為流密碼。

如果密鑰流確實是隨機的,那麼您所擁有的將是一次性的,因此確實可以提供完美的保密性(但仍然具有延展性)。明文的隨機性在這裡無關緊要——完美保密(及其計算變體,語義安全)的全部意義在於,具有完美保密性的密碼不會洩露任何關於明文的資訊(除了它的長度),無論如何明文可能是或如何選擇的。

也就是說,如果您打算使用明文作為另一個密碼的密鑰,那麼它肯定應該以一種不切實際的方式生成(即使使用大量的計算能力來測試可能的猜測)。否則,攻擊者可能會完全忽略您的 XOR 流密碼/一次性密碼,而只是嘗試直接猜測另一個密碼的密鑰。

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