Pseudo-Random-Function

確定給定函式是否是偽隨機生成器/函式

  • March 9, 2016

我正在嘗試解決以下三個任務(用於考試練習,而不是作為家庭作業):

  1. 定義 $ 𝐺 : {0,1}^* \rightarrow {0,1}^* $ 經過 $ G(x_1,…,x_n) = 𝑥_1 \oplus 𝑥_2,𝑥_1,⋅⋅⋅,x_n. $ 證明這 $ G $ 不是偽隨機生成器。
  2. 讓 $ G $ 是一個偽隨機生成器,並定義 $ G’(x_1, …, x_n) = G(x_1, …, x_n)|(x_1 \vee x_2) $ . 是 $ G’ $ 偽隨機發生器?
  3. 定義 $ 𝐹 : {0,1}^* × {0,1}^* \rightarrow {0,1}^* $ 如下: $ 𝐹_{𝑘_1,…,𝑘_𝑛} (𝑥_1,…, 𝑥_𝑛) = \bigoplus_i 𝑘_𝑖 𝑥_𝑖 $ , 在哪裡 $ 𝑘_𝑖, 𝑥_𝑖 \in {0,1}^* $ (請注意,與通常的約定不同, $ F $ 接受一個 n 位密鑰和一個 n 位輸入,但只有一位輸出)。證明這個𝐹不是偽隨機函式。

我的猜測是:

  1. 不是偽隨機生成器,因為區分器總是可以將 G(s) 與真正的隨機字元串區分開來,因為 G(s) 的第一位總是等於第二位和第三位的 XOR。
  2. 不是偽隨機生成器,因為區分器可以簡單地檢查字元串的最後一位是否等於 $ x_1 \vee x_2 $ 因此可以將 G(s) 與真正的隨機字元串區分開來。
  3. 我無法確定如何解決這個問題。

我的猜測正確嗎?有人可以提供3的想法嗎?

我現在已經完全解決了這些問題。

  1. 不是一個偽隨機發生器,因為第一位 $ G(s) $ 總是等於第二位和第三位的異或,即區分器可以很容易地分辨出 $ G(s) $ 除了真正隨機的字元串 $ r $ .
  2. 不是偽隨機生成器。例如,我們可以構造一個區分器 $ D $ 即,在輸入字元串時 $ w $ , 當且僅當最後一位為 0 時輸出 1。如果 $ w $ 是均勻分佈的,那麼最後一位機率為 0 $ \frac{1}{2} $ 但如果 $ w = G(s) $ 對於均勻分佈的種子 s,最後一個比特有機率為 0 $ \frac{1}{4} $ .
  3. 不是偽隨機函式。區分器 D 可以分辨 $ F_k $ 除了真正的隨機函式 $ f $ 通過以下方式:獲得對預言機的訪問權 $ W $ , D 查詢 $ W(0…0) $ . 如果 $ W = F_k $ 那麼結果將始終為 0,但如果 $ W $ 是一個隨機函式,那麼它應該只有機率為 0 $ \frac{1}{2} $ .

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