Linux PRNG



  • Hallo,

    mit den Funktionen srandom(seed)/random wird der interne PRNG von Linux
    angesprochen.
    Ich weiß da nicht viel drüber, nur soviel, dass der verwendete PRNG nicht
    für alle Zeiten festgeschrieben ist, und sich in anderen/kommenden
    Linux-Distributionen ändern könnte, d.h. man erhält zu einem seed eine
    andere Zufallszahlenreihenfolge.

    Mich interessiert, ob man den Quellcode zum internen Linux-PRNG irgenwo finden
    kann und auf halbwegs überschaubare Weise in ein eigenes cpp-programm
    einbinden kann, um so sicherzustellen, das man auch nach Distributionswechsel
    auch weiterhin die gleichen Zufallszahlen zu einem seed erhält,
    was wichtig ist für immer gleiches Programmverhalten.

    Alternative PRNG's wie Mersenne-Twister sind mir bekannt, aber ich
    bevorzuge gerade den internen Linux-PRNG, da er gerade, warum auch immer,
    die "sinnvollsten" Ergebnisse für mein Programm zu liefern scheint.



  • http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=crypto/ansi_cprng.c

    Denk dran, dass der Code unter GPL steht. Das Verwenden des PRNG von Linux über Sytsemaufrufe ist erlaubt, aber wenn du den Quelltext selbst in deine Software integrierst, musst du eine Lizenz wählen, die zur GPL v2 oder höher kompatibel ist.

    Auch dynamisch linken ist nicht möglich (keine LGPL) mit einer nichtkompatiblen Lizenz.



  • danke, aber die Funktion srandom() bspw. finde ich
    in der Datei nicht.
    Hab auch schon die Kernel-Sourcen gegrept, auch dort finde
    ich die Funktion nicht, lediglich in stdlib.h ist sie deklariert,
    aber wo der Quellcode dafür ist, weiß ich nicht.



  • Tachs schrieb:

    wenn du den Quelltext selbst in deine Software integrierst, musst du eine Lizenz wählen, die zur GPL v2 oder höher kompatibel ist.

    GPLv2. Nicht oder höher.



  • tomax schrieb:

    danke, aber die Funktion srandom() bspw. finde ich
    in der Datei nicht.
    Hab auch schon die Kernel-Sourcen gegrept, auch dort finde
    ich die Funktion nicht, lediglich in stdlib.h ist sie deklariert,
    aber wo der Quellcode dafür ist, weiß ich nicht.

    glibc



  • SG1 schrieb:

    Tachs schrieb:

    wenn du den Quelltext selbst in deine Software integrierst, musst du eine Lizenz wählen, die zur GPL v2 oder höher kompatibel ist.

    GPLv2. Nicht oder höher.

    8   *  This program is free software; you can redistribute it and/or modify it
    9   *  under the terms of the GNU General Public License as published by the
    10  *  Free Software Foundation; either version 2 of the License, or (at your
    11  *  any later version.
    

    Du kannst auf eine höhere Version "relizenzieren" und dann eine kompatible Lizenz wählen.



  • Tatsache. Hatte jetzt an den Kernel als ganzes gedacht. Sorry für den falschen Einwurf meinerseits.


Log in to reply