Random-Number-Generator

與 Dieharder 一起測試時,Fortuna 和 Yarrow 應該如何比較

  • August 17, 2019

我將YarrowFortuna都實現為數字生成器。我使用相同的熵源為每個實現執行了 100 個完整的 DieHarder(熵測試器)測試。結果令人驚訝:Fortuna 的表現不如 Yarrow。

結果顯示,使用 Fortuna 生成時結果稍差。

使用 Fortuna PRNG 的目的是否更多地關注安全性和防止“種子洩漏”而不是其生成的隨機值的“質量”?

根據要求,以下是 100 個樣本的結果:

Fortuna
Test Name                                    PASSED    WEAK    POOR    FAILED
-----------------------------------------  --------  ------  ------  --------
RGB Bit Distribution Test                        97       3       0         0
RGB Bit Distribution Test                        96       3       1         0
RGB Bit Distribution Test                        98       2       0         0
RGB Bit Distribution Test                        98       2       0         0
RGB Bit Distribution Test                        97       3       0         0
RGB Bit Distribution Test                        97       3       0         0
RGB Bit Distribution Test                        95       3       2         0
RGB Bit Distribution Test                        97       2       1         0
RGB Bit Distribution Test                        97       3       0         0
RGB Bit Distribution Test                        98       1       1         0
RGB Bit Distribution Test                        94       6       0         0
RGB Bit Distribution Test                        87       8       5         0
Diehard(er) Birthdays Test                       95       3       2         0
Diehard OPERM5 Test                              17      18      45        20
Diehard 32x32 Binary Rank Test                  100       0       0         0
Diehard 6x8 Binary Rank Test                     89      10       1         0
Diehard Bitstream Test                            2       7      61        30
Diehard OPSO                                     77      14       8         1
Diehard OQSO Test                                96       4       0         0
Diehard DNA Test                                 78      16       6         0
Diehard Count the 1s (stream) Test               91       6       3         0
Diehard Count the 1s Test (byte)                 94       4       2         0
Diehard Parking Lot Test                         96       3       1         0
Diehard Minimum Distance (2d Circle) Test        96       3       1         0
Diehard 3d Sphere (Minimum Distance) Test        95       5       0         0
Example Dieharder Test                           94       6       0         0
Diehard Sums Test                                 0       0       0       100
Diehard Runs Test                                96       3       1         0
Diehard Runs Test                                97       3       0         0
Diehard(er) Craps Test                           99       1       0         0
Diehard(er) Craps Test                           97       3       0         0
Marsaglia and Tsang GCD Test                     99       1       0         0
Marsaglia and Tsang GCD Test                     99       1       0         0
STS Monobit Test                                 97       3       0         0
STS Runs Test                                    98       1       1         0
Example Dieharder Test                           98       1       1         0

Yarrow
Test Name                                    PASSED    WEAK    POOR    FAILED
-----------------------------------------  --------  ------  ------  --------
RGB Bit Distribution Test                        98       1       1         0
RGB Bit Distribution Test                        95       5       0         0
RGB Bit Distribution Test                        98       2       0         0
RGB Bit Distribution Test                        98       2       0         0
RGB Bit Distribution Test                        96       2       2         0
RGB Bit Distribution Test                       100       0       0         0
RGB Bit Distribution Test                        98       1       1         0
RGB Bit Distribution Test                        97       3       0         0
RGB Bit Distribution Test                        95       5       0         0
RGB Bit Distribution Test                        99       1       0         0
RGB Bit Distribution Test                        98       2       0         0
RGB Bit Distribution Test                        97       3       0         0
Diehard(er) Birthdays Test                       95       5       0         0
Diehard OPERM5 Test                              15      20      51        14
Diehard 32x32 Binary Rank Test                   97       2       1         0
Diehard 6x8 Binary Rank Test                     91       6       3         0
Diehard Bitstream Test                            4       8      57        31
Diehard OPSO                                     76      16       8         0
Diehard OQSO Test                                98       2       0         0
Diehard DNA Test                                 81      13       4         2
Diehard Count the 1s (stream) Test               94       3       3         0
Diehard Count the 1s Test (byte)                 92       4       4         0
Diehard Parking Lot Test                         97       2       1         0
Diehard Minimum Distance (2d Circle) Test        94       6       0         0
Diehard 3d Sphere (Minimum Distance) Test        95       4       1         0
Example Dieharder Test                           99       1       0         0
Diehard Sums Test                                 0       0       0       100
Diehard Runs Test                                95       4       1         0
Diehard Runs Test                                98       1       1         0
Diehard(er) Craps Test                           97       3       0         0
Diehard(er) Craps Test                           98       2       0         0
Marsaglia and Tsang GCD Test                     97       2       1         0
Marsaglia and Tsang GCD Test                     96       3       1         0
STS Monobit Test                                 98       2       0         0
STS Runs Test                                    95       4       1         0
Example Dieharder Test                           98       2       0         0

使用 Fortuna PRNG 的目的是否更多地關注安全性和防止“種子洩漏”而不是其生成的隨機值的“質量”?

不,這與生成的隨機值的“質量”無關。這是關於 DieHarder 對質量確實好的東西非常偏執。僅僅因為你的 RNG 連續三次給你零,這並不意味著它是一個糟糕的 RNG——這是可以預料的。DieHarder 有一個眾所周知的歷史,不時會失敗每個存在的 RNG。你的結果只是隨機的;下次你可能會得到相反的結果。

如果測試結果增量可以歸因於隨機性,那麼如何將 Fortuna 評估為更好的 PRNG?

DieHarder 僅決定輸出是否具有隨機外觀。這是一種黑盒方法。這只能發現 RNG 質量的重大錯誤,而 DieHarder 突破極限也將好的 RNG 檢測為差。密碼學家有一種白盒方法,它提供了關於密碼的更多細節、它的安全性等。本質上,我們希望攻擊者在攻擊失敗的情況下擁有最多的細節/數據/攻擊點(DieHarder 無法很好地模擬)。Yarrow 嘗試確定輸入質量的方法不太明確。Fortuna 簡化了這一點,因為它使用了更多的隨機池(並且還通過這種方式避免了一些問題)。此外,Yarrow 使用現在已棄用的算法,其中一些算法已被破壞(更不用說效率低下等小缺陷):SHA-1 和 3DES。這些都可以改

簡單地說:Fortuna 實現起來更簡單,開箱即用地使用更好的原語,並且通常被認為更好(因為 Yarrow 有一些 Fortuna 修復的錯誤)。所有這一切都具有更大的安全邊際和更高的效率。如果 Fortuna 可用,則沒有理由考慮 Yarrow。

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