Wat is een Random Number Beveiligingsprobleem?

Computers zijn deterministisch en dus voorspelbaar. Computers kan niet, in en van zichzelf, het genereren van willekeurige getallen echt.

In afwezigheid van externe input, computers kunnen alleen maar leiden tot pseudo-random getallen.

Een willekeurig getal kwetsbaarheid treedt op wanneer een programma maakt gebruik van een methode voor het genereren van willekeurige getallen die:

  1. Niet random
  2. Voorspelbare

Voor het genereren van willekeurige getallen goed, de computer moet beschikken over twee dingen:

  1. Een goede random nummer generatie algoritme
  2. Een toevallige en unpredicatable zaad voor de random number generation algoritme

Random Number Beveiligingsprobleem Voorbeelden

Overweeg de volgende code:

  x = rand (); 

Deze code wordt gegenereerd slecht willekeurige getallen, want als je belt rand () voordat een zaadje is vastgesteld met srand (), gebruikt de waarde 1 als standaard zaad. Iemand anders op dezelfde machine met dezelfde compiler die oproepen rand () met een zaad van 1 krijgt dezelfde willekeurig getal als je net deed.

Laten we eens kijken naar een ander codefragment:

  srand (time (0)); 
  x = rand (); 

Deze code doet oproep srand () met de huidige tijd als een zaad. Echter, deze code is nog onzeker, omdat:

  1. Het systeem is een heel slecht zaad, omdat het voorspelbaar is binnen een klein bereik.
  2. De ANSI C rand () functie zelf niet het genereren van willekeurige getallen goed.

Laten we eens nagaan derde codefragment:

  srandom (tijd (0)); 
  x = random (); 

Deze code maakt gebruik van de BSD random () en srandom () functies, die het genereren van willekeurige getallen veel beter dan hun ANSI C voorgangers. Echter, deze code nog gebruikt time () voor het genereren van de zaad-nummer. Een veel betere bron voor willekeurige getallen op BSD en Linux-systemen is de / dev / random apparaat.

Aantal Zaden en Random Number Kwetsbaarheden

Goed zaad nummers komen uit onvoorspelbare gebeurtenissen zoals gebruiker toetsaanslagen of muisbewegingen. Deze zijn niet perfect bronnen van willekeurigheid echter. Menselijk gedrag is een beetje voorspelbaar en computer hardware kunnen buffer toetsenbord en muis interrupts, de vermindering van de willekeur.

Tal van andere random number generators zijn beschikbaar voor verschillende platformen en ontwikkelomgevingen. Het is buitengewoon moeilijk om een goede, en nog moeilijker om te bepalen of de random number generator u hebt gemaakt is het genereren van willekeurige en onvoorspelbare nummers. De beste weg voor de meeste toepassingen is de uitvoering van een bestaande Random Number Generator, die is onderworpen aan openbare cryptanalyse.

Willekeurig aantal kwetsbaarheden van belang zijn voor hackers, wanneer ze kunnen worden gebruikt om te bepalen input waarden cryptografische functies. Dit kan worden gebruikt in cryptanalyse.

Oneigenlijk gebruik van de functie vraagt rand () en random () zijn de normale oorzaken van willekeurig aantal kwetsbaarheden.

Aanvullende informatiebronnen op het genereren van willekeurige getallen

Voor meer informatie over het genereren van willekeurige getallen, lees RFC 1750 - Randomness Aanbevelingen voor Veiligheid.

"Iedereen probeert te produceren random nummers door zuiver rekenkundig gemiddelde is natuurlijk in een staat van zonde." - John von Neumann.
Writing Secure Code Building Secure Software Secure Coding Secure Programming Cookbook
Aankoop van deze uitstekende boeken over veilig programmeren op Amazon.com


Top 5 Gratis Networking Tools

Bookmark Wat is een Random Number Beveiligingsprobleem?

Laatste blogberichten


Engels Engels Duits Duits Spaans Spaans Frans Frans Italiaans Italiaans Portugees Portugees Russisch Russisch Nederlands Nederlands
Grieks Grieks Hindi Hindi Japans Japans Koreaans Koreaans Chinees Chinees Chinees (vereenvoudigd) Chinees (vereenvoudigd) Arabisch Arabisch

Copyright 2009 Tech-FAQ. Alle rechten voorbehouden. Privacybeleid.