Encryption

檢測短消息流中的隱寫術

  • January 11, 2016

我有數百萬個由一些隨機數生成器生成的短 n 位(n<30)消息流。我無法獲得隨機數生成器的來源。

我懷疑有些消息用於傳達某些第三方生成的資訊並註入到流中。我要測試這些消息存在的假設。

據我了解,注入此類消息將導致至少存在兩種不同的隨機性來源:一種來自原始隨機數生成器,其餘來自第三方使用的加密算法。所以檢驗我的假設相當於檢測那些模式。

我對隨機數生成的知識非常有限,我希望能得到各種提示、指針、想法和對相關文獻的參考。

在這個問題上增加扭曲。 假設我控制了源的 PNRG(源僅發送隨機消息而沒有負載)。第三方想要在我的資訊流中隱藏他們的消息。

新問題:

  1. 如果將源(算法)的 PRNG 提供給我,我可以辨識那些注入的消息嗎?
  2. 我可以選擇或修改 PRNG 以允許辨識注入的消息嗎?
  3. 第三方能否以這種方式辨識正在修改的流的 PRNG,以便輕鬆檢測非源始發消息?

安全證明:

讓 $ (x_1, …, x_n) $ 成為您擷取的消息。

讓 $ (p_1, …) $ 和 $ (q_1, …) $ 是兩個通信夥伴都知道的三個隨機消息流。讓這些來自生成非自相關數據的真正隨機數源。

讓 $ (n_1, …) $ 是來自同一源的另一個數據流。

由於沒有相關性,所以無法區分 $ p_k $ 從 $ q_k $ 或者 $ n_l $ 在不知道實際數據流的情況下。

要交流,現在選擇 $ p_k $ 如果您的消息的位 k 是 $ 0 $ 和 $ q_k $ 如果是一個。如果您不想交流,只需發送 $ n_k $ .

注意:這一切都取決於真正的 RNG。在使用 PRNG 時,這是可能的,但是存在安全證明http://en.wikipedia.org/wiki/Blum_Blum_Shub具有安全保證,這至少與整數分解一樣難。

對於您的曲折,這實際上變成了您和攻擊者擁有多少資訊的問題:

  1. 不。同樣,加密安全的 RNG 與具有合理計算能力的真正 RNG 沒有區別(否則它們將不安全……),因此,在不了解其種子的情況下,任何消息序列都是合法的輸出。通過使用類似上述的注入方法,使用相同類型的另一個(不同種子)PRNG,即使是輕微的缺點也可以避免。
  2. 當然。打破它。如果您將可能的消息數量限制為 1,則只能通過側通道進行注入(例如消息的數量、它們的到達時間等)。您是否可以檢測到這些取決於您的確切設置。
  3. 在這一點上,它甚至不再是關於 PRNG。如果您的對手剛剛在他們的消息中添加了 MAC http://en.wikipedia.org/wiki/Message_authentication_code,他們可以檢測到您的偽造嘗試。(請注意,這僅與問題 2 非常相關)。

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