Hi Zabrane,<div><br></div><div>If you want just a well distributed RNG with long period, you may take a look at WELL RNG (<a href="http://www.iro.umontreal.ca/~panneton/WELLRNG.html">http://www.iro.umontreal.ca/~panneton/WELLRNG.html</a>) as well. I also needed that and I had an attempt to translate it in Erlang, so, you may use it if you think fit (<a href="https://github.com/cgsmcmlxxv/WELL44497ac">https://github.com/cgsmcmlxxv/WELL44497ac</a>). It is recommended for Monte Carlo simulations and less for cryptography, though.</div>
<div><br></div><div>CGS</div><div><br></div><div><br></div><div><br></div><div><br><div class="gmail_quote">On Fri, Aug 17, 2012 at 9:44 AM, Zabrane Mickael <span dir="ltr"><<a href="mailto:zabrane3@gmail.com" target="_blank">zabrane3@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi Samuel,<div><br></div><div>Thanks for these useful insights.</div><div><br></div><div>
We're not a security software company and our usage of these passwords isn't critical.</div><div>Anyway, we want to learn if possible.</div><div><br></div><div><div class="im"><div><blockquote type="cite"><div>First, random:uniform is not cryptographically secure, which means is<br>
somewhat predictable. As already mentioned use any other generator<br>meant to be secure as the one in crypto or the ssl library.<br></div></blockquote></div></div><div><div class="im"><blockquote type="cite"><div>Even using a secure pseudrandom generator:<br>
<br>Your first implementation destroys the security, as you are creating a<br>seed for each random number an attacker just needs to guess the seed<br>sequence, not the pseudorandom sequence. In your case you had a side<br>
effect of generating collisions, but that was not the worst problem.<br></div></blockquote><div><br></div></div><div>Yup. Sverker response was very clear to this regard!</div><div class="im"><div><br></div><blockquote type="cite">
<div>The second implementation is more secure in that sense, but still the<br>original seed is guessable. An attacker can generate possible password<br>sequences by bruteforce just tying possible now tuples around the time<br>
he thinks the real seed was created.<br></div></blockquote><div><br></div></div>So, how one can generate a secure un-predicatable seeds?</div><div class="im"><div><br><blockquote type="cite"><div>So, if you want to create passwords difficult to guess, you need at<br>
least a cryptographically secure PRG, which will give you an<br>unpredictable sequence of bytes, and an unguessable seed, which will<br>give prevent any attacker from creating the same sequence of bytes<br>again an completely break all your passwords.<br>
</div></blockquote><br></div></div><div>We also moved to "Tiny Mersenne Twister" (<a href="https://github.com/jj1bdx/tinymt-erlang" target="_blank">https://github.com/jj1bdx/tinymt-erlang</a>) instead of using</div>
<div>the standard random:uniform since the last Yaws security alert (<a href="http://erlang.org/pipermail/erlang-questions/2012-June/067626.html" target="_blank">http://erlang.org/pipermail/erlang-questions/2012-June/067626.html</a>).</div>
<div>Is this sufficient or should we also find a way to generate a unpredicatble seed for it?</div><div><br></div>
<div>Regards,</div><div>Zabrane</div></div><div><br></div></div><br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>