Pseudo-Random-Permutation

PRP 生成器的計算有效區分器

  • October 20, 2016

讓 $ n $ 是一個整數(激勵上下文有 $ n\approx2^{27} $ )。所有其他小寫變數都是小於的非負整數 $ n $ (要點 $ \mathbb Z_n $ )。所有大寫變數都是向量 $ n $ 不同的此類元素,或等價的排列 $ n $ 元素。

我們希望在預言機初始化的實驗中,用盡可能少的查詢有效地區分預言機,然後在查詢 $ j $ 輸出一個排列 $ V_j $ ,具有以下附加屬性: $ \forall i,\forall j,\forall k,;j\ne k\implies V_j[i]\ne V_k[i] $ .

  1. Oracle 1 使用早期輸出的空記憶體進行初始化,然後在每個查詢中輸出一個隨機排列,該排列均勻分佈在附加屬性仍然允許的那些之間。
  2. Oracle 2 通過選擇 3 個獨立的隨機均勻分佈排列進行初始化 $ P $ , $ Q $ , $ R $ ; 然後計算 $ V_j[i] $ 作為 $ R[(P[i]+Q[j])\bmod n] $ .

兩個預言機都履行了職責並可以回答 $ n $ 查詢。他們的每一個輸出,孤立地看,與隨機排列沒有區別。oracle 2 的方案和標準的格式保留加密技術允許建構一個滿足附加屬性的 PRP 生成器,具有 $ O(\ln n) $ 記憶體,並直接訪問任何輸出值。

通過計數論證,對於 $ n>4 $ ,如果我們不考慮效率,則可以使用 3 個查詢來區分。但是我們怎樣才能建立一個有效的區分器呢?

任何關於有效實施的 oracle 3 的建議,與 oracle 1 更難區分?


補充:

如果我們不考慮效率,則可以通過 3 個查詢來區分。但是我們怎樣才能建立一個有效的區分器呢?

我不確定你所說的高效是什麼意思(因為 $ n \approx 2^{27} $ 是一個小數字),但這裡是一個可能的建設性攻擊的草圖。我會讓你告訴我這是否滿足你對效率的想法。我想如果你有足夠的時間來接受一個長的( $ n $ items)從oracle輸出,你有時間做我心目中的攻擊。為了保持符號更清晰,我不會在 $ R[ \alpha \bmod n ] $ .

查詢兩次,以獲得(假設 oracle #2): $ V_1[i] = R[ P[1] + Q[j] ] $ 和 $ V_2[i] = R[ P[2] + Q[j] ] $ . 讓 $ \Delta = P[2] - P[1] \bmod n $ ,攻擊者不知道。不過,如果 $ V_1[i] = R[\alpha] $ 然後 $ V_2[i] = R[\alpha + \Delta] $ . 所以函式 $ F $ 映射所有 $ V_1[i] $ 至 $ V_2[i] $ (攻擊者可以計算)是一個映射所有 $ R[\alpha] $ 至 $ R[\alpha + \Delta] $ .

我認為循環結構 $ F $ 已經導致攻擊!例如,如果 $ n $ 那麼是素數 $ F $ *必須是一個簡單的循環。*這是因為序列 $ \alpha, \alpha+\Delta, \alpha+2\Delta, \ldots $ 生成所有數字 mod $ n $ 在重複之前(所以 $ F $ 訪問所有職位 $ R $ 在重複之前)。但我猜想在 oracle #1 下,攻擊者會得到 $ F $ 是一個隨機對合。所以這已經給出了具有合理偏差的攻擊,只有 2 個查詢。

一般來說,所有周期 $ F $ 必須具有劃分的周期長度 $ n $ (在 oracle #2 面前)。同樣,在 oracle #1 存在的情況下,這似乎不太可能發生。

好的,但是假設由於某種原因推理不成立。在這種情況下,請進行另一個查詢。攻擊者可以計算一個新的 $ F $ 現在再次使用 $ {V_2,V_3} $ 這次而不是 $ {V_1, V_2} $ . 如果我們幸運的話,並且 $ P[3]-P[2] = \Delta $ (這有可能發生 $ 1/n $ ),那麼攻擊者將*獲得相同的 $ F $ 和以前一樣!*同樣,我還沒有計算出機率,但是在 oracle #1 存在的情況下,這個事件的可能性似乎遠低​​於機率 $ 1/n $ .

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