Re: randomness (crypto?) code example wanted please?
Roy Marples <[email protected]> Sun, 25 Jun 2017 15:28:25 +0100
| Newsgroups | gmane.os.netbsd.devel.userlevel,gmane.os.netbsd.devel.crypto |
|---|---|
| Message-ID | <[email protected]> |
On 25/06/2017 15:19, Robert Elz wrote: > Date: Sun, 25 Jun 2017 13:53:02 +0200 > From: Kamil Rytarowski <[email protected]> > Message-ID: <[email protected]> > > | There is a libc function for this kind of tasks: arc4random_uniform(3). > > Sorry, I had missed this message when I replied to Martin's (I did see > your later message). > > It looks (from the man page) as if that function fails the "must be able > to generate the same sequence over and over again" requirement of $RANDOM > > If there is some way to prevent the ... > > arc4random() seeds itself on a regular basis from > the kernel strong random number subsystem described in rnd(4). > > mechanism, and set an initial seed, and just generate based upon that > rather than a true randomness source, I don't see it. There isn't .... at least not in NetBSD. > > | I was evaluation at some point whether this could be done differently, > | with a dedicated userland random(1) program, > > That could be done too. sh's $RANDOM is not really intended for > anything of crypto strength I don't think. I suspect half the > implementations just return rand(3) results (ie: garbage). dhcpcd's implementation of IPv4LL has the same limitation, so I use random() there and arc4random/arc4random_uniform everywhere else. https://dev.marples.name/source/dhcpcd/browse/master/src/ipv4ll.c;0d7318eaf52e59fdcff6c472ef8adafd5dbf2069$70 However, I do seed off the interfaces hardware address to avoid random clashes of IPv4LL address. https://dev.marples.name/source/dhcpcd/browse/master/src/ipv4ll.c;0d7318eaf52e59fdcff6c472ef8adafd5dbf2069$359 Roy