Russerne kom med "verdens første" biologiske tilfældige talgenerator. Hvordan arbejder han? Tilfældige og pseudo-tilfældige tal generatorer Computer tilfældige tal generatorer

Deterministiske PRNG'er

Ingen deterministisk algoritme kan generere helt tilfældige tal, den kan kun tilnærme nogle egenskaber ved tilfældige tal. Som John von Neumann sagde, " enhver, der har en svaghed for aritmetiske metoder til at opnå tilfældige tal, er en synder uden tvivl».

Enhver PRNG med begrænsede ressourcer vil før eller siden gå i cyklusser - den begynder at gentage den samme sekvens af tal. Længden af ​​PRNG-cyklusser afhænger af selve generatoren og er gennemsnitlig omkring 2 n/2, hvor n er størrelsen af ​​den interne tilstand i bit, selvom lineære kongruentielle og LFSR-generatorer har maksimale cyklusser af størrelsesordenen 2 n. Hvis en PRNG kan konvergere til cyklusser, der er for korte, bliver den PRNG forudsigelig og ubrugelig.

De fleste simple aritmetiske generatorer, selvom de er hurtige, lider af mange alvorlige mangler:

  • For kort periode/perioder.
  • Konsekutive værdier er ikke uafhængige.
  • Nogle bits er "mindre tilfældige" end andre.
  • Uensartet en-dimensionel fordeling.
  • Reversibilitet.

Især mainframe-algoritmen viste sig at være meget dårlig, hvilket rejste tvivl om pålideligheden af ​​resultaterne af mange undersøgelser, der brugte denne algoritme.

PRNG med entropikilde eller RNG

Sammen med behovet for at generere let reproducerbare sekvenser af tilfældige tal, er der også behov for at generere helt uforudsigelige eller blot helt tilfældige tal. Sådanne generatorer kaldes tilfældige tal generatorer(RNG - eng. tilfældig talgenerator, RNG). Da sådanne generatorer oftest bruges til at generere unikke symmetriske og asymmetriske nøgler til kryptering, er de oftest bygget af en kombination af en kryptografisk stærk PRNG og en ekstern entropikilde (og denne kombination forstås nu almindeligvis som RNG).

Næsten alle større mikrochipproducenter leverer hardware-RNG'er med forskellige kilder til entropi ved at bruge forskellige metoder til at rense dem for uundgåelig forudsigelighed. Men i øjeblikket svarer hastigheden til at indsamle tilfældige tal af alle eksisterende mikrochips (flere tusinde bits i sekundet) ikke hastigheden af ​​moderne processorer.

I personlige computere bruger software-RNG-forfattere meget hurtigere kilder til entropi, såsom lydkortstøj eller en processor-urtæller. Før evnen til at læse urtællerværdierne var entropiindsamling det mest sårbare punkt i RNG. Dette problem er stadig ikke helt løst i mange enheder (f.eks. smart cards), som derfor fortsat er sårbare. Mange RNG'er bruger stadig traditionelle (forældede) entropiopsamlingsmetoder såsom måling af brugerrespons (musebevægelser osv.), som i for eksempel, eller interaktioner mellem tråde, som for eksempel i Java sikker tilfældig.

Eksempler på RNG- og entropikilder

Et par eksempler på RNG'er med deres entropikilder og generatorer:

Entropi kilde PRNG Fordele Fejl
/dev/random på Linux Processorens urtæller, dog kun indsamlet under hardwareafbrydelser LFSR , med output hashed viaDet "varmes op" i meget lang tid, kan "sætte sig fast" i lang tid eller fungerer som en PRNG ( /dev/urandom)
Røllike af Bruce Schneier Traditionelle (forældede) metoder AES-256 ogFleksibelt krypto-resistent design Det "varmes op" i lang tid, meget lille intern tilstand, afhænger for meget af den kryptografiske styrke af de valgte algoritmer, langsom, kun anvendelig til nøglegenerering
Generator Leonid Yuriev Lydkortstøj ? Sandsynligvis en god og hurtig kilde til entropi Ingen uafhængig, kendt for at være sikker PRNG, tilgængelig udelukkende på Windows
Microsoft Indbygget i Windows, sætter sig ikke fast Lille indre tilstand, let at forudsige
Kommunikation mellem tråde I Java er der endnu ikke noget andet valg, en stor intern tilstand Langsom entropiindsamling
Kaos af Ruptor Processor urtæller, indsamlet løbende Hashing en 4096-bit intern tilstand baseret på en ikke-lineær version af Marsaglia-generatoren Mens den hurtigste af alle, store indre tilstand, ikke "sætter sig fast"
RRAND af Ruptor Processor cyklus tæller Kryptering af intern tilstand med en stream-chifferMeget hurtig, intern tilstand af vilkårlig størrelse efter valg, "sætter sig ikke fast"

