[PATCH] member: fix PRNG seed reset in NitroSketch mode

Stephen Hemminger stephen at networkplumber.org
Mon Jul 3 17:54:58 CEST 2023


On Wed, 21 Jun 2023 00:17:20 +0300
Dmitry Kozlyuk <dmitry.kozliuk at gmail.com> wrote:

> Seeding the global PRNG at sketch creation
> does not make the sketch operation deterministic:
> it uses rte_rand() later, the PRNG may be seeded again by that point.
> On the other hand, seeding the global PRNG with a hash seed,
> is likely undesired, because it may be low-entropy or even constant.
> Deterministic operation can be achieved by seeding the PRNG externally.
> 
> Remove the call to rte_srand() at sketch creation.
> Document that hash seeds are not used by SKETCH set summary type.
> 
> Fixes: db354bd2e1f8 ("member: add NitroSketch mode")
> Cc: leyi.rong at intel.com
> 
> Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk at gmail.com>

This raises a more global issue.
rte_srand() overrides the system seed which is set during startup.
This is a bad thing, it reduces the entropy in the random number generator.

There are two possible solutions to this:
1. Remove all all calls to rte_srand() and deprecate it.
2. Make rte_srand() add a fixed value to existing entropy. This is what the
   kernel PRNG does. It adds any user supplied additional entropy to original
   state.

Looking at current source.
  - code in tests seeding PRNG with TSC. This is unnecessary and can be removed.
  - this code in member library. Should be removed.

Acked-by: Stephen Hemminger <stephen at networkplumber.org>



More information about the dev mailing list