Wat is een willekeurige nummer generator?

  Willekeurig nummer generator (Engels: random number generator, RNG) — het is een systeem dat is ontworpen om een ​​reeks getallen of symbolen te genereren waarvan de betekenis niet op voorhand kan worden voorspeld. Een specifieke reeks gegenereerde resultaten kan een bepaalde patroon dat na het generatieproces zal worden getraceerd, maar dat niet van tevoren kon worden voorzien.

  Generatoren gebaseerd op onvoorspelbare verschijnselen

  Om echte willekeurige getallen te genereren, wordt een hardware-generator voor willekeurige getallen (hardware random number generator, HRNG in het Engels) gebruikt of het wordt ook wel generatoren gebaseerd op onvoorspelbare verschijnselen (Engels: true random number generator, TRNG)True random number generator is een apparaat dat willekeurige getallen genereert uit een fysiek proces dat voortdurend verandert op een manier die: praktisch niet te modelleren. Dergelijke generatoren kunnen gebaseerd zijn op het gebruik van macroscopische willekeurige processen, dat wil zeggen: op een schaal die metingen en waarnemingen met het blote oog mogelijk maakt, bijvoorbeeld het opgooien van munten, dobbelstenen of roulette wielen. Hoewel een macroscopisch proces volledig kan worden bepaald volgens de Newtoniaanse mechanica, een goed ontworpen mechanisme zoals een roulettewiel zal een onvoorspelbaar resultaat opleveren, dat kan worden verklaard door chaostheorie en de instabiliteit van dynamische systemen als gevolg van het verschil in de beginvoorwaarden van elk nieuwe poging om het roulettewiel te laten draaien. Het grootste nadeel van generatoren die macroscopische processen gebruiken, is altijd: lage snelheid, en als gevolg daarvan het onvermogen om in korte tijd een groot aantal waarden te genereren.
  Tegenwoordig gebruiken hardware-generators voor willekeurige getallen meestal apparaten op basis van microscopische verschijnselen Generatoren gebaseerd op onvoorspelbare verschijnselen die statistisch willekeurige "ruis"-signalen op laag niveau genereren, zoals verschillende ruis (рagelruis, thermische ruis, atmosferische ruis), het foto-elektrisch effect, waarbij een bundelsplitser betrokken is, en andere kwantumverschijnselen. Dergelijke processen zijn goede bronnen van entropie omdat hun resultaat in theorie absoluut onmogelijk te voorspellen is, maar vanwege de complexiteit van implementatie en relatieve traagheid van het werk, het toepassingsgebied van dergelijke generatoren is beperkt tot vakgebieden met bepaalde vereisten voor de gegenereerde waarden.
  In principe worden elektronische hardware-generators voor willekeurige getallen gebruikt in cryptografie om willekeurige cryptografisch te genereren sleutels om veilige gegevensoverdracht te garanderen, bijvoorbeeld in internetcoderingsprotocollen zoals TLS (Engels: Transport Layer Security).

Pseudotoevalsgenerator

Pseudotoevalsgeneratorn   Een alternatief voor hardware (fysieke) generatoren zijn generatoren op basis van algoritmen — pseudotoevalsgenerator (Engels: pseudorandom number generator, PRNG), die een reeks getallen creëren die op willekeurig lijken, maar dat in feite niet is. De nummers gegenereerd door de PRNG kunnen niet als echt willekeurig worden beschouwd, omdat ze volledig worden bepaald door een initiële waarde, het zaad van de PRNG. Hoewel de reeks getallen die wordt gegenereerd door hardware-generators voor willekeurige getallen ligt dichter bij echt willekeurig, pseudo-willekeurig nummergeneratoren worden in de praktijk vaak op veel gebieden gebruikt vanwege hun snelheid in nummergeneratie, gemak van implementatie en relatieve goedkoopheid. Er zijn veel methoden om pseudo-willekeurige getallenreeksen te maken, waaronder de Mersenne Twister, een lineaire congruentiële generator (LCG), Xorshift random number generators, ook genaamd schuifregistergeneratoren, de Well Equidistributed Long-period Linear (WELL), een vorm van lineair-feedback schuifregister geoptimaliseerd voor software-implementatie en andere methoden op basis van algoritmen.

Mersennetwister

  De mersennetwister is een van de meest populaire pseudo-willekeurige nummergeneratoren, ontwikkeld in 1997 door Makoto Matsumoto (松本 眞) en Takuji Nishimura (西村 ). De naam komt van het feit dat het periodelengte wordt gekozen als een mersennepriemgetallen, het is een priemgetal van de vorm Mersennetwister voor een geheel getal n. Deze PRNG is speciaal ontworpen om de meeste tekortkomingen in eerdere PRNG's op te lossen. De belangrijkste voordelen van de mersennetwister:
  • Een zeer lange periode van 219937 — 1
  • Slaagt voor veel statistische willekeurigheidstests, waaronder Diehard-tests en de meeste, maar niet alle TestU01-tests
  • Heeft een vrije softwarelicentie en patentvrij voor alle varianten behalve CryptMT
  • k-gedistribueerd tot 32-bits nauwkeurigheid voor elke 1 ≤ k ≤ 623
  • Implementaties genereren over het algemeen sneller willekeurige getallen dan echte (hardware) generatiemethoden
  De mersennetwister wordt gebruikt als de standaard PRNG in veel programmeertalen, software en online bronnen, zoals onze online generator voor willekeurige getallen, maar deze methode is cryptografisch niet sterk, waardoor deze niet in cryptografie kan worden gebruikt.

Gemengde generatoren

  Naast de behoefte om snel gemakkelijk reproduceerbare reeksen willekeurige getallen te genereren, is er ook behoefte aan om volledig onvoorspelbare of gewoon volledig willekeurige getallen te genereren. Om aan beide voorwaarden te voldoen, combinaties van een crypto-resistente PRNG en een externe bron van entropie worden het vaakst gebruikt en dat zijn deze combinaties van generatoren die nu gewoonlijk willekeurig nummer generator (Engels: random number generator, RNG) worden genoemd. Dergelijke generatoren zijn het meest vaak gebruikt voor het genereren van unieke symmetrische en asymmetrische sleutels voor versleuteling, de game-industrie en andere gebieden. Een voorbeeld van de werking van een gecombineerde generator is als volgt: een fysiek apparaat, met behulp van een betrouwbare bron van entropie (zoals thermische ruis), genereert het "zaad" voor een snellere cryptografisch veilige pseudowillekeurige nummergenerator, die vervolgens een pseudowillekeurige uitvoerreeks genereert met een veel hogere gegevenssnelheid.