Hlavní navigace

Vlákno názorů k článku Jemný úvod do OpenBSD od Yenya - To by me zajimalo, jak muze byt PRNG...

  • Článek je starý, nové názory již nelze přidávat.
  • 21. 5. 2002 13:20

    Yenya (neregistrovaný)

    To by me zajimalo, jak muze byt PRNG bezpecnejsi nez /dev/random v Linuxu. Pouzivat jako zdroj entropie udaje ze site je _nebezpecne_, protoze v krajnim pripade muze utocnik kontrolovat jake packety prijimate. Muzete vase tvrzeni o "vyssi bezpecnosti" PRNG nejak podlozit, nebo je to jen nejaky OpenBSD FUD, ktery jste si nekde precetl?

    Selskym rozumem mi prijde, ze pokud neni uplne jasne jestli sitove packety neni nahodou mozne posilat predikovatelne, tak bezpecnejsi bude ten nahodny generator, ktery tohle do sve entropie nezahrne.

    Relevantni odkaz je napriklad http://www.uwsg.iu.edu/hypermail/linux/kernel/0012.2/0413.html

    -Yenya

  • 21. 5. 2002 13:32

    Urbanek (neregistrovaný)

    relevantni odkazy:
    http://www.openbsd.org/cgi-bin/cvsweb/src/sys/dev/rnd.c

    Jiste si pro a proti uz preberete sam. Pro ostatni dodavam par vynatku z tohoto zdrojaku.
    *
    * Sources of randomness from the environment include inter-keyboard
    * timings, inter-interrupt timings from some interrupts, and other
    * events which are both (a) non-deterministic and (b) hard for an
    * outside observer to measure. Randomness from these sources are
    * added to an "entropy pool", which is mixed using a CRC-like function.
    * This is not cryptographically strong, but it is adequate assuming
    * the randomness is not chosen maliciously, and it is fast enough that
    * the overhead of doing it on every interrupt is very reasonable.

    * As random bytes are mixed into the entropy pool, the routines keep
    * an *estimate* of how many bits of randomness have been stored into
    * the random number generator's internal state.

    *
    * When random bytes are desired, they are obtained by taking the MD5
    * hash of the contents of the "entropy pool". The MD5 hash avoids
    * exposing the internal state of the entropy pool. It is believed to
    * be computationally infeasible to derive any useful information
    * about the input of MD5 from its output. Even if it is possible to
    * analyze MD5 in some clever way, as long as the amount of data
    * returned from the generator is less than the inherent entropy in
    * the pool, the output data is totally unpredictable. For this
    * reason, the routine decreases its internal estimate of how many
    * bits of "true randomness" are contained in the entropy pool as it
    * outputs random numbers.
    *


    * If this estimate goes to zero, the routine can still generate
    * random numbers; however, an attacker may (at least in theory) be
    * able to infer the future output of the generator from prior
    * outputs. This requires successful cryptanalysis of MD5, which is
    * not believed to be feasible, but there is a remote possibility.
    * Nonetheless, these numbers should be useful for the vast majority
    * of purposes.
    *

  • 21. 5. 2002 13:56

    Yenya (neregistrovaný)

    Tak jsem nepochopil, co timhle chcete rict. Ty popsane vlastnosti ma Linuxovy /dev/random taky (akorat pouziva SHA namisto potencialne mene bezpecneho MD5). Diskuse nad clankem pana Petricka byla o tom, jestli (a kolik) entropie zahrnout do poolu od preruseni od sitovych karet. Random number generator funguje tak, ze se pres 1-cestnou funkci (SHA nebo MD5) do poolu cisel hrnou nejaka data a zaroven se nekde drzi dolni odhad toho, kolik opravdu nahodnych bitu v tech datech je. Tohle pak pouziva /dev/random v Linuxu jako odhad toho, kolik opravdu nahodnych dat muze vydat ven (na rozdil od /dev/urandom, ktere vydava nahodna cisla na zaklade tohoto poolu ale bez toho odhadu skutecne nahodnosti).

    Cili vami popsane vlastnosti umi Linux samozrejme taky. Spor je jen o to, jestli tam zapocitavat i preruseni od sitovych karet. Pokud teze autora clanku zni "v OpenBSD je RNG bezpecnejsi nez /dev/random v Linuxu", pak ja tvrdim ze je to nesmysl prave kvuli tem IRQ od sitovych karet.

    Je neco nejasneho?

    -Yenya

  • 21. 5. 2002 18:23

    Jan Kulveit (neregistrovaný)

    "Selskym rozumem mi prijde, ze pokud neni uplne jasne jestli sitove packety neni nahodou mozne posilat predikovatelne, tak bezpecnejsi bude ten nahodny generator, ktery tohle do sve entropie nezahrne."

    To IMHO ukazuje, ze selsky rozum neni adekvatni prostredek k posuzovani bezpecnosti PRNG.

  • 22. 5. 2002 10:20

    Yenya (neregistrovaný)

    Co kdybyste misto prazdneho placani uvedl nejaky argument
    pro sve tvrzeni? Zatim v teto diskusi zadny nepadl.

    -Yenya

  • 22. 5. 2002 15:34

    Jan Kulveit (neregistrovaný)

    Mozna tu doslo jen ke slovnimu nedorozumeni "entropie/odhad entropie".

    Tvrdim, ze :

    "pokud neni uplne jasne jestli sitove packety neni nahodou mozne posilat predikovatelne, tak bezpecnejsi bude ten nahodny generator, ktery tohle do sve entropie zahrne, ale do odhadu sve entropie to nezapocita / zapocita velmi konzervativne"

    Potencialne neni zvlast nebezpecne, ze generator ovlivneny vstup nacte (nahoda se nemuze zmensit), ale pokud bude spatny predpoklad o nahodnosti vstupu, bude nadhodnoceny odhad nahody v poolu generatoru.

    Tvrzeni, ze "pridani ovlivnitelneho vstupu generatoru jinak dobry generator nepokazi" pripadne dolozit muzu.

  • 23. 5. 2002 14:48

    Yenya (neregistrovaný)

    Tohleto je samozrejme neco jineho. S touto formulaci souhlasim. A je to v zasade ve shode s tim, co jsem tady tvrdil - ze pouziti sitovych packetu jako zdroje entropie neni mozno vykladat jako duvod pro to, ze by byl generator v OpenBSD bezpecnejsi nez v Linuxu. Je to asi na urovni jako kdybych ja tvrdil ze ten v Linuxu je bezpecnejsi, protoze pouziva SHA misto MD5.

    Podle doposud uvedenych argumentu se mi to jevi tak, ze oba RNG maji v zasade stejny algoritmus cinnosti, jen se trochu lisi v tom, co do sveho poolu nahodnych cisel zahrnuji a jaky odhad entropie tomu prisuzuji.

    Mym cilem nebylo ukazat ze OpenBSD ma generator nahodnych cisel uplne spatny (to neni pravda). Jen jsem se ohradil proti tvrzeni autora clanku, ze je lepsi nez v Linuxu a proti argumentu, kterym tohle sve tvrzeni podporoval.

    Mimo tuto diskusi bych se jeste chtel zeptat: Linux ma dva vystupy RNG - /dev/random (odtud lze nacist jen tolik nahodnych bitu, kolik je dolni odhad entropie v poolu; pri pozadavku na dalsi nahodny bajt se cteni zablokuje do ziskani dostatecneho mnozstvi entropie) a /dev/urandom (ktery da libovolny pocet bitu, i s tim omezenim, ze to nemusi byt uplne nahodne). Plus samozrejme souvisejici funkce v kernelu, aby TCP stack nemusel cist /dev/random pro generovani sekvencnich cisel. Ma neco takoveho OpenBSD (abych si mohl rict: ted chci skutecne nahodna data; pokud nejsou, radeji si pockam nez bych dostal neco mene nahodneho)?

    Toz tak.

    -Yenya