Re: Unidentified subject!
Hi,
David Christensen wrote:
> $ time dd if=/dev/urandom bs=8K count=128K | wc -c
> [...]
> 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 4.30652 s, 249 MB/s
This looks good enough for practical use on spinning rust and slow SSD.
Maybe the "wc" pipe slows it down ?
... not much on 4 GHz Xeon with Debian 11:
$ time dd if=/dev/urandom bs=8K count=128K | wc -c
...
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 4.13074 s, 260 MB/s
$ time dd if=/dev/urandom bs=8K count=128K of=/dev/null
...
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.95569 s, 271 MB/s
Last time i tested /dev/urandom it was much slower on comparable machines
and also became slower as the amount grew.
Therefore i still have my amateur RNG which works with a little bit of
MD5 and a lot of EXOR. It produces about 1100 MiB/s on the 4 GHz machine.
No cryptographical strength, but chaotic enough to avoid any systematic
pattern which could be recognized by a cheater and represented with
some high compression factor.
The original purpose was to avoid any systematic interference with the
encoding of data blocks on optical media.
I am sure there are faster RNGs around with better random quality.
> $ time perl -MMath::Random::ISAAC::XS -e '$i=Math::Random::ISAAC::XS->new(12345678); print pack 'L',$i->irand while 1' | dd bs=8K count=128K | wc -c
> 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 82.6523 s, 13.0 MB/s
Now that's merely sufficient for shredding the content of a BD-RE medium
or a slow USB stick.
> I suggest using /dev/urandom and tee(1) to write the same CSPRN
> stream to all of the devices and using cmp(1) to validate.
I'd propose to use a checksummer like md5sum or sha256sum instead of cmp:
$random_generator | tee $target | $checksummer
dd if=$target bs=... count=... | $checksummer
This way one can use unreproducible random streams and does not have to
store the whole stream on a reliable device for comparison.
Have a nice day :)
Thomas
Reply to: