A születésnapi támadás egy olyan név, amelyet a kriptográfiai elemzésben használnak a rejtjelek feltörésére vagy a hash függvény ütközések megtalálására a születésnapi paradoxon alapján . A módszer lényege, hogy jelentősen csökkenti a hash függvénynek átadott argumentumok számát, ami az ütközés észleléséhez szükséges, hiszen ha a hash függvény n bites értéket generál, akkor azon véletlenszerű hash függvény argumentumok száma, amelyekre a A rendszer legalább egy hash ütközést észlel nagy valószínűségű függvénnyel (vagyis legalább egy pár egyenlő hash kódot kapunk különböző argumentumokon) nem 2 n , hanem csak körülbelül 2 n /2 .
Vegyünk egy példát: Egy 23 fős csoportban két embernek ugyanaz lesz a születésnapja? Egy év – szökőévek nélkül – 365 nap, tehát 365 különböző születésnap van, ami jóval nagyobb szám, mint a 23.
Ha egy adott napot választanánk, akkor körülbelül 6,1% lenne annak a valószínűsége, hogy legalább egy ember megszületett azon a napon . Az [1] képlet szerint azonban körülbelül 50% annak a valószínűsége, hogy legalább egy személynek ugyanolyan születésnapja van, mint bármely más személynek . n = 70 esetén az ilyen egybeesés valószínűsége 99,9%.
Egy adott hash függvény esetén a támadás célja egy második típusú ütközés megtalálása . Ehhez a véletlenszerűen kiválasztott bemeneti adatblokkok értékeinek kiszámítása mindaddig történik, amíg nem talál két olyan blokkot, amelyeknek ugyanaz a hash.
Legyen egy hash függvény . A születésnapi támadás akkor sikeres, ha van olyan pár
Így, ha egy függvény a különböző kimenetek bármelyikét azonos valószínűséggel adja meg, és elég nagy, akkor a matematikai elvárás a különböző argumentumpárok számára , amelyre . A kivonatolási műveletek számának becslését egy ideális kriptográfiai hash függvény ütközésének megtalálásához bites kimeneti mérettel gyakran a következővel írják: és nem [2] .
Legyen annak a valószínűsége, hogy egy embercsoportban ( ) legalább két embernek ugyanaz a születésnapja.
=A függvény Taylor sorozatába való kiterjesztésének első két tagjából ,
Keressünk egy ilyen számot
Következésképpen,
[1] .Például, ha 64 bites hash-t használunk, körülbelül 1,8 × 10 19 különböző kimenet létezik. Ha mindegyik egyformán valószínű (legjobb esetben), akkor "csak" körülbelül 5 milliárd próbálkozásra ( 5,38 × 109 ) lenne szükség ahhoz, hogy nyers erővel ütközést hozzunk létre . Egyéb példák:
bitek | Lehetséges kimenetek (N) | Kívánt véletlenszerű ütközési valószínűség (P) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
10 −18 | 10-15 _ | 10 −12 | 10 −9 | 10 −6 | 0,1% | egy % | 25% | ötven % | 75% | ||
16 | 2 16 (~ 6,5 x 10 3 ) | <2 | <2 | <2 | <2 | <2 | tizenegy | 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 |
Könnyen belátható, hogy ha egy függvény kimenetei egyenlőtlenül oszlanak el, akkor még gyorsabban találhatunk ütközéseket. A hash függvény „egyensúlyának” fogalma számszerűsíti a függvény „születésnapi” támadással szembeni ellenállását (nem egységes kulcselosztást használva). A hash-függvény egyensúlyának meghatározása azonban az összes lehetséges bemenet kiszámítását igényli, ezért ez nem kivitelezhető olyan népszerű hash-függvényeknél, mint az MD és az SHA család.
Egy elektronikus digitális aláírás például sebezhető lehet ezzel a támadással szemben . Tegyük fel, hogy 2 ember – A és B – szeretne szerződést kötni, A viszont B-nek a szerződés hamis változatát akarja csúsztatni. Ezután A valódi és hamis szerződést köt. Továbbá, ha olyan érvényes változtatásokat hajt végre, amelyek nem változtatják meg a szöveg jelentését (vesszők, kötőjelek, behúzások elrendezése), A eléri, hogy mindkét szerződésben ugyanaz a hash legyen. Ezek után A küld B-nek egy valódi szerződést, B aláírja, és az aláírásából is kiderül, hogy ő is hamis szerződést írt alá, mivel mindkét szerződésben ugyanaz a hash. Az ilyen típusú sebezhetőség elkerülése érdekében elegendő a hash hosszát megnövelni, így számításilag nehézkessé válik 2 azonos hash-sel rendelkező szerződés megtalálása. Különösen a kétszeres hash-hosszra van szükség ahhoz, hogy a számítási bonyolultságot a nyers erejű kereséshez hasonlítható legyen. Más szóval, ha a támadó nyers erővel ki tudja számítani a hash értékeket , akkor minden, egy kicsit hosszúnál rövidebb hash-hez kezd hash ütközéseket találni . (lásd : Születésnapi támadás )
A támadás elkerülése érdekében az aláírási sémához használt hash függvény kimeneti hosszát elég nagyra lehet választani ahhoz, hogy a "születésnapi" támadás számításilag kivitelezhetetlen legyen, azaz körülbelül kétszer annyi bit, mint amennyi a hagyományos "brute force" támadás megakadályozásához szükséges. (teljes felsorolás) .
A DNS egy elosztott számítógépes rendszer információszerzésre a következővel kapcsolatban . A leggyakrabban használt IP-cím beszerzése a gazdagép nevéből (számítógép vagy eszköz).
A DNS-ben a "rekurzió" kifejezés a DNS-kiszolgáló viselkedésére utal, amelyben a szerver a kliens nevében teljes körű keresést végez a szükséges információk után a teljes DNS-rendszerben, szükség esetén más DNS-kiszolgálókra hivatkozva. „Rekurzív” lekérdezés esetén a DNS-kiszolgáló lekérdezi a szervereket (a névben szereplő zónaszint csökkenő sorrendjében), amíg választ nem talál, vagy nem találja, hogy a tartomány nem létezik (a gyakorlatban a keresés a A kívánthoz legközelebbi DNS-kiszolgálók, ha az információk gyorsítótárban vannak és naprakészek, előfordulhat, hogy a szerver nem kérdez le más DNS-kiszolgálókat.
2002-ben Wagner of Sacramento közzétett egy ajánlást, amely egy problémát mutatott be a DNS-protokoll BIND általi megvalósításával kapcsolatban. Azt találta, hogy a BIND több egyidejű rekurzív kérést küld ugyanarra az IP-címre.
A támadó lekérdezést küld az áldozat DNS-kiszolgálójának. Olyan tartománynevet választ, amelyet az A DNS-kiszolgáló nem talál a gyorsítótárában, és kénytelen továbbítani a következő B DNS-kiszolgálónak. Minden engedélycsere A és B között véletlenszerű TID-n keresztül történik. Mielőtt az A DNS-kiszolgáló válaszcsomagokat fogadhatna a B DNS-kiszolgálótól, a támadó N hamis válaszcsomagot küld az A DNS-kiszolgálónak. Ha ezen hamis csomagok egyikének TID-je megegyezik az A DNS-kiszolgáló TID-jével, akkor a szerver elfogadja a hamis csomagokat. A mint érvényes csomagok. A B DNS-kiszolgáló valódi válaszát az A DNS-kiszolgáló nem dolgozza fel. Így a támadó "megmérgezheti" az A DNS-kiszolgáló gyorsítótárát, hogy a feltört tartományt a támadó által megadott IP-címre képezze le.
Normál támadás esetén a támadó N hamis választ küld egy kérésre, a siker valószínűsége (TID - 16 bites szám).
A születésnapi támadás megkönnyíti a BIND protokoll feltörését. A támadó nagyszámú N lekérdezést küld az áldozat DNS-kiszolgálójának, mindegyik ugyanazzal a tartománynévvel. N kérésre N hamis választ küldünk . Ezért a támadás sikerességének valószínűsége [4]
A gyors mentális értékeléshez használható jó hüvelykujjszabály az arány
ami úgy is felírható
vagy
Ez a közelítés jól működik 0,5-nél kisebb vagy azzal egyenlő valószínűségek esetén.
Ez a közelítési séma különösen könnyen használható indikátorokkal végzett munka során. Például becsüljük meg, hány dokumentumot tud feldolgozni egy 32 bites hash függvény ( ) úgy, hogy az ütközés valószínűsége ne legyen nagyobb, mint egy a millióhoz ( ). Az ilyen állapotokhoz tartozó dokumentumok lehetséges legnagyobb számának becslése az
ami közel áll a helyes válaszhoz 93.
Tegyük fel, hogy egy 64 bites blokkrejtjel megtámadásához a támadónak két egyszerű szöveg/titkosszöveg párt kell szereznie, amelyek csak a legkisebb jelentőségű bitben különböznek egymástól. A probléma születésnapi paradoxon szerinti értelmezése arra a következtetésre jut, hogy a csak ismert nyílt szövegek tere nagy valószínűséggel tartalmazza majd a szükséges párt [5] .
Egy másik példaként vegyük egy 64 bites Feistel-rejtjel ciklusát . Tegyük fel, hogy a rejtjel egy F véletlenszerű függvényt használ (32-32 bit). Egy támadónak tudnia kell, hogy hány egyszerű szövegre van szüksége ahhoz, hogy az F függvény ütközését megkapja . A születésnapi paradoxon szerint ehhez a nyitott szövegek körül kell válogatni [5] .
A születésnapi paradoxon egyik következménye, hogy egy n bites blokkrejtjel esetében egy rejtjelezett szöveg blokk ismételt előfordulása körülbelül 0,63 valószínűséggel várható, ha csak véletlenszerű, ugyanazon a kulccsal titkosított egyszerű szövegeket (a kulcs méretétől függetlenül). Az ECB módban, ha két rejtjelezett szöveg blokk egyezik, a megfelelő egyszerű szövegeknek is meg kell egyeznie. Ez azt jelenti, hogy egy ismert titkosított szöveges támadásnál a nyílt szövegekre vonatkozó információk feltárhatók a titkosított szöveg blokkokból.