Word gematcht

Random

Concepten

Iets wat niet te voorspellen is.

Random, oftewel willekeurigheid, vormt de onzichtbare basis van vrijwel alle cryptografische systemen. Zonder betrouwbare willekeurige getallen kunnen encryptiesleutels, sessietokens en digitale handtekeningen voorspeld worden door aanvallers. In de cybersecurity draait het begrip random om het genereren van waarden die niet te raden, te reproduceren of te berekenen zijn door een buitenstaander. Dit klinkt eenvoudig, maar in de praktijk is echte willekeurigheid verrassend moeilijk te realiseren op deterministische computersystemen.

Het verschil tussen goede en slechte willekeurigheid kan het verschil betekenen tussen een veilig systeem en een volledig gecompromitteerd systeem. Historisch gezien zijn talloze beveiligingslekken terug te voeren op zwakke random number generators (RNG's). Denk aan de Debian OpenSSL-bug uit 2008, waarbij een programmeur per ongeluk de entropiebron uitschakelde, waardoor alle gegenereerde SSH-sleutels voorspelbaar werden. Duizenden servers waren hierdoor kwetsbaar voor aanvallen.

Waarom is random belangrijk?

Willekeurigheid is cruciaal voor de veiligheid van cryptografische protocollen. Wanneer je een HTTPS-verbinding opzet met een website, genereert jouw browser willekeurige waarden om een unieke sessiesleutel te maken. Als een aanvaller die waarden kan voorspellen, kan hij het verkeer ontsleutelen en gevoelige gegevens onderscheppen. Hetzelfde geldt voor het genereren van wachtwoorden, API-tokens en initialisatievectoren voor versleutelingsalgoritmen. Elke cryptografische operatie die afhankelijk is van geheimhouding, vereist een bron van onvoorspelbare willekeurigheid.

Voor Nederlandse organisaties is betrouwbare willekeurigheid extra relevant door de strenge eisen van de AVG en NIS2-richtlijn. Systemen die persoonsgegevens verwerken moeten gebruikmaken van cryptografisch sterke random number generators. Het NCSC benadrukt in zijn richtlijnen dat organisaties moeten vertrouwen op bewezen cryptografische bibliotheken die voldoen aan standaarden als NIST SP 800-90A. Het gebruik van niet-gecertificeerde of zelfgebouwde RNG's vormt een direct compliance-risico.

Zonder goede willekeurigheid vallen beveiligingsmaatregelen als een kaartenhuis in elkaar. Multi-factor authenticatie wordt waardeloos als de eenmalige codes voorspelbaar zijn. Digitale certificaten worden onbetrouwbaar als de sleutelparen met zwakke entropie zijn gegenereerd. Session hijacking wordt triviaal als sessie-ID's een voorspelbaar patroon volgen. Zelfs blockchain-systemen zijn kwetsbaar wanneer de private keys met onvoldoende willekeurigheid worden aangemaakt.

Hoe pas je random toe?

Er bestaan twee hoofdtypen random number generators. True Random Number Generators (TRNG's) maken gebruik van fysieke processen zoals elektronische ruis, radioactief verval of kwantummechanische verschijnselen. Deze leveren echte willekeurigheid, maar zijn relatief traag en vereisen gespecialiseerde hardware. Pseudorandom Number Generators (PRNG's) gebruiken wiskundige algoritmen om vanuit een klein stukje echte willekeurigheid (de seed) een lange reeks schijnbaar willekeurige getallen te produceren. PRNG's zijn snel maar deterministisch: dezelfde seed levert altijd dezelfde reeks op.

Voor cryptografische toepassingen gebruik je uitsluitend Cryptographically Secure Pseudorandom Number Generators (CSPRNG's). Deze voldoen aan extra eisen: zelfs als een aanvaller een deel van de uitvoer kent, mag hij de rest niet kunnen voorspellen. In de praktijk betekent dit dat je als ontwikkelaar nooit zelf een random-functie schrijft, maar gebruikmaakt van bewezen implementaties zoals /dev/urandom op Linux, CryptGenRandom op Windows of de SecureRandom-klasse in Java. Het handmatig implementeren van een PRNG is een van de meest risicovolle fouten die een ontwikkelaar kan maken.

De kwaliteit van willekeurigheid hangt af van de entropiebron. Moderne besturingssystemen verzamelen entropie uit muisbewegingen, toetsaanslagen, netwerktiming en hardwarematige bronnen zoals Intel's RDRAND-instructie. Hoe meer entropie beschikbaar is, hoe sterker de gegenereerde willekeurige waarden. Bij servers zonder gebruikersinteractie, zoals cloudservers, is het extra belangrijk om hardwarematige entropiebronnen te gebruiken. Veel cloudproviders bieden hiervoor dedicated hardware security modules (HSM's) aan die entropie van hoge kwaliteit genereren.

Random in de praktijk

Stel dat een middelgroot accountantskantoor een klantportaal lanceert. Bij het aanmaken van sessietokens gebruikt de ontwikkelaar de standaard Math.random()-functie van JavaScript. Deze functie is niet cryptografisch veilig en produceert voorspelbare waarden. Een aanvaller die het algoritme kent, kan sessietokens van andere gebruikers raden en hun accounts overnemen. De oplossing is eenvoudig: gebruik de Web Crypto API met crypto.getRandomValues(), die wel cryptografisch sterke willekeurigheid levert.

Een ander praktijkvoorbeeld betreft de generatie van wachtwoord-reset tokens. Wanneer een organisatie zwakke willekeurigheid gebruikt voor deze tokens, kan een aanvaller systematisch alle mogelijke tokens doorproberen. Bij een 32-bit token met zwakke entropie zijn er slechts enkele miljarden mogelijkheden, wat een moderne computer in minuten kan doorlopen. Met een CSPRNG en een tokenlengte van 256 bits is zo'n brute-force aanval onhaalbaar, zelfs met de krachtigste supercomputers ter wereld.

De opkomst van quantumcomputers brengt nieuwe uitdagingen voor willekeurigheid. Quantumcomputers kunnen bepaalde wiskundige problemen oplossen die de basis vormen van huidige PRNG's. Daarom werken onderzoekers aan post-quantum cryptografische random number generators die ook bestand zijn tegen quantumaanvallen. Quantum Random Number Generators (QRNG's) gebruiken kwantummechanische verschijnselen als entropiebron en leveren aantoonbaar echte willekeurigheid. Verschillende leveranciers bieden al commerciele QRNG-oplossingen aan voor organisaties die zich willen voorbereiden op het post-quantum tijdperk.

In de Nederlandse context is het relevant dat de overheid via het NCSC richtlijnen uitgeeft over het gebruik van cryptografische algoritmen en random number generators. Organisaties in kritieke infrastructuur worden geadviseerd om hun cryptografische implementaties te laten auditen door gespecialiseerde partijen. De keuze voor de juiste RNG is daarbij een fundamenteel onderdeel van de beveiligingsarchitectuur.

Organisaties die IoT-apparaten inzetten, worden geconfronteerd met een bijzonder uitdaging op het gebied van willekeurigheid. Veel goedkope IoT-sensoren en microcontrollers beschikken niet over een hardwarematige entropiebron en moeten terugvallen op voorspelbare bronnen zoals de opstarttijd van het apparaat. Dit maakt de gegenereerde sleutels zwak en het apparaat kwetsbaar voor aanvallen. Bij de inrichting van IoT-netwerken is het daarom essentieel om te controleren of de gebruikte apparaten beschikken over een betrouwbare TRNG of CSPRNG, en zo niet, de sleutelgeneratie centraal af te handelen via een veilig provisioning-systeem.

Veelgestelde vragen over random

Wat is het verschil tussen een TRNG en een PRNG?

Een True Random Number Generator gebruikt fysieke processen voor echte willekeurigheid. Een Pseudorandom Number Generator gebruikt wiskundige algoritmen die deterministisch zijn maar willekeurig lijken. Voor cryptografie gebruik je altijd een CSPRNG, een cryptografisch veilige variant van een PRNG.

Waarom is Math.random() onveilig voor beveiligingstoepassingen?

Math.random() in JavaScript gebruikt een deterministisch algoritme zonder cryptografische garanties. De uitvoer is voorspelbaar als de interne toestand bekend is. Gebruik in plaats daarvan crypto.getRandomValues() of een server-side CSPRNG voor beveiligingskritieke toepassingen.

Hoe test je of een random number generator veilig is?

Gebruik statistische testsuites zoals de NIST SP 800-22 testsuite of TestU01. Deze testen controleren op patronen, herhalingen en statistische afwijkingen. Daarnaast moet de generator voldoen aan erkende standaarden zoals FIPS 140-2 of Common Criteria.

Wat is entropie in de context van willekeurigheid?

Entropie meet de mate van onvoorspelbaarheid in een systeem. Hoe meer entropie, hoe willekeuriger de gegenereerde waarden. Besturingssystemen verzamelen entropie uit hardwarebronnen, gebruikersinteractie en netwerktiming om hun random number generators te voeden.

Kan een quantumcomputer huidige random number generators kraken?

Quantumcomputers vormen een risico voor bepaalde PRNG-algoritmen die gebaseerd zijn op wiskundige problemen die kwantumcomputers efficient kunnen oplossen. TRNG's en QRNG's blijven veilig omdat ze niet op wiskundige aannames berusten maar op fysieke processen.

Meer weten over cryptografische beveiliging? Bekijk Encryptie aanbieders op IBgidsNL.