理解安全偽隨機數發生器的定義
根據我的閱讀,如果給定 PRNG 生成的數字序列,則安全偽隨機數生成器稱為安全的,那麼如果從序列中刪除任何一個數字,則攻擊者無法通過任何方法確定刪除的數字猜測。當然,這種安全 PRNG 的存在是未知的。
然而,閱讀這樣的定義,我不清楚有幾件事。認為 $ G $ 是一個偽隨機數生成器,因此攻擊者無法通過猜測以外的任何更有效的方法來確定序列中的缺失值。但也假設輸出 $ G $ 是正態分佈的:那麼對手可能仍然需要猜測來確定缺失值,但缺失值很有可能會在特定的區間內。這樣的 PRNG 還會被稱為安全嗎?
你最好複習一下你的讀數,看看他們是否早先在某個地方規定,當他們說“隨機”時,他們的意思是均勻隨機(等機率)。
但即使沒有這樣的規定,我會說你已經鬆散地制定並解釋它的定義似乎意味著等機率。如果我們嚴格遵循您的邏輯,那麼我們必須得出結論,您提議的對正態分佈輸出的攻擊 $ G $ 會暗示 $ G $ 根據您的定義和應用,它實際上並不是一個安全的 PRNG。事實上,您應該能夠得出結論,您的定義和解釋意味著安全 PRNG 的輸出必須是統一的。
但是理論密碼學中使用的定義比這要精確得多。例如在Katz & Lindell 的教科書(第 2 版)中,定義 3.14(第 62 頁):
定義 3.14。讓 $ \ell $ 是一個多項式並讓 $ G $ 是確定性多項式時間算法,使得對於任何 $ n $ 和任何輸入 $ \in {0,1}^n $ , 結果 $ G(s) $ 是一個長度的字元串 $ \ell(n) $ . 我們說 $ G $ 如果以下條件成立,則為偽隨機生成器:
- **(擴展:)**對於每個 $ n $ 它認為 $ \ell(n) > n $ .
- (偽隨機性:)對於任何 PPT 算法 $ D $ , 有一個可以忽略的函式 $ \mathsf{negl} $ 這樣$$ \bigg|\mathrm{Pr}\big[D(G(s)) = 1\big] - \mathrm{Pr}\big[D(r) = 1\big]\bigg| ≤ \mathsf{negl}(n) $$其中第一個機率被接管統一選擇 $ s \in {0,1}^n $ 和隨機性 $ D $ ,並且第二個機率被接管統一選擇 $ r \in {0,1}^{\ell(n)} $ 和隨機性 $ D $ .
我將重複我在最後加粗的這一點:
第二個機率被接管統一選擇 $ r \in {0,1}^{\ell(n)} $
如果你的閱讀材料給你留下了這樣的問題,也許看看更嚴格的東西。