使 PRNG 具有有利的確定性(又名偏見)的最佳方法是什麼,以及如何保護自己免受這種情況的影響?
首先,我不是密碼學的專家,甚至不是新手。
我的意思是,這肯定是由一些卑鄙的 PRNG 開發商實施的,他們考慮到了其背後的經濟性(尤其是在賭場和類似的企業中,有偏見的分配會從一開始就讓人們感興趣,但從長遠來看,為賭場帶來了利潤ETC)。所以在某些情況下它甚至可能是合法的,但這不是 Law StackExchange ;-)
是的,我知道 PRNG 有一個週期,因此實際上已經是確定性的,只是周期對於大多數案例來說已經足夠大了。
我的問題是:
- 您如何使某個 PRNG(在兩種情況下 - 黑盒和相反的情況下)支持一定數量的值?例如,在賭場遊戲中,您如何使隨機性偏向於您自己的利益?
- 最重要的是,你如何測試你或其他人的 PRNG 沒有這樣的偏見?如果你在理論上製造了這樣一個系統,它只是在計算量過大之後才開始顯示它的真實意圖怎麼辦?
- 有沒有這方面的真實案例研究?
- 這是否適用於我防止偏見的理論案例?
這是一組非常籠統的問題,所以我也會籠統地回答這些問題:
您如何使某個 PRNG(在兩種情況下 - 黑盒和相反的情況下)支持一定數量的值?例如,在賭場遊戲中,您如何使隨機性偏向於您自己的利益?
這根本不是一個很好的方法。您不想讓隨機數生成器偏愛某些值,因為這很容易檢測到。相反,您希望使值可預測。
這樣做的方法是使結果依賴於某種秘密。對於黑盒場景,問題很容易解決:您使用流密碼,它應該創建一個完全隨機的密鑰流。
對於白盒,訣竅是創建隨機數生成器,使密碼社區不會檢測到任何不當行為。例如,當 NSA 向 NIST 和 RSA 實驗室施壓以採用基於 Dual-EC 的隨機數生成器時,NSA 就曾嘗試這樣做。
最重要的是,你如何測試你或其他人的 PRNG 沒有這樣的偏見?
您使用諸如 Die Hard(er) 之類的測試工具來測試隨機值是否分佈良好。小的變化雖然很難被發現,但也可能很難使用。
如果你在理論上製造了這樣一個系統,它只是在計算量過大之後才開始顯示它的真實意圖怎麼辦?
如果您可以訪問該算法並且難以使用,那可能很容易檢測到。如果您可以創建完全可預測的 PRNG,我不知道您為什麼會朝這個方向發展。
有沒有這方面的真實案例研究?
你看過嗎?
這是否適用於我防止偏見的理論案例?
美白可以防止偏見,但如果可以預測隨機源本身,它就無濟於事;畢竟美白技術本身是確定性的。
也許在您的情況下,使用密鑰流進行異或會有所幫助。結果將保留隨機性,但也取決於密鑰流。