Et fødselsdagsangreb er et navn, der bruges i kryptoanalyse for en metode til at bryde cifre eller finde hashfunktionskollisioner baseret på fødselsdagsparadokset . Essensen af metoden er væsentligt at reducere antallet af argumenter, der sendes til hashfunktionen, hvilket er nødvendigt for at detektere en kollision, da hvis hashfunktionen genererer en n -bit værdi, så er antallet af tilfældige hashfunktionsargumenter for hvilke ved mindst én hash-kollision vil blive detekteret med en høj sandsynlighedsfunktion (det vil sige, at der er mindst ét par lige store hash-koder opnået på forskellige argumenter) er ikke 2 n , men kun omkring 2 n /2 .
Overvej et eksempel: Vil to personer i en gruppe på 23 have samme fødselsdag? Et år, eksklusive skudår, er 365 dage, så der er 365 forskellige fødselsdage, et meget større antal end 23.
Hvis vi valgte en bestemt dag, så ville sandsynligheden for, at mindst én person blev født på den pågældende dag, være omkring 6,1 %. Sandsynligheden for, at mindst én person har samme fødselsdag som enhver anden person, er dog omkring 50 % ifølge formlen [1] . For n = 70 er sandsynligheden for et sådant sammenfald 99,9%.
For en given hashfunktion er målet med angrebet at finde en kollision af den anden slags . For at gøre dette beregnes værdier for tilfældigt udvalgte blokke af inputdata, indtil der findes to blokke, der har samme hash.
Lad være en hash-funktion . Fødselsdagsangrebet er vellykket, hvis der er et par sådan, at
Således, hvis en funktion giver nogen af de forskellige output med lige stor sandsynlighed og er stor nok, så er den matematiske forventning om antallet af par af forskellige argumenter , som er . Estimering af antallet af hash-operationer for at finde en kollision af en ideel kryptografisk hashfunktion med en outputstørrelse på bit skrives ofte som og ikke [2] .
Lad være sandsynligheden for, at mindst to personer i en gruppe mennesker ( ) har samme fødselsdag.
=Fra de to første led af udvidelsen til Taylor - serien af funktionen for ,
Lad os finde sådan et tal
Følgelig,
[1] .For eksempel, hvis der bruges en 64-bit hash, er der ca. 1,8 × 10 19 forskellige udgange. Hvis de alle er lige sandsynlige (bedste tilfælde), så ville det "kun" tage omkring 5 milliarder forsøg ( 5,38×109 ) at skabe en kollision ved brug af brute force . Andre eksempler:
stykker | Mulige udgange (N) | Ønsket tilfældig kollisionssandsynlighed (P) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
10-18 _ | 10-15 _ | 10-12 _ | 10-9 _ | 10-6 _ | 0,1 % | en % | 25 % | halvtreds % | 75 % | ||
16 | 2 16 (~6,5 x 10 3 ) | <2 | <2 | <2 | <2 | <2 | elleve | 36 | 190 | 300 | 430 |
32 | 2 32 (~4,3 × 10 9 ) | <2 | <2 | <2 | 3 | 93 | 2900 | 9300 | 50.000 | 77.000 | 110.000 |
64 | 2 64 (~1,8 × 10 19 ) | 6 | 190 | 6100 | 190.000 | 6.100.000 | 1,9× 108 | 6,1 × 108 | 3,3× 109 | 5,1 x 109 | 7,2× 109 |
128 | 2128 (~ 3,4 × 1038 ) | 2,6 × 10 10 | 8,2 × 10 11 | 2,6 × 10 13 | 8,2 × 10 14 | 2,6 × 10 16 | 8,3 × 10 17 | 2,6 × 10 18 | 1,4 × 10 19 | 2,2 × 10 19 | 3,1 × 10 19 |
256 | 2256 ( ~ 1,2 × 10 77 ) | 4,8 × 10 29 | 1,5 × 10 31 | 4,8 × 10 32 | 1,5×10 34 | 4,8 × 10 35 | 1,5 × 10 37 | 4,8 × 10 37 | 2,6 × 10 38 | 4,0 × 10 38 | 5,7 × 10 38 |
384 | 2384 (~3,9 × 10115 ) | 8,9 × 10 48 | 2,8 × 10 50 | 8,9 × 1051 | 2,8× 1053 | 8,9 × 1054 | 2,8× 1056 | 8,9 × 1056 | 4,8× 1057 | 7,4× 1057 | 1,0 × 10 58 |
512 | 2512 (~1,3 × 10154 ) | 1,6×10 68 | 5,2 × 10 69 | 1,6 × 10 71 | 5,2× 1072 | 1,6× 1074 | 5,2 × 1075 | 1,6 × 10 76 | 8,8 × 1076 | 1,4 × 10 77 | 1,9 × 10 77 |
Det er let at se, at hvis udgangene af en funktion er ujævnt fordelt, så kan kollisioner findes endnu hurtigere. Begrebet "balance" af en hash-funktion kvantificerer funktionens modstand mod et "fødselsdag"-angreb (ved hjælp af uensartet nøglefordeling). Men at bestemme balancen i en hashfunktion kræver beregning af alle mulige input og er derfor ikke mulig for populære hashfunktioner såsom MD- og SHA-familierne.
En elektronisk digital signatur kan for eksempel være sårbar over for dette angreb . Lad os sige, at 2 personer - A og B - ønsker at underskrive en kontrakt, men A ønsker at give B en falsk version af kontrakten. Så udarbejder A en ægte kontrakt og en falsk kontrakt. Yderligere, ved at foretage gyldige ændringer, der ikke ændrer betydningen af teksten (arrangere kommaer, bindestreger, indrykninger), opnår A, at begge kontrakter har samme hash. Herefter sender A B en ægte kontrakt, B underskriver den, og hans underskrift viser også, at han også underskrev en falsk kontrakt, da begge kontrakter har samme hash. For at undgå denne form for sårbarhed er det nok at øge hash-længden, så det bliver beregningsmæssigt svært at finde 2 kontrakter med de samme hashes. Især kræves dobbelt så lang hash-længde for at give beregningsmæssig kompleksitet, der kan sammenlignes med brute-force-søgning. Med andre ord, hvis en angriber kan beregne hash-værdier ved hjælp af brute force , så vil han begynde at finde hash-kollisioner for alle hash-værdier, der er mindre end lidt lange. (se en: Fødselsdagsangreb )
For at undgå dette angreb kan outputlængden af hashfunktionen, der bruges til signaturskemaet, vælges stor nok til at gøre "fødselsdage" angrebet beregningsmæssigt umuligt, dvs. omkring dobbelt så mange bits, som er nødvendige for at forhindre et konventionelt "brute force" angreb (fuld opregning) .
DNS er et distribueret computersystem til at indhente information om . Oftest brugt til at få en IP-adresse fra værtsnavnet (computer eller enhed).
Udtrykket "rekursion" i DNS refererer til DNS-serverens adfærd, hvor serveren på vegne af klienten udfører en komplet søgning efter den nødvendige information i hele DNS-systemet, om nødvendigt med henvisning til andre DNS-servere. I tilfælde af en "rekursiv" forespørgsel poller DNS-serveren serverne (i faldende rækkefølge af zoneniveauet i navnet), indtil den finder et svar eller finder ud af, at domænet ikke eksisterer (i praksis starter søgningen fra DNS-servere tættest på den ønskede, hvis oplysninger om er cachelagrede og opdaterede, kan serveren ikke forespørge andre DNS-servere).
I 2002 udgav Wagner fra Sacramento en anbefaling, der viser et problem med BINDs implementering af DNS-protokollen. Han fandt ud af, at BIND sendte flere samtidige rekursive anmodninger om den samme IP-adresse.
Angriberen sender en forespørgsel til offerets DNS-server. Den vælger et domænenavn, som DNS-server A ikke kan finde i sin cache og er tvunget til at videresende til den næste DNS-server B. Hver tilladelsesudveksling mellem A og B autentificeres gennem et tilfældigt TID. Før DNS Server A kan modtage svarpakker fra DNS Server B, sender angriberen N falske svarpakker til DNS Server A. Hvis en af disse falske pakker har samme TID som DNS Server A's TID, vil de falske pakker blive accepteret af serveren A som gyldige pakker. Det rigtige svar fra DNS Server B vil ikke blive behandlet af DNS Server A. En angriber kan således "forgifte" DNS Server A's cache for at kortlægge det kompromitterede domæne til den IP-adresse, som angriberen har angivet.
I et normalt angreb sender angriberen N falske svar for én anmodning, sandsynligheden for succes er (TID - 16-bit nummer).
Fødselsdagsangrebet gør det nemmere at bryde BIND-protokollen. Angriberen sender et stort antal N forespørgsler til offerets DNS-server, alle med det samme domænenavn. Vi sender N falske svar for N anmodninger. Derfor er sandsynligheden for, at angrebet vil lykkes [4]
En god tommelfingerregel , der kan bruges til en hurtig mental vurdering , er parforholdet
som også kan skrives som
eller
Denne tilnærmelse fungerer godt for sandsynligheder mindre end eller lig med 0,5.
Dette tilnærmelsesskema er særligt nemt at bruge, når du arbejder med indikatorer. Lad os for eksempel estimere, hvor mange dokumenter der kan behandles af en 32-bit hash-funktion ( ), så sandsynligheden for en kollision ikke er mere end én ud af en million ( ). Et skøn over det størst mulige antal dokumenter for sådanne forhold er
som er tæt på det rigtige svar 93.
Antag, at for at angribe en 64-bit blokchiffer, skal en angriber opnå to klartekst/ciffertekst-par, der kun adskiller sig i den mindst signifikante bit. Fortolkningen af dette problem i forhold til fødselsdagsparadokset fører til den konklusion, at rummet af kun kendte klartekster vil indeholde det nødvendige par med stor sandsynlighed [5] .
Som et andet eksempel kan du overveje cyklussen af en 64-bit Feistel-chiffer . Antag, at chifferen bruger en tilfældig funktion F (32 til 32 bit). En angriber vil måske gerne vide, hvor mange klartekster han skal have for at få en kollision af funktion F . Ifølge fødselsdagsparadokset skal man hertil sortere i åbne tekster [5] .
En konsekvens af fødselsdagsparadokset er, at for en n -bit blokchiffer kan gentagne forekomster af en chiffertekstblok forventes med en sandsynlighed på omkring 0,63 givet kun tilfældige klartekster krypteret på den samme nøgle (uanset nøglestørrelse). For ECB-tilstand, hvis to chiffertekstblokke matcher, skal de tilsvarende klartekster også matche. Det betyder, at i et kendt chiffertekstangreb kan information om klarteksterne afsløres fra chiffertekstblokkene.