Download.dk – Gratis Software, Spil & Drivers på Dansk
Hvor tilfældigt er tilfældigt? Om RNG i software og spil

Hvor tilfældigt er tilfældigt? Om RNG i software og spil

Når du starter en ny runde i et roguelike-spil, får du en bane, du aldrig har set før. Når din browser foreslår et kodeord, kommer der en streng, ingen kan gætte. Begge ting hviler på det samme lille paradoks: et stykke software skal producere noget uforudsigeligt på en maskine, der ellers er bygget til at gøre præcis det samme hver gang.

Det er en større teknisk øvelse, end de fleste regner med. Vi ser på, hvordan tilfældighed faktisk bliver lavet i software, hvorfor den kan gå galt, og hvorfor den i nogle brancher skal kunne dokumenteres af en uvildig tredjepart.

En computer kan ikke finde på noget selv

De tal, de fleste programmer kalder tilfældige, er det ikke. De kommer fra en pseudotilfældig talgenerator, en PRNG, og den er en ganske almindelig deterministisk algoritme. Den får en startværdi, et seed, og regner sig derfra frem til en lang række tal, der ser tilfældige ud, men som ligger fast i samme øjeblik seedet ligger fast.

Derfor kan du dele et verdensseed i Minecraft med en ven og få den samme verden frem på hans maskine. Samme startværdi, samme algoritme, samme resultat. Speedrunnere bruger det aktivt, når de øver den samme bane igen og igen, og mange af titlerne i vores spilsektion bygger baner, loot og fjender på nøjagtig den mekanik.

Algoritmen bag er ofte en klassiker som Mersenne Twister, der er hurtig og har en meget lang periode, før mønsteret gentager sig. Den er glimrende til at grave en hule ud eller blande kortbunken i et hyggespil, men den er ikke bygget til at holde nogen ude. Kender man nok af de tal, den har spyttet ud, kan generatorens tilstand regnes tilbage. Skal tilfældigheden kunne modstå en, der forsøger at forudsige den, skal den komme fra en kryptografisk sikker generator, som bliver seedet fra operativsystemets entropipulje: timingstøj, hardwarehændelser og på nyere processorer en dedikeret instruktion i cpu’en.

Når tilfældigheder skal kunne dokumenteres

Så snart der er penge involveret, holder “det ser tilfældigt ud” ikke længere som argument. I Danmark stiller Spillemyndigheden konkrete krav til spiludbydere med licens: resultatgenerering i spil med et tilfældighedselement skal bygge på en certificeret RNG, og kravet dækker også alt det, der ligger rundt om selve generatoren, altså seeding, mapping og blanding. Generatoren skal være almindeligt anerkendt som en kryptografisk stærk kilde, og testen skal udføres af en akkrediteret testvirksomhed, der udsteder RNG-certifikatet. Kravene ligger offentligt i Spillemyndighedens certificeringsprogram.

Oven på den certificerede generator ligger spillets matematik, og det er her tilbagebetalingsprocenten, RTP, hører hjemme. RTP er et gennemsnit regnet over millioner af spil. Tag en titel som Untamed Giant Panda fra Microgaming: de officielle tal lyder på 96,4 procent, og tre Panda Eye-symboler udløser 10 ekstra spin, der udbetaler det samme som det spin, de blev udløst af. Ifølge anmeldelsen er dyremotivet valgt for at sætte fokus på truede arter, og der er flere oplysninger i denne Untamed Giant Panda-anmeldelse om opsætning, indsatsgrænser og søstertitlen Untamed Bengal Tiger.

Det, tallet ikke fortæller, er noget som helst om en enkelt aften. Varians kan sende et kort forløb langt væk fra gennemsnittet i begge retninger, og hele pointen med en certificeret generator er, at rækkefølgen ikke kan forudsiges undervejs. Vil du læse mere om, hvordan den slags spil er skruet sammen rent teknisk, har vi en gennemgang af videoslots. Spil om penge er i øvrigt for voksne over 18 år, og skal spilles ansvarligt: grænser og udelukkelse sættes via ROFUS.nu, og StopSpillet.dk tager telefonen, hvis spillet vokser sig større end underholdningen.

Da en dårlig startværdi kostede troværdigheden

Det bedste argument for den slags krav er et gammelt eksempel. I 1999 gennemgik en gruppe sikkerhedsforskere kortblandingen i et onlinepokerprogram og fandt, at den blev seedet med antallet af millisekunder siden midnat. Et seed i den størrelsesorden kan en almindelig pc løbe igennem, og med nogle få kendte kort kunne resten af bunken bestemmes. Algoritmen var ikke i sig selv defekt. Startværdien var.

Det er præcis den type fejl, akkrediteret test er sat i verden for at finde, og eksemplet er værd at holde fast i, fordi det flytter spørgsmålet et andet sted hen. Det interessante er sjældent, om en generator “er tilfældig”, men om implementeringen omkring den er lavet ordentligt: hvor seedet kommer fra, hvor mange mulige startværdier der findes, og om blandingen behandler alle udfald lige. Statistiske testsuiter som NIST SP 800-22 og dieharder er bygget til at presse netop det.

Den samme mekanik ligger bag dine kodeord

Uforudsigelighed er ikke et særkrav for spil. Krypteringsnøgler, sessions-id’er og de kodeord, din browser eller password manager foreslår, kommer fra samme familie af kryptografisk sikre generatorer. Bliver de seedet dårligt, bliver nøglerne til at gætte, og det er en del af grunden til, at anbefalingerne om lange, maskingenererede kodeord fylder så meget i Sikkerdigital.dk’s vejledning om kodeord.

Tilfældighed er et kvalitetskrav

Tilfældighed i software er ikke en stemning, men en egenskab, der kan implementeres godt eller skidt og måles udefra. I et spil er konsekvensen af en svag generator en bane, der føles genbrugt. I systemer, hvor der er penge eller personlige data på spil, ser konsekvensen helt anderledes ud, og det er dét certifikatet er der for.

Download.dk Blog