• hdgdlfiuebdtus@feddit.de
    link
    fedilink
    Deutsch
    arrow-up
    3
    ·
    2 years ago

    Was sollte man für Sicherheit verwenden bzw. was ist so der aktuelle Standard um “wirklich zufällige” Zahlen zu bekommen?

    • Max@feddit.de
      link
      fedilink
      Deutsch
      arrow-up
      8
      ·
      edit-2
      2 years ago

      Man sollte einen kryptographisch sicheren Zufallszahlengenerator (CSPRNG) verwenden. Z. B. SecureRandom in Java, secrets in Python oder Crypto in JavaScript. Ein CSPRNG weist u. a. folgende Eigenschaften auf:

      1. Nicht vorhersagbar, auch wenn bereits einige Zufallszahlen bekannt sind
      2. Vorhergehende Zufallszahlen können ebenfalls nicht bestimmt werden
      3. Erzeugt Zufallsfolgen mit statistisch gleichvielen Nullen und Einsen

      Normale PRNGs erfüllen nur die dritte Eigenschaft. Sind also einige Zufallszahlen bekannt, könnte man vorherige und nachfolgende Zufallszahlen bestimmen.

      • barsoap@lemm.ee
        link
        fedilink
        Deutsch
        arrow-up
        1
        ·
        2 years ago

        Dazu dann noch Entropie aus physikalischen Quellen mit reinmischen denn man weiß nie ob die NSA den Algorithmus nicht schon geknackt hat.

        Unter Linux ist das ganze sehr einfach: /dev/random. Das ist ein CPRNG (ChaCha20) mit direkt vom Kernel eingeschleuster Entropie und spuckt auch nichts aus bevor nicht genügend Entropie vorhanden ist.


        Auf der anderen Seite: Wenn du die Frage “wo kriege ich kryptographisch sichere Zufallszahlen her” machst du schon was falsch denn du bist gerade dabei Krypto-Code zu implementieren ohne Kryptologe zu sein.

    • driest@feddit.de
      link
      fedilink
      Deutsch
      arrow-up
      6
      ·
      2 years ago

      “wirkliche Zufallszahlen” (true randomness) ist etwas das man für cryptographische Sicherheit nur in sehr begrenzter Menge braucht. cryptographisch sichere randomness reicht aus, und die kann man aus einer kleinen Menge true randomness ableiten. grosse Mengen true randomness zu generieren ist aufwaendig, macht aber heute kaum einer mehr.

      Das betriebssystem hat Zugriff auf eine ganze Reihe guter Entropie Quellen die kleine Mengen true randomness produzieren, unter anderem die rdrand Instruktion, die mit thermischem rauschen im Chip initialisiert wird.

      Linux betreibt einen cryptographisch sicheren Zufallszahlengenerator (CSPRNG) auf den man entweder über den getrandom syscall, oder eins der beiden devices /dev/random und /dev/urandom zugreifen kann.

      • amki@feddit.de
        link
        fedilink
        Deutsch
        arrow-up
        4
        ·
        2 years ago

        Aber mehr zu PR Zwecken. Ich frage mich bis heute ob die Lavalampen im Vergleich zum Rauschen des Bildsensors überhaupt einen Unterschied machen.