Quantcast
Channel: Programming – Gea-Suan Lin's BLOG
Viewing all articles
Browse latest Browse all 102

從 Dart 的 PRNG 問題學一些經驗...

$
0
0

Lobste.rs 上看到的文章,在講 DartPRNG 問題:「Far From Random: Three Mistakes From Dart/Flutter's Weak PRNG」。

主要的經驗有兩組,第一個是 PRNG 與 CSPRNG 的差異,後者保證了難以預測的特性 (cryptographically secure),有希望不被猜到的情況不應該用 Random 而應該都要用 Random.secure

不過文章裡面提到這邊舊版的 Dart 的 Random 直接設死 seed,也是有點...:

  // TODO: Make this actually random
  static int _initialSeed() => 0xCAFEBABEDEADBEEF;

新版透過 _jsMath.random() 產生 seed,至少不會每次跑都一樣,就 PRNG 來說算是夠用了。

第二個是 entropy 要夠多,不要亂 truncate,不然就會像文章裡面看到只剩下 32 bits 的可能性,就很容易被窮舉硬找出來。

然後現在的程式語言大多都有支援 CSPRNG 的 class/function/library/plugin 可以用,要用的時候可以找一下。


Viewing all articles
Browse latest Browse all 102