<div>Dear Alex and bugs,</div>
<div> </div>
<div>I just checked the source tree, and karc4random() does not use read_random_unlimited().</div>
<div> </div>
<div>Well, it does not use it directly ... I see a call to it elsewhere in:</div>
<div> </div>
<div>/sys/libkern/arc4random.c</div>
<div> </div>
<div>I sent a post into <a href="mailto:bugs@dragonflybsd.org">bugs@dragonflybsd.org</a> a while back and I think it was Matthew Dillon who replied</div>
<div>stating that there are numerous references to e.g. karc4random() strewn about all over the source tree,</div>
<div>and it would be a good idea to update those references to use the superior CSPRNG in:</div>
<div> </div>
<div>/sys/kern/kern_nrandom.c</div>
<div> </div>
<div>But it seems nobody has bothered to do that.</div>
<div> </div>
<div>I&#39;m just sending this bug report in, because the mmap randomisation is a new commit, i.e. it is new</div>
<div>code, and since it is new code it should be using the best CSPRNG available and not the old references</div>
<div>to karc4random().</div>
<div> </div>
<div>Here is the relevant source snippet:</div>
<div> </div>
<div>u_int32_t 
<div class="pre"><a id="l116" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l116">116</a> karc4random(void)</div>
<div class="pre"><a id="l117" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l117">117</a> {</div>
<div class="pre"><a id="l118" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l118">118</a>         u_int32_t ret;</div>
<div class="pre"><a id="l119" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l119">119</a>         struct timeval tv_now;</div>
<div class="pre"><a id="l120" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l120">120</a> </div>
<div class="pre"><a id="l121" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l121">121</a>         /* Initialize array if needed. */</div>
<div class="pre"><a id="l122" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l122">122</a>         if (!arc4_initialized)</div>
<div class="pre"><a id="l123" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l123">123</a>                 arc4_init();</div>
<div class="pre"><a id="l124" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l124">124</a> </div>
<div class="pre"><a id="l125" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l125">125</a>         getmicrotime(&amp;tv_now);</div>
<div class="pre"><a id="l126" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l126">126</a>         if ((++arc4_numruns &gt; ARC4_MAXRUNS) || </div>
<div class="pre"><a id="l127" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l127">127</a>             (tv_now.tv_sec &gt; arc4_tv_nextreseed.tv_sec))</div>
<div class="pre"><a id="l128" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l128">128</a>         {</div>
<div class="pre"><a id="l129" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l129">129</a>                 arc4_randomstir();</div>
<div class="pre"><a id="l130" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l130">130</a>         }</div>
<div class="pre"><a id="l131" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l131">131</a> </div>
<div class="pre"><a id="l132" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l132">132</a>         ret = arc4_randbyte();</div>
<div class="pre"><a id="l133" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l133">133</a>         ret |= arc4_randbyte() &lt;&lt; 8;</div>
<div class="pre"><a id="l134" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l134">134</a>         ret |= arc4_randbyte() &lt;&lt; 16;</div>
<div class="pre"><a id="l135" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l135">135</a>         ret |= arc4_randbyte() &lt;&lt; 24;</div>
<div class="pre"><a id="l136" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l136">136</a> </div>
<div class="pre"><a id="l137" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l137">137</a>         return ret;</div>
<div class="pre"><a id="l138" class="linenr" href="http://gitweb.dragonflybsd.org/dragonfly.git/blob/master:/sys/libkern/arc4random.c#l138">138</a> }</div><br><br></div>
<div class="gmail_quote">On 25 November 2010 16:32, Alex Hornung (via DragonFly issue tracker) <span dir="ltr">&lt;<a href="mailto:bugs@crater.dragonflybsd.org">bugs@crater.dragonflybsd.org</a>&gt;</span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div class="im"><br>Alex Hornung &lt;<a href="mailto:ahornung@gmail.com">ahornung@gmail.com</a>&gt; added the comment:<br><br></div>After a short check it uses exactly the same interface to get the &#39;randomness&#39;<br>
(entropy?), read_random_unlimited().<br><br>So what exactly do you mean? And why is karc4random no good?<br><br>Cheers,<br><font color="#888888">Alex<br></font>
<div>
<div></div>
<div class="h5"><br>_____________________________________________________<br>DragonFly issue tracker &lt;<a href="mailto:bugs@lists.dragonflybsd.org">bugs@lists.dragonflybsd.org</a>&gt;<br>&lt;<a href="http://bugs.dragonflybsd.org/issue1924" target="_blank">http://bugs.dragonflybsd.org/issue1924</a>&gt;<br>
_____________________________________________________<br></div></div></blockquote></div><br><br clear="all"><br>-- <br>Sincerely,<br>Robin Carey<br>