PRNG i kryptografi

En variation af PRNG er GPSB (PRBG) - generatorer af pseudo-tilfældige bits, såvel som forskellige stream-cifre. PRNG'er består ligesom strømchiffer af en intern tilstand (normalt fra 16 bit til flere megabyte i størrelse), en funktion til at initialisere den interne tilstand med en nøgle eller frø(Engelsk) frø), interne tilstandsopdateringsfunktioner og outputfunktioner. PRNG'er er underopdelt i simple aritmetiske, brudte kryptografiske og kryptografiske stærke. Deres generelle formål er at generere talsekvenser, der ikke kan skelnes fra tilfældige ved hjælp af beregningsmetoder.

Selvom mange stærke PRNG'er eller stream-cifre tilbyder meget mere "tilfældige" tal, er sådanne generatorer meget langsommere end konventionelle aritmetiske og er muligvis ikke egnede til nogen form for forskning, der kræver, at processoren er fri til mere nyttige beregninger.

Til militære formål og i felten bruges kun hemmelige synkrone krypto-resistente PRNG'er (stream ciphers), blok ciphers bruges ikke. Eksempler på velkendte kryptografisk stærke PRNG'er er ISAAC, SEAL, Snow, den meget langsomme teoretiske algoritme af Bloom, Bloom og Shub, samt tællere med kryptografiske hashfunktioner eller kryptografisk sikre blokcifre i stedet for en outputfunktion.

Hardware PRNG

Bortset fra de forældede, velkendte LFSR-generatorer, der blev meget brugt som hardware-PRNG'er i det 20. århundrede, er der desværre meget lidt kendt om moderne hardware-PRNG'er (stream ciphers), da de fleste af dem blev udviklet til militære formål og holdes hemmelige . Næsten alle eksisterende kommercielle hardware-PRNG'er er patenterede og holdes også hemmelige. Hardware PRNG'er er begrænset af strenge krav til hukommelsesforbrug (oftest er brug af hukommelse forbudt), hastighed (1-2 cyklusser) og areal (flere hundrede FPGA'er - eller

På grund af manglen på gode hardware-PRNG'er er producenterne tvunget til at bruge de meget langsommere, men almindeligt kendte blokcifre (Computer Review No. 29 (2003)

  • Yuri Lifshits. Kursus "Kryptografiens moderne opgaver" Forelæsning 9: Pseudorandomgeneratorer
  • L. Barash. AKS-algoritme til kontrol af tal for primalitet og søgning efter konstanter for pseudo-tilfældige talgeneratorer
  • Zhelnikov Vladimir. Pseudo-tilfældige talsekvenser // Kryptografi fra papyrus til computer M.: ABF, 1996.
  • random.org (engelsk) - onlinetjeneste til generering af tilfældige tal
  • Kryptografiske tilfældige tal
  • Teori og praksis for generering af tilfældige tal
  • Zvi Gutterman, Benny Pinkas, Tzachy Reinman. Analyse af Linux Random Number Generator
  • En statistisk testsuite for tilfældige og pseudorandom-talgeneratorer til kryptografiske applikationer NIST SP 800-22
  • Den første algoritme til at opnå pseudo-tilfældige tal blev foreslået af J. Neumann. Det kaldes mid-square metoden.

    Lad et 4-cifret tal R gives 0 = 0,9876. Lad os kvadrere det. Få et 8-cifret nummer R 0 2 =0,97535376. Vi vælger 4 midterste cifre fra dette tal og sætter R 1 = 0,5353. Så firkanter vi det igen og udtrækker de 4 midterste cifre fra det. Lad os få R 2 etc. Denne algoritme har ikke retfærdiggjort sig selv. Det viste sig mere end nødvendigt små værdier af R jeg .

    Det er dog af interesse at undersøge kvaliteten af ​​denne generator med den højreforskydede cifferudvælgelsesgruppe af R jeg 2 :

    hvor a er den maksimale værdi af brøken for en given computer (f.eks. a = 8).

    b-antal decimaler i talR jeg(for eksempel 5).

    INT(A) er den heltallige del af tallet.

    For a=8,b=5,R 0 \u003d 0.51111111 på PC ZX-Spectrum opnås omkring 1200 ikke-gentagende numre.

    Dyrke motion: Undersøgelsen skal udføres med varierende a, b, R 0 . Find ved hvilke værdier a, b, R 0 den største længde L af en sekvens af ikke-gentagende tal opnås med "gode" stokastiske parametre. Bestem om værdien af ​​R påvirker 0 på sensorens kvalitet. Hvis det gør det, skal du bestemme intervallet af "acceptable" værdier for parameteren R 0 . Præsenter resultaterne af test af den optimale variant af værdierne a,b,R 0 .

    Multiplikative algoritmer. Sensor #2: Lemaire 1951 Linear Congruential Generator.

    hvor er du jeg,M,Cip er heltal.

    AmodB er resten af ​​heltalsdivisionen af ​​A med B,

    A mod B=A-B*INT(A/B)

    Den genererede sekvens har en gentagelsescyklus, der ikke overstiger pnumre.

    Den maksimale periode opnås ved C0, men en sådan generator giver dårlige stokastiske resultater.

    Når C=0 kaldes generatorer multiplikative. De har de bedste stokastiske parametre. Formlerne for deres anvendelse kaldes også deduktionsmetoden.

    Den mest populære til at opnå pseudo-tilfældige tal er metoden med rester i henhold til følgende formel:

    hvor er du jeg,M,p-heltal, 0 jeg <1, 1U jegp-1.

    Hvis du vælger U 0 og M sådan, at for R 0 =U 0 /presultatet er en irreducerbar fraktion og tag pM coprime, derefter allR jeg vil være irreducerbare fraktioner af formen: R jeg=U jeg/s.

    Lad os få den største (men ikke mere end p) længde af en ikke-gentagende talrække. VærdierU 0 , og M er praktisk at vælge blandt primtal.

    Dyrke motion: Udforsk på whatU 0 og M vil længden af ​​sekvensen af ​​ikke-gentagende tal være mindst 10000 med "gode" stokastiske parametre. Bestem om værdien af ​​R påvirker 0 med Mip=const på sensorens statistiske karakteristika. Hvis det gør det, skal du bestemme rækkevidden af ​​tilladte værdier U 0 . Præsenter resultaterne af test af generatoren for de optimale værdier af p, Mi og U 0 .

    Sensor #3: Korobov Modifikation.

    hvor p er et stort primtal, såsom 2027, 5087, ...

    M er et heltal, der opfylder betingelserne:

    n er et heltal. De der. vælg M tæt på p/2 fra sættet af tal M=p– 3 n .

    For eksempel tager vi for p=5087 n=7. Fordi 3 7 =2187 og 3 8 =6561 vil være mere end p. Altså: M=5087-2187=2900.

    Vi får U-numre jeg i intervallet = og tallene R jeg i intervallet (0,1).

    Dyrke motion: Vælg Mp, hvor de bedste statistiske parametre for sensoren og den største længde L opnås. Find ud af, om værdien af ​​R påvirker 0 på sensorens stokastiske karakteristika og, hvis det påvirker, så bestem rækken af ​​tilladte værdier R 0 . Vis sensortestresultater for optimale værdier af M, p og R 0 .

    Der foreslås en fremgangsmåde til at konstruere en biologisk tilfældig talgenerator designet til at generere tilfældige sekvenser på en computer eller tablet med en hastighed af størrelsesordenen flere hundrede bits i minuttet. Fremgangsmåden er baseret på beregningen af ​​et antal værdier forbundet med en tilfældig brugerreaktion på en pseudo-tilfældig proces, der vises på en computerskærm. Den pseudo-tilfældige proces implementeres som fremkomsten og krumlinjet bevægelse af cirkler på skærmen inden for et givet område.

    Introduktion

    Relevansen for kryptografiske applikationer af problemer relateret til generering af tilfældige sekvenser (SP) skyldes deres brug i kryptografiske systemer til at generere nøgle- og hjælpeinformation. Selve begrebet tilfældighed har filosofiske rødder, hvilket indikerer dets kompleksitet. I matematik er der forskellige tilgange til definitionen af ​​begrebet "tilfældighed", deres gennemgang er for eksempel givet i vores artikel "Randomness is not random?" . Information om kendte tilgange til definitionen af ​​begrebet "tilfældighed" er systematiseret i tabel 1.

    Tabel 1. Tilgange til definitionen af ​​tilfældighed

    Navn på tilgang Forfattere Essensen af ​​tilgangen
    Frekvens von Mises, Kirke, Kolmogorov, Loveland I SP skal stabiliteten af ​​frekvenserne for forekomst af elementer observeres. For eksempel skal fortegnene 0 og 1 forekomme uafhængigt og med samme sandsynlighed ikke kun i den binære SP, men også i enhver af dens undersekvenser, valgt tilfældigt og uanset de indledende genereringsbetingelser.
    kompleksitet Kolmogorov, Chaitin Enhver beskrivelse af implementeringen af ​​SP kan ikke være væsentligt kortere end selve denne implementering. Det vil sige, at joint venturet skal have en kompleks struktur, og entropien af ​​dets oprindelige elementer skal være stor. En sekvens er tilfældig, hvis dens algoritmiske kompleksitet er tæt på længden af ​​sekvensen.
    Kvantitativ Martin-Lof Opdeling af det probabilistiske rum af sekvenser i ikke-tilfældige og tilfældige, det vil sige i sekvenser, der "ikke består" og "består" et sæt specifikke test designet til at identificere mønstre.
    Kryptografisk Moderne tilgang En sekvens betragtes som tilfældig, hvis den beregningsmæssige kompleksitet af at finde mønstre ikke er mindre end en given værdi.

    Når man studerer syntesen af ​​en biologisk tilfældig talgenerator (i det følgende benævnt BioRNG), er det tilrådeligt at tage følgende forhold i betragtning: en sekvens betragtes som tilfældig, hvis den fysiske kildes tilfældighed er bevist, især kilden er lokalt stationær og genererer en sekvens med specificerede karakteristika. En sådan tilgang til definitionen af ​​tilfældighed er relevant i konstruktionen af ​​BioDFS, den kan betinget kaldes "fysisk". Opfyldelsen af ​​betingelserne bestemmer sekvensens egnethed til brug i kryptografiske applikationer.
    Der er forskellige måder at generere tilfældige tal på en computer, der involverer brugen af ​​meningsfulde og meningsløse brugerhandlinger som en kilde til tilfældighed. Sådanne handlinger inkluderer for eksempel at trykke på taster på tastaturet, flytte eller klikke med musen osv. Entropi er et mål for tilfældigheden af ​​den genererede sekvens. Ulempen ved mange kendte metoder er vanskeligheden ved at estimere mængden af ​​opnået entropi. Tilgange relateret til måling af karakteristika for meningsløse menneskelige bevægelser gør det muligt at opnå en relativt lille brøkdel af tilfældige bits per tidsenhed, hvilket pålægger visse begrænsninger for brugen af ​​genererede sekvenser i kryptografiske applikationer.

    Pseudo-tilfældig proces og brugeropgave

    Lad os overveje genereringen af ​​SP ved hjælp af meningsfulde brugerreaktioner på en ret kompleks pseudo-tilfældig proces. Nemlig: ved tilfældige tidspunkter måles værdierne af et bestemt sæt tidsvarierende mængder. De tilfældige procesværdier repræsenteres derefter som en tilfældig sekvens af bit. Funktionerne i den kryptografiske applikation og driftsmiljøet bestemte en række krav til BioDSCh:
    1. De genererede sekvenser bør statistisk være tæt på ideelle tilfældige sekvenser, især bør polariteten (relativ frekvens "1") af den binære sekvens være tæt på 1/2.
    2. Under implementeringen af ​​processen af ​​den gennemsnitlige bruger, bør genereringshastigheden være mindst 10 bps.
    3. Varigheden af ​​generering af en gennemsnitlig bruger på 320 bit (som i GOST 28147-89-algoritmen svarer til summen af ​​nøglelængden (256 bit) og længden af ​​synkroniseringsmeddelelsen (64 bit)) bør ikke overstige 30 sekunder.
    4. Bekvemmelighed ved brugerens arbejde med BioDSCH-programmet.
    Lad os beskrive princippet om at konstruere den betragtede klasse af BioDSCh. Arbejdsområdet er et rektangel placeret i midten af ​​skærmen på en personlig eller tablet-computer og optager det meste af skærmen for at give brugeren en praktisk visuel analyse af processen. I midten af ​​arbejdsområdet genereres N cirkler med diameter d sekventielt med tidsintervaller på en brøkdel af et sekund, hvorfra de starter retlinet bevægelse i forskellige retninger. Bevægelsesretningen af ​​den i-te cirkel, genereret i det øjeblik, det i-te brugerklik finder sted (i tilfælde af en tablet, ved at trykke med en finger), bestemmes af retningen af ​​den usynlige "cirkelafgangsvektor" til brugeren i samme øjeblik, som roterer ensartet med en given hastighed omkring midten af ​​arbejdsområdet, i=1,...,N.
    Cirklerne bevæger sig som projektioner af bolde på et billardbord, der reflekterer fra hinanden og fra grænserne af arbejdsområdet under kollisioner, ofte ændrer bevægelsesretningen og simulerer en generelt kaotisk bevægelsesproces af cirkler hen over arbejdsområdet (fig. 1).

    Figur 1. Bevægelsesbaner af cirklernes centre inde i arbejdsområdet

    Brugerens opgave er at generere M tilfældige bits. Efter den sidste cirkel vises i arbejdsområdet, skal brugeren hurtigt fjerne alle N bevægelige cirkler ved at klikke i en vilkårlig rækkefølge på området af hver cirkel med musen (i tilfælde af en tablet, med en finger). Sessionen med at generere et vist antal SP-bit slutter efter fjernelse af alle cirkler. Hvis antallet af bit genereret i en session ikke er nok, så gentages sessionen så mange gange som nødvendigt for at generere M bit.

    Procesvariable

    SP-generering udføres ved at måle en række karakteristika ved den beskrevne pseudo-tilfældige proces på tilfældige tidspunkter bestemt af brugerens reaktion. Bitgenereringshastigheden er højere, jo mere uafhængige karakteristika måles. Uafhængigheden af ​​de målte egenskaber betyder uforudsigeligheden af ​​værdien af ​​hver egenskab fra de kendte værdier for andre egenskaber.
    Bemærk, at hver cirkel, der bevæger sig på skærmen, er nummereret, opdelt i 2 k lige store sektorer, der er usynlige for brugeren, nummereret fra 0 til 2 k -1, hvor k er et naturligt tal og roterer omkring dets geometriske centrum med en given vinkelhastighed. Brugeren kan ikke se nummereringen af ​​cirkler og sektorer i cirklen.
    I det øjeblik, man kommer ind i cirklen (vellykket klik eller tryk med en finger), måles en række proceskarakteristika, de såkaldte kilder til entropi. Lad os betegne som i punktet for at falde ind i den i-te cirkel, i=1,2,... Så er det hensigtsmæssigt at henvise til de målte værdier:
    • X- og Y-koordinater for punkt a i;
    • afstand R fra centrum af cirklen til punktet a i ;
    • nummeret på sektoren inden for den i-te cirkel, der indeholder punktet a i ;
    • cirkelnummer osv.
    De målte værdier konverteres til en binær repræsentation, hvis elementer derefter filtreres, når de indgår i den resulterende bitsekvens.

    Eksperimentelle resultater

    For at bestemme parametrene for den prioriterede implementering af BioDSCH blev omkring 104 sessioner udført af forskellige udøvere. De implementerede eksperimenter gjorde det muligt at bestemme områderne med passende værdier for parametrene i BioDSCh-modellen: størrelsen af ​​arbejdsområdet, antallet og diameteren af ​​cirkler, hastigheden af ​​bevægelse af cirkler, rotationshastigheden af ​​​​cirklerne "cirkler afgangsvektor", antallet af sektorer, som cirkler er opdelt i, cirklernes vinkelhastighed osv.
    Ved analyse af resultaterne af BioDSCH's arbejde blev følgende antagelser gjort:
    • de registrerede hændelser er uafhængige i tid, det vil sige, at brugerens reaktion på processen observeret på skærmen er svær at replikere med høj nøjagtighed både til en anden bruger og til brugeren selv;
    • entropikilder er uafhængige, det vil sige, at det er umuligt at forudsige værdierne af enhver karakteristik fra de kendte værdier af andre egenskaber;
    • kvaliteten af ​​outputsekvensen bør evalueres under hensyntagen til kendte tilgange til definitionen af ​​tilfældighed (tabel 1), såvel som den "fysiske" tilgang.
    Estimeringen af ​​konfidensintervaller for værdierne af de beregnede procesmængder svarer til et signifikansniveau på 0,05. For at genkende ensartetheden af ​​fordelingen af ​​tegn for den opnåede prøve (efter reduktion til binær form) blev chi-kvadrat-testen for overensstemmelse med en ensartet fordeling brugt.
    I overensstemmelse med længden af ​​de genererede binære sekvenser blev en acceptabel begrænsning af deres polaritet p sat: |p-1/2|ab, hvor b?10-2.
    Antallet af bit opnået fra værdierne af de målte mængder af processen (entropikilder) blev bestemt empirisk baseret på analysen af ​​den informative entropi af værdierne af de undersøgte egenskaber. Det er empirisk blevet fastslået, at "fjernelse" af enhver cirkel giver dig mulighed for at få omkring 30 bits af en tilfældig sekvens. Derfor, med de anvendte BioDSCh-layoutparametre, er 1-2 sessioner af BioDSCh-operationen tilstrækkelige til at generere nøglen og initialiseringsvektoren for GOST 28147-89-algoritmen.
    Retninger til forbedring af biologiske generatorers egenskaber bør forbindes både med optimering af parametrene for dette layout og med undersøgelsen af ​​andre BioDSCh-layouts.

    Deterministiske PRNG'er

    Ingen deterministisk algoritme kan generere helt tilfældige tal, den kan kun tilnærme nogle egenskaber ved tilfældige tal. Som John von Neumann sagde, " enhver, der har en svaghed for aritmetiske metoder til at opnå tilfældige tal, er en synder uden tvivl».

    Enhver PRNG med begrænsede ressourcer vil før eller siden gå i cyklusser - den begynder at gentage den samme sekvens af tal. Længden af ​​PRNG-cyklusser afhænger af selve generatoren og er gennemsnitlig omkring 2 n/2, hvor n er størrelsen af ​​den interne tilstand i bit, selvom lineære kongruentielle og LFSR-generatorer har maksimale cyklusser af størrelsesordenen 2 n. Hvis en PRNG kan konvergere til cyklusser, der er for korte, bliver den PRNG forudsigelig og ubrugelig.

    De fleste simple aritmetiske generatorer, selvom de er hurtige, lider af mange alvorlige mangler:

    • For kort periode/perioder.
    • Konsekutive værdier er ikke uafhængige.
    • Nogle bits er "mindre tilfældige" end andre.
    • Uensartet en-dimensionel fordeling.
    • Reversibilitet.

    Især mainframe-algoritmen viste sig at være meget dårlig, hvilket rejste tvivl om pålideligheden af ​​resultaterne af mange undersøgelser, der brugte denne algoritme.

    PRNG med entropikilde eller RNG

    Sammen med behovet for at generere let reproducerbare sekvenser af tilfældige tal, er der også behov for at generere helt uforudsigelige eller blot helt tilfældige tal. Sådanne generatorer kaldes tilfældige tal generatorer(RNG - eng. tilfældig talgenerator, RNG). Da sådanne generatorer oftest bruges til at generere unikke symmetriske og asymmetriske nøgler til kryptering, er de oftest bygget af en kombination af en kryptografisk stærk PRNG og en ekstern entropikilde (og denne kombination forstås nu almindeligvis som RNG).

    Næsten alle større mikrochipproducenter leverer hardware-RNG'er med forskellige kilder til entropi ved at bruge forskellige metoder til at rense dem for uundgåelig forudsigelighed. Men i øjeblikket svarer hastigheden til at indsamle tilfældige tal af alle eksisterende mikrochips (flere tusinde bits i sekundet) ikke hastigheden af ​​moderne processorer.

    I personlige computere bruger software-RNG-forfattere meget hurtigere kilder til entropi, såsom lydkortstøj eller en processor-urtæller. Før evnen til at læse urtællerværdierne var entropiindsamling det mest sårbare punkt i RNG. Dette problem er stadig ikke helt løst i mange enheder (f.eks. smart cards), som derfor fortsat er sårbare. Mange RNG'er bruger stadig traditionelle (forældede) entropiopsamlingsmetoder såsom måling af brugerrespons (musebevægelser osv.), som i for eksempel, eller interaktioner mellem tråde, som for eksempel i Java sikker tilfældig.

    Eksempler på RNG- og entropikilder

    Et par eksempler på RNG'er med deres entropikilder og generatorer:

    Entropi kilde PRNG Fordele Fejl
    /dev/random på Linux Processorens urtæller, dog kun indsamlet under hardwareafbrydelser LFSR , med output hashed viaDet "varmes op" i meget lang tid, kan "sætte sig fast" i lang tid eller fungerer som en PRNG ( /dev/urandom)
    Røllike af Bruce Schneier Traditionelle (forældede) metoder AES-256 ogFleksibelt krypto-resistent design Det "varmes op" i lang tid, meget lille intern tilstand, afhænger for meget af den kryptografiske styrke af de valgte algoritmer, langsom, kun anvendelig til nøglegenerering
    Generator Leonid Yuriev Lydkortstøj ? Sandsynligvis en god og hurtig kilde til entropi Ingen uafhængig, kendt for at være sikker PRNG, tilgængelig udelukkende på Windows
    Microsoft Indbygget i Windows, sætter sig ikke fast Lille indre tilstand, let at forudsige
    Kommunikation mellem tråde I Java er der endnu ikke noget andet valg, en stor intern tilstand Langsom entropiindsamling
    Kaos af Ruptor Processor urtæller, indsamlet løbende Hashing en 4096-bit intern tilstand baseret på en ikke-lineær version af Marsaglia-generatoren Mens den hurtigste af alle, store indre tilstand, ikke "sætter sig fast"
    RRAND af Ruptor Processor cyklus tæller Kryptering af intern tilstand med en stream-chifferMeget hurtig, intern tilstand af vilkårlig størrelse efter valg, "sætter sig ikke fast"

    PRNG i kryptografi

    En variation af PRNG er GPSB (PRBG) - generatorer af pseudo-tilfældige bits, såvel som forskellige stream-cifre. PRNG'er består ligesom strømchiffer af en intern tilstand (normalt fra 16 bit til flere megabyte i størrelse), en funktion til at initialisere den interne tilstand med en nøgle eller frø(Engelsk) frø), interne tilstandsopdateringsfunktioner og outputfunktioner. PRNG'er er underopdelt i simple aritmetiske, brudte kryptografiske og kryptografiske stærke. Deres generelle formål er at generere talsekvenser, der ikke kan skelnes fra tilfældige ved hjælp af beregningsmetoder.

    Selvom mange stærke PRNG'er eller stream-cifre tilbyder meget mere "tilfældige" tal, er sådanne generatorer meget langsommere end konventionelle aritmetiske og er muligvis ikke egnede til nogen form for forskning, der kræver, at processoren er fri til mere nyttige beregninger.

    Til militære formål og i felten bruges kun hemmelige synkrone krypto-resistente PRNG'er (stream ciphers), blok ciphers bruges ikke. Eksempler på velkendte kryptografisk stærke PRNG'er er ISAAC, SEAL, Snow, den meget langsomme teoretiske algoritme af Bloom, Bloom og Shub, samt tællere med kryptografiske hashfunktioner eller kryptografisk sikre blokcifre i stedet for en outputfunktion.

    Hardware PRNG

    Bortset fra de forældede, velkendte LFSR-generatorer, der blev meget brugt som hardware-PRNG'er i det 20. århundrede, er der desværre meget lidt kendt om moderne hardware-PRNG'er (stream ciphers), da de fleste af dem blev udviklet til militære formål og holdes hemmelige . Næsten alle eksisterende kommercielle hardware-PRNG'er er patenterede og holdes også hemmelige. Hardware PRNG'er er begrænset af strenge krav til hukommelsesforbrug (oftest er brug af hukommelse forbudt), hastighed (1-2 cyklusser) og areal (flere hundrede FPGA'er - eller

    På grund af manglen på gode hardware-PRNG'er er producenterne tvunget til at bruge de meget langsommere, men almindeligt kendte blokcifre (Computer Review No. 29 (2003)

  • Yuri Lifshits. Kursus "Kryptografiens moderne opgaver" Forelæsning 9: Pseudorandomgeneratorer
  • L. Barash. AKS-algoritme til kontrol af tal for primalitet og søgning efter konstanter for pseudo-tilfældige talgeneratorer
  • Zhelnikov Vladimir. Pseudo-tilfældige talsekvenser // Kryptografi fra papyrus til computer M.: ABF, 1996.
  • random.org (engelsk) - onlinetjeneste til generering af tilfældige tal
  • Kryptografiske tilfældige tal
  • Teori og praksis for generering af tilfældige tal
  • Zvi Gutterman, Benny Pinkas, Tzachy Reinman. Analyse af Linux Random Number Generator
  • En statistisk testsuite for tilfældige og pseudorandom-talgeneratorer til kryptografiske applikationer NIST SP 800-22
  • Hentning og konvertering af tilfældige tal.

    Der er to hovedmåder at få tilfældige tal på:

    1) Tilfældige tal genereres af en speciel elektronisk vedhæftning (tilfældig talsensor) installeret på en computer. Implementeringen af ​​denne metode kræver næsten ingen yderligere operationer, bortset fra at få adgang til generatoren af ​​tilfældige tal.

    2) Algoritmisk metode - baseret på dannelsen af ​​tilfældige tal i selve maskinen gennem et særligt program. Ulempen ved denne metode er det ekstra forbrug af computertid, da maskinen i dette tilfælde selv udfører operationerne af den elektroniske set-top-boks.

    Programmet til at generere tilfældige tal ved en given distributionslov kan være besværligt. Derfor opnås tilfældige tal med en given fordelingslov normalt ikke direkte, men ved at konvertere tilfældige tal, der har en eller anden standardfordeling. Ofte er en sådan standardfordeling den ensartede fordeling (let at opnå og let at konvertere til andre love).

    At opnå tilfældige tal med en ensartet lov er mest fordelagtigt at få ved hjælp af en elektronisk set-top-boks, som frigør computeren for ekstra omkostninger til computertid. At opnå en rent ensartet fordeling på en computer er umulig på grund af det begrænsede bitgitter. Derfor, i stedet for et kontinuerligt sæt tal på intervallet (0, 1), et diskret sæt af 2n tal, hvor n- bitdybde af maskinordet.

    Loven om fordeling af en sådan befolkning kaldes kvasi-uniform . Ved n³20 bliver forskellene mellem de ensartede og næsten ensartede love ubetydelige.

    For at opnå kvasi-ensartede tilfældige tal bruges 2 metoder:

    1) generering af tilfældige tal ved hjælp af en elektronisk set-top-boks ved at simulere nogle tilfældige processer;

    2) opnåelse af pseudo-tilfældige tal ved hjælp af specielle algoritmer.

    For at få n-vurderet binært tilfældigt tal ifølge den første metode, modelleres en sekvens af uafhængige stokastiske variable z i, idet den tager værdien 0 eller 1. Den resulterende sekvens af 0 og 1, hvis den betragtes som et brøktal, er en tilfældig værdi af den kvasi-ensartede fordeling på intervallet (0, 1). Hardwaremetoderne til at opnå disse tal adskiller sig kun i den måde, implementeringen opnås på. z i.

    En af metoderne er baseret på at tælle antallet af radioaktive partikler over en vis periode. Dt, hvis antallet af partikler for Dt selv da z i=1 , og hvis mærkeligt, så z i=0 .

    En anden metode bruger støjeffekten fra et vakuumrør. Fastsættelse af værdien af ​​støjspændingen på bestemte tidspunkter t i, får vi værdierne af uafhængige stokastiske variable U(t i), dvs. spænding (Volt).



    Værdi z i fastsat ved lov:

    Hvor -en er en vis værdi af tærskelspændingen.

    Værdi -en normalt valgt fra betingelsen:

    Ulempen ved hardwaremetoden er, at den ikke tillader brug af dobbeltkørselsmetoden til at kontrollere driften af ​​algoritmen til at løse ethvert problem, da de samme tilfældige tal ikke kan opnås under en gentagen kørsel.

    pseudo-tilfældig opkaldsnumre genereret på en computer ved hjælp af specielle programmer på en tilbagevendende måde: hvert tilfældigt tal opnås fra det foregående ved hjælp af specielle transformationer.

    Den enkleste af disse transformationer er følgende. Lad der være nogle n– bit binært tal fra intervallet nn (0, 1). Vi kvadrer det, og vi får det allerede 2n bit nummer. Vælg gennemsnittet n udledninger. Opnået på denne måde n– bitnummer og vil være den nye værdi af det tilfældige tal. Vi firkanter det igen, og så videre. En sådan sekvens er pseudo-tilfældig, fordi fra et teoretisk synspunkt er det ikke tilfældigt.

    Ulempen ved tilbagevendende algoritmer er, at sekvenser af tilfældige tal kan degenerere (for eksempel vil vi kun få en nul-sekvens eller en sekvens af enere, eller der kan forekomme periodicitet).

    Indlæser...
    Top