Random-Number-Generator

使 PRNG 具有有利的確定性(又名偏見)的最佳方法是什麼,以及如何保護自己免受這種情況的影響?

  • July 16, 2022

首先,我不是密碼學的專家,甚至不是新手。

我的意思是,這肯定是由一些卑鄙的 PRNG 開發商實施的,他們考慮到了其背後的經濟性(尤其是在賭場和類似的企業中,有偏見的分配會從一開始就讓人們感興趣,但從長遠來看,為賭場帶來了利潤ETC)。所以在某些情況下它甚至可能是合法的,但這不是 Law StackExchange ;-)

是的,我知道 PRNG 有一個週期,因此實際上已經是確定性的,只是周期對於大多數案例來說已經足夠大了。

我的問題是:

  • 您如何使某個 PRNG(在兩種情況下 - 黑盒和相反的情況下)支持一定數量的值?例如,在賭場遊戲中,您如何使隨機性偏向於您自己的利益?
  • 最重要的是,你如何測試你或​​其他人的 PRNG 沒有這樣的偏見?如果你在理論上製造了這樣一個系統,它只是在計算量過大之後才開始顯示它的真實意圖怎麼辦?
  • 有沒有這方面的真實案例研究?
  • 是否適用於我防止偏見的理論案例?

這是一組非常籠統的問題,所以我也會籠統地回答這些問題:

您如何使某個 PRNG(在兩種情況下 - 黑盒和相反的情況下)支持一定數量的值?例如,在賭場遊戲中,您如何使隨機性偏向於您自己的利益?

這根本不是一個很好的方法。您不想讓隨機數生成器偏愛某些值,因為這很容易檢測到。相反,您希望使值可預測。

這樣做的方法是使結果依賴於某種秘密。對於黑盒場景,問題很容易解決:您使用流密碼,它應該創建一個完全隨機的密鑰流。

對於白盒,訣竅是創建隨機數生成器,使密碼社區不會檢測到任何不當行為。例如,當 NSA 向 NIST 和 RSA 實驗室施壓以採用基於 Dual-EC 的隨機數生成器時,NSA 就曾嘗試這樣做。

最重要的是,你如何測試你或​​其他人的 PRNG 沒有這樣的偏見?

您使用諸如 Die Hard(er) 之類的測試工具來測試隨機值是否分佈良好。小的變化雖然很難被發現,但也可能很難使用。

如果你在理論上製造了這樣一個系統,它只是在計算量過大之後才開始顯示它的真實意圖怎麼辦?

如果您可以訪問該算法並且難以使用,那可能很容易檢測到。如果您可以創建完全可預測的 PRNG,我不知道您為什麼會朝這個方向發展。

有沒有這方面的真實案例研究?

看過嗎?

這是否適用於我防止偏見的理論案例?

美白可以防止偏見,但如果可以預測隨機源本身,它就無濟於事;畢竟美白技術本身是確定性的。

也許在您的情況下,使用密鑰流進行異或會有所幫助。結果將保留隨機性,但也取決於密鑰流。

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