<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:Arial,Helvetica,sans-serif">On Wed, Jan 8, 2020 at 11:19 AM Raimo Niskanen <<a href="mailto:raimo%2Berlang-questions@erlang.org">raimo+erlang-questions@erlang.org</a>> wrote:</span><br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, Jan 08, 2020 at 01:03:53PM +0900, Kenji Rikitake wrote:<br>> <br>
> *Note well that sfmt-erlang has no cryptographic security guarantee and<br>
> MUST NOT be used for security purposes such as password generation.*<br>
<br>
_That_ is a very important point here!<br>
<br></blockquote><div><br></div><div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">This is the important part. CSPRNGs[0] are made to withstand these types of attacks. This is due to the fact they must withstand extension attacks, typically by rolling the internal state material forward in a ratchet so you can't go back to the earlier states. Otherwise, an attacker gaining access to the internal state would be able to roll the RNG state backwards.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">For example, consider we create a "CSPRNG" based on AES265 in CTR mode. Our internal state is {k, n} for a key k and a counter n and to produce the stream of randomness we compute AES_k(0), AES_k(1), AES_k(2), ... and so on. Now the problem is that if the attacker gains access to the pair {k, n} they can regenerate the whole sequence from the start up until n.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">[0] <a href="https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator" style="font-family:Arial,Helvetica,sans-serif">https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator</a></div><br></div></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature">J.</div></div>