Érdekelt az információbiztonság. Nemrég ismerték meg a hashelés gondolatával. Amit jelenleg értek a kivonatoláshoz, az az, hogy a felhasználó által beírt jelszót veszi igénybe. Ezután véletlenszerűen generál egy “hash” -ot egy csomó változó felhasználásával, és mindent összekever. Majd amikor beírja ezt a jelszót a bejelentkezéshez, az megegyezik a jelszóval a kivonattal. Csak néhány dolog van, amit nem értek.

  1. Miért olyan nehéz feltörni ezeket a hasheket? Feltételezem, ha megtalálta a módszert, amire használják titkosítani (elengedheti egy rendkívül egyszerűvel, mint például Caesar titkosításával, ha megtudja, hányat kell átállítania, megteheti egész könyvért). Még akkor is, ha valami olyasmit használ, mint az idő, és összetéveszti, van néhány nagyon nagy lehetőség, amellyel korlátozhatja az opciókat (Használjuk a Caesar-rejtjelet, amelyet az év mod használatával használnak. X Ön már tudja, hogy reálisan két év lehetséges, akkor csak meg kell kitalálni a rejtvény második darabját).

  2. Ha véletlenszerűen generálódnak (még akkor is, ha két jelszó megegyezik, másképp jönnek ki), hogyan tudják megmondani, ha ez helyes?

  3. Hogyan törnek fel. Honnan tudja a hash cat, amikor sikeresen visszafejtette a jelszót?

Kapcsolódó videó (de nem pontosan válaszol a kérdésemre): https://www.youtube.com/watch?v=b4b8ktEV4Bg

Megjegyzések

  • Apró válaszként a Q (3 ) pontosabban az olyan programok, mint az oclHashcat, az esetek többségében több millió hash-t próbálnak ki egy előre meghatározott listában. Valójában sohasem ‘ soha nem dekódolják a ‘ jelszót (ne feledje csak a titkosítást tudod visszafejteni – hash! = titkosítás), de tudják, ha megpróbálnak egy jelszót, és a kapott hash megegyezik az egyikükkel, akkor az az eredeti jelszó lehetett. Vagyis nem ‘ t visszafejtik, másodpercenként milliószor tesznek próbát és hibát, hogy lássanak-e meccset. Ezért ‘ is jó, ha a hash lassú .
  • @Peleus Ez sokban hasonlít ahhoz, amire rábukkantam. Az egyetlen dolog, hogy arra gondoltam, hogy amikor elveszíti a jelszavát véletlenszerűen összekeverik. Hogyan veszik el a jelszót, és ugyanazokkal a véletlenszerű mozdulatokkal keverik újra. És ha ugyanaz a bemenet más kimenetet adhat, ami engem is megzavar.
  • Nem vagyok biztos abban, hogy ‘ re mondván: ” Azt hittem, véletlenszerűen összekeverték ” mint benned ‘ ve most másképp tanult, de csak azért, hogy tudd ‘, biztosan nem ez a helyzet! A hash nem véletlenszerű, ‘ megismételhető – de ‘ lehetetlen olyan visszafelé dolgozni, hogy ‘ s mind. A ‘ cat ‘ szó SHA256-os kivonata az idő 100% -ában mindig ugyanaz lesz. ‘ ezért használhatjuk őket megbízhatóan jelszavakhoz. Ha a hash minden alkalommal új értéket produkál, és csak egy korábbi hash értékkel tudnánk összehasonlítani, akkor ‘ soha nem tudhatjuk, hogy a jelszó helyes volt-e vagy sem! : D
  • értettem. Ez a videó pontosan elmagyarázza, mit akartam tudni. youtube.com/watch?v=vgTtHV04xRI
  • Egy jobb videó, amely elmagyarázza, miért használják a kivonatot. A fentiektől eltérően, amely megmagyarázza az RSA titkosítást, és miért ‘ miért nehezebb visszamenni egy hash-on. youtube.com/watch?v=b4b8ktEV4Bg

Válasz

Gyors, 1081. tényező.

Vagy ha úgy tetszik, válaszoljon erre: mi 23-szor 47-szer?

Melyik könnyebb? Könnyebb végezzen szorzást (csak mechanikusan kövesse a szabályokat), mint hogy csak a termékhez adott operandusokat állítsa helyre. Szorzás. (Ez egyébként néhány kriptográfiai algoritmus alapja, például a RSA .)

A kriptográfiai hash függvények különböző matematikai alapokkal rendelkeznek, de ugyanaz a tulajdonsága: “újra” Könnyen kiszámítható a továbblépés (kiszámítja a H (x) x-et), de gyakorlatilag lehetetlen a visszafelé történő kiszámítás (adott y, számítsa x-et úgy, hogy H (x) = y). Valójában a jó kriptográfiai hash egyik jele A funkció az, hogy nincs jobb módszer az x megtalálásához, mint az összes kipróbálása és a H (x) kiszámítása, amíg nem talál egyezést.

A hash függvények másik fontos tulajdonsága, hogy két különböző bemenetnek különböző hashjai vannak. ha H (x 1 ) = H (x 2 ), akkor arra a következtetésre juthatunk, hogy x 1 = x 2 Matematikailag nézve ez lehetetlen – ha a bemenetek hosszabbak, mint a hash hossza, ütközéseknek kell lenniük.Jó kriptográfiai kivonatolási funkcióval azonban nincs ismert módszer arra, hogy ütközést találjunk a világ összes számítási erőforrásával.

Ha többet szeretne megtudni a kriptográfiai hash funkciók, olvassa el ezt Thomas Pornin válaszát . Folytassa, várni fogok.

Ne feledje, hogy a hash függvény nem titkosítási funkció. A titkosítás azt jelenti, hogy visszafejteni lehet (ha ismeri a kulcsot). Kivonatolással nincs mágikus szám amellyel visszaléphet.

A fő kriptográfiai kivonatolási funkciók a következők: SHA-1 és a SHA-2 család (amely többféle kimeneti méretben kapható, főleg SHA-256 és SHA-512). Az MD5 egy régebbi, most elavult, mert ismert ütközései vannak. Végül nincs matematikai bizonyíték arra, hogy valóban jó kriptográfiai hash funkciók lennének, csak egy széles körben elterjedt meggyőződés, mert sok professzionális kriptográfus életében éveket próbált és nem sikerült megtörni.

Ok, ez ” s a történet egyik része. Most egy jelszó hash nem közvetlenül kriptográfiai hash függvény. Jelszó kivonatoló funkció (PHF) két bemenet szükséges: a jelszó és a só. A véletlenszerűen jön létre, amikor a felhasználó felveszi a jelszavát, és ez a PHF (jelszó, só) kivonatolt jelszóval együtt tárolva. (Fontos, hogy két különböző fióknak mindig különböző sói legyenek, és véletlenszerűen kellően nagy só előállítása jó módszer ennek a tulajdonságnak elsöprő valószínűséggel való megadására.) Amikor a felhasználó bejelentkezik ismét az ellenőrző rendszer kiolvassa a sót a jelszó adatbázisból, kiszámítja a PHF-t (jelszó, só) és ellenőrzi, hogy a az eredmény az, amit az adatbázisban tárolnak.

A só lényege, hogy ha valaki feltörni akar egy jelszót, akkor ismernie kell a hash, mielőtt elkezdenék , és külön-külön kell megtámadniuk az egyes fiókokat. A só lehetetlenné teszi a sok repedési munka előzetes elvégzését, pl. szivárványos tábla létrehozásával.

Ez a (2) és (3) válaszra ad választ – a törvényes ellenőr és a támadó ugyanabban megtudja hogy a felhasználó által megadott vagy a támadó kitalálta-e a jelszót. A történet utolsó pontja: A jó jelszó kivonatoló funkciónak van további tulajdonsága, lassúnak kell lennie. A törvényes szervernek bejelentkezési kísérletenként csak egyszer kell kiszámítania, míg a támadónak találgatásonként egyszer kell kiszámítania, így a lassúság jobban bántja a támadót (ami szükséges, mert a támadónak általában több, speciális hardvere van).

Ha szükség van jelszavak kivonatolására, ne találja ki saját módszerét . Használjon egyet a szokásos módszerek közül : scrypt , bcrypt vagy PBKDF2 .  

Megjegyzések

  • Átkozott I jöjjön el a biztonsági oldalra a többiek közül, és az egy dolog, ami nagyon egyértelmű, az, hogy srácok őrülten sokat dolgoznak a válaszadásban. Nem csak helyesen, de rendkívül alaposan is. Bárcsak két választ tudnék kiválasztani, de a tiétek sokkal inkább hasonlított Kerestem.
  • @Griffin – Bár mindkettőt fel lehet szavazni. Vagy valóban – ha ‘ több mint t jaj válaszok – szavazzon fel mindazokra, amelyekről úgy érzi, hogy hasznosak voltak, még akkor is, ha csak egyet tud elfogadni. Sok itt feltett kérdésre egynél több jó válasz adódik, és néha ‘ még azt is javasolta, hogy olvassa el a válaszok nagy részét, hogy jobban megértsék a témát. Igen, néha még a leszavazottak is. Szavazásával (akárhogy is), a jövőbeni olvasóknak is segítséget nyújt a válaszok érvényességének eldöntésében, különösen azoknak az olvasóknak, akik még mindig tanulnak egy bizonyos témát. 😉
  • én mindkettőt megszavaztam! Rendkívül hasznosak voltak.
  • +1: Minden válasz jó, de ez körülbelül olyan közel áll egy tökéletes válaszhoz, mint én ‘ valaha láttam a Stack Exchange-en. +10 lenne, ha tudnék.
  • @IlmariKaronen Ez ‘ s miért szeretek ide járni.

Válasz

A kriptográfiai hash függvények matematikai objektumok, amelyek “nagy keverésnek és keverésnek” nevezhetők néhány bit “. Bemenetsorozatként (esetleg nagyon hosszú) bitek sorozatát veszik, és rögzített méretű kimenetet kínálnak. Nagyjából annyi kusza, hogy bár nincs bennük semmi titok (ez csak egy determinisztikus kód), senki sem tudja kitalálni, hogyan lehet őket “invertálni” (találni egy megfelelő bemenetet egy adott kimenethez), csak az ún. “szerencse”: próbálja meg a véletlenszerű bemeneteket, amíg egyezést nem talál.

Az, hogy tudományosan hogyan történhet meg, hogy a kivonatoló funkciók egyáltalán létezhetnek, jó kérdés .

A hash nem titkosítás . A titkosításnak nincs titka, nincs kulcsa.

A hash függvényeknek sokféle célja van; az egyik a “jelszó tárolása”. A hash funkció jó dolog a jelszó tárolásához. Nem akarjuk közvetlenül tárolni a jelszavakat (különben a támadó esetenként bekukucskálva az adatbázisunkba túl sok információt adna neki; erről a blogbejegyzésről olvashat) ; jelszóellenőrző tokenek et akarunk tárolni: olyasmit, amely lehetővé teszi egy jelszó ellenőrzését (amelyet a felhasználó bemutat), de nem fedi fel magát a jelszót. Tehát az ötlet: tároljuk a jelszó kivonatát. Ha ellenőrizni kell egy jelszót, akkor csak kiszámoljuk a kivonatát, és megnézzük, hogy egyezik-e a tárolt értékkel. De a jelszót csak a kivonat értékéből kitalálni nehéz, mivel a hash függvény rugalmas az “inverzióval” szemben (lásd fent).

Mivel a jelszavak egy speciális típusú adatok (ezek az adatok, amelyekre az emberek emlékezhetnek), a megfelelő biztonság érdekében szükségünk van egy “megerősítettre”. hash függvény:

  • nagyon lassú hash függvényt szeretnénk.
  • Nem akarunk one hash függvényt, de sok különálló hash függvény, így minden jelszó kivonatolása a saját hash funkciójával történik; ez a párhuzamos támadások elrettentéséről szól. Ezt a folyamatot, amellyel egyetlen kivonatfüggvény sokféle variánssá alakítható, sózás nak nevezzük.

Lásd ezt a választ a jelszavak összekeverésének témájának alapos kezeléséhez.

Megjegyzések

  • Sajnálom, de a válaszod rendkívül alapos és jól összerakott volt a másik válasz inkább hasonlít arra, amit kerestem.

Válasz

A hashelés néhány funkciója bit karakterlánc (általában változó hosszúságú) egy másik (általában kisebb és fix hosszúságú) karakterláncra.

A hash-t az adatbázisokban használják az adatlekérdezéshez, és a memóriában lévő adatstruktúrákban hash-tábláknak. Ez lehetővé teszi számunkra, hogy tetszőleges adatokat, például egy karakterláncot vagy egy bonyolult, sok mezővel rendelkező objektumot bináris számra redukáljunk, amelyet aztán közvetlenül indexként használhatunk egy ritka tömbbe a társított adatok lekérésére (a hash kezelésének néhány részletével együtt) ütközések).

A fenti módon használt hash függvények a kriptográfiai hashing funkciók “unokatestvérei”. Különböző követelményeknek megfelelően lettek kialakítva. Gyorsan kell számolniuk, és jó elosztást kell elérniük.

A biztonságos számítástechnikában a kriptográfiai hasheket használják az adatok egyes reprezentatív, kis bitstringekké történő emésztésére. A kriptográfiai funkcióknak különböző követelményei vannak. Úgy vannak megtervezve, hogy nehezen megfordíthatók (“csapóajtó” vagy “egyirányú” funkciók legyenek). Nem csak ez, hanem egy fontos követelmény, hogy egy adott sima szöveg és hash érték esetén nehéz legyen megtalálni egy másik sima szöveget, amely ugyanazt a kivonatot hozza létre.

A hash nemcsak a jelszavakhoz használható, hanem ellenőrző összegként az adatok integritásának ellenőrzésére és a digitális aláírások megvalósításának részeként. Egy nagy dokumentum digitális aláírásához egyszerűen el kell hasítanunk a dokumentumot, hogy létrehozzunk egy “kivonatot” (a kivonatoló funkció kimenetére használt név, ha valami nagyon hosszú hash van). Aztán csak ezt az összefoglalót teszik át a nyilvános kulcsú titkosítási rendszeren, hogy aláírást hozzanak létre. Láthatja a gyengeséget ott: mi van akkor, ha egy támadónak sikerül egy azonos kivonatot tartalmazó dokumentumot előállítania? Ekkor úgy tűnik, hogy a valódi dokumentum fölött előállított eredeti aláírás valójában hamis dokumentum aláírása: az aláírás-átültető hamisítást ténylegesen elkövették.

A jelszó elosztása lehetővé teszi a rendszerek számára, hogy ne tárolják a jelszót, mégis lehetővé teszi számukra annak ellenőrzését, hogy a belépést megkísérlő felhasználó tudja-e ezt a jelszót. A hash lehetővé teszi, hogy a rendszerek ne tárolják az egyszerű szöveges jelszavakat (amelyeket nagyon gondosan kell védeni), hanem lehetővé teszi, hogy a jelszavak még akkor is biztonságosak legyenek, ha a nyilvános kulcsú titkosítás még a nyilvános kivonatok nyilvánosságra kerülése esetén is rendszerek képesek feltárni a nyilvános kulcsokat). Bár a gyakorlatban a hasheket mégis védik a nyilvános hozzáféréstől: például /etc/shadow fájlok Unix-szerű rendszereken, kiegészítve a világon olvasható /etc/passwd fájlokat .

A kivonatoló funkció nem véletlenszerű. Véletlenszerűsítést alkalmaznak azonban azoknak a támadóknak a megakadályozására, akik nagy jelszavakat és hash-okat tartalmaznak, amelyek lehetővé teszik számukra a kivonatkód keresését és a megfelelő jelszó megszerzését.

A jelszó biztonságosabb kivonása érdekében egyszerűen hozzáadhatjuk néhány véletlenszerű bit “sónak” hívják. Ugyanazon jelszóhoz adott különböző sók természetesen különböző hasheket eredményeznek (remélhetőleg kevés ütközéssel vagy anélkül).

Ha a véletlenszerű só mondjuk 32 bit széles, az azt jelenti, hogy elméletileg egy jelszó több mint négymilliárd különböző módon hash-elhet, ami nagyon nem praktikus, ha előre kiszámolt szótár áll rendelkezésre az összes lehetséges hash-ból. nagyszámú jelszó.

Természetesen a felhasználó hitelesítésekor semmit sem tud erről a sóról. Ez rendben van, mert a sót a kivonattal együtt tárolják a felhasználó profiljában (gyakran a kivonattal kombinálva egyetlen kompakt bitstringbe). Amikor a felhasználó jelszavának érvényesítését ellenőrzik, a sót bármilyen jelszóhoz hozzáadják belépett, hogy a hasítást a megfelelő sóval végezzék. Ha a jelszó helyes, akkor a kivonat meg fog egyezni, mivel a használt só is a megfelelő, a felhasználó profiljából kihúzva.

Így épül be a véletlenszerűség a jelszó kivonatolásába, miközben továbbra is lehetővé teszi a működését.

A hasheket nehezen feltörik, hogy “csapóajtó” vagy “egyirányú” funkciókból épülnek fel. A matematikában sok példa van ilyenekre. Például , az egyszerű kiegészítés egy csapda ajtaja. Ha összeget adunk egész számokhoz, lehetetlen visszaszerezni az eredeti számokat, csak az összeg ismeretében.

A jelszó kivonatok nem titkosított jelszavak. Ha a támadó a jelszó kivonatát és sóját, és véletlenül kitalálja a jelszót, akkor ezt könnyedén meg tudja erősíteni, pontosan ugyanúgy, ahogy a bejelentkezési hitelesítő szoftver teszi: futtatja a jelszót és a sót a hashing funkción keresztül, és látja, hogy a helyes hash merül fel.

Megjegyzések

  • Kiváló írási készség és nagyon egyszerű y megérteni a tényszerűen helytálló választ, ugyanakkor minden pontot kezel, és megtartja annak természetes áramlását, amely sokkal átfogóbbá teszi. Ez ‘ nem könnyű varázslat, nagyon köszönöm a válaszod!
  • nagyon informatív. Minden szempontot lefedtél.

Válasz

A kivonatolás egyik kulcsa, hogy eldobja az információkat. Nem lehet visszavonni egy kivonatot, mert a szükséges ismeretek elmentek. Íme néhány példa a működőképes (de meglehetősen értéktelen) hash funkciókra. Ha megadsz egy jelszót, akkor a következők egyikét tehetném:

  • Számold meg a magánhangzók számát
  • Vegyél minden betűhöz ASCII kódot, és XOR-t összesítsd együtt
  • Vegyük a CRC32 ellenőrző összegét a jelszó bináris megjelenítéséhez (ez valójában egy igazi hash, csak nem kriptográfiai)

Mindkét esetben nem tudom megfordítani a folyamatot. Ehelyett újra kell futtatnom a folyamatot, amikor később újra megadod a jelszót, hogy lássam, egyezik-e az általam futtatott számítás.

példa: Ha kezdetben megadod a “majom” jelszót, akkor eltárolhatom a 3-as számot (3 magánhangzó). Aztán később, amikor megpróbálom hitelesíteni a “sárkány” jelszót, újra lefuttatom ugyanazt az ellenőrzést, és előállok 2-vel, ami nem egyezik a 3. Tehát tudom, hogy rossz jelszót adott meg. De ha megadod a “melissa” jelszót, helytelenül feltételezném, hogy a megfelelő jelszót írtad be. Ez egy hash ütközés .

Az a szabálykészlet, amelyet a szám kitalálásához alkalmaz. egy adott jelszót képvisel, az a hash függvény . Ezeket “egyirányú” funkcióknak tekintik, mert nem szabad visszafordítani őket. A kiváló minőségű hash függvényeket úgy tervezték, hogy korlátozzák az esetleges ütközések számát, így nem kell aggódnia a probléma miatt. Egy lépéssel tovább, a kriptográfiai kivonatoló funkciókat úgy tervezték, hogy megnehezítsék egy olyan karaktersorozat előállítását, amely megfelelhet egy adott kimenetnek ( és esetleg szándékosan ütközéseket idéznek elő). Arra is tervezték, hogy korlátozzák az információ mennyiségét, amelyet csak egy kivonat kimenetéből gyűjthet egy adott bemenetről.

Ennek eredményeként az egyetlen módja annak megmondására, hogy a jelszó egyezik-e egy adott kriptográfiai kivonattal, az összes lehetőség kipróbálása, amíg bele nem botlik egy működőbe. További ellenintézkedések (só, BPKDF2 stb.) Még nehezebbé teszik ezt a találgatási folyamatot azáltal, hogy a jelszót kitaláló személy minden próbálkozásnál több karikát ugrik át. nehéz kitalálni egy működő jelszót (még akkor is, ha ez nem az eredeti). Ezt “ preimage támadásnak hívják “. A fenti triviális példában a” melissa “megjelölése 3 magánhangzót tartalmazó jelszójelöltként egy ilyen támadás példája.

A kriptográfiai hash függvények általában ezt úgy csinálják, hogy a bemenetet futtatják, bár több” egy adott folyamat fordulói “, ahol az egyes körök kimenete a következő bemenetének részévé válik.Az első kör bemenetének kitalálásához ki kell találnia a második kör bemenetét, amihez viszont megköveteli, hogy kitalálja a harmadik kör bemenetét stb., Ami azt jelenti, hogy az egyes komponensek minden kitalálása hosszú és összetett számítási halmazon keresztül kell ellenőrizni. Thomas Pornin eléggé kimerítő magyarázatot ad az ellenállás működéséről; nagyon hasznos olvasmány, ha nagyon akarod értsd meg.

Válasz

  1. Határozza meg z állandó értékét, amely kielégíti ezt az egyenletet: xy ^ 7 + yz ^ 5 + x ^ 3z = 0. Segítségre van szüksége? OK, x = 32. Még mindig nem tudja megoldani? Akkor először nem szabad tudni a választ.

    Az y értéke, amely ezt egyetlen változó egyenleté redukálja, így az egyetlen változó megoldása elenyészővé válik bármely 6. osztályos tanuló számára (esetleg számológépre van szükségem), titok, amelyet csak olyan emberekkel osztottam meg, akikben megbízok. Enélkül a z bármi lehet; értéke y-tól függ, így nem lehet kielégítően megoldani állandó, ismert y nélkül. Ha nem ” nem tudom az értékét, hanem azért, mert nem bíztam benned annyira, hogy privátban adjam át neked.

    Ez a kriptográfia alapelve; a matematikai képlet vagy más determinisztikus folyamat jól működik -dokumentált, és a képlet egy vagy több lehetséges változóját nyilvánosan is megismerhetik, lehetővé téve a két fél számára, hogy megállapodjanak a rejtjelek felállításának módjáról, hogy mindkettő visszafejthesse a többi titkosítását. Két változó azonban maradj titokban; ha ismered az egyiket, felfedezheted a másikat is. Az egyik, amit tudnod kell, az a kulcs, és te felfedezheti a kulccsal az üzenet.

    A hash esetében ez kicsit más. A hash esetében nincs szükség egy titok megőrzésére a másik megőrzéséhez. Ehelyett egy hash munka visszafordíthatatlan matematikai transzformáción alapul; bármely H (x) = y esetén nincs ismert H (y) = x, kivéve, ha a H (x) -t kipróbáljuk az összes lehetséges x-re, amíg meg nem kapjuk az y-t. Általában ez azért van, mert az egyenlet több közbenső eredménye félreérthető; például egy pozitív szám négyzetgyökének kiszámítása technikailag mindkettőt eredményezi pozitív és negatív eredmény, mivel bármelyik szám önmagában megszorozható az eredmény előállításához. A modul inverze hasonlóan félreérthető; az x mod 3 által előállított 1-es számot bármelyik x = 3k + 1 produkálhatta. Az ilyen típusú “egyirányú” transzformációk olyan módon vannak kombinálva, hogy az inverz hash függvény kiszámításának végtelen lehetőségeket generál; ezek megoldásának egyszerűbb (legegyszerűbb) módja tehát az, ha egyszerűen megpróbálunk minden lehetséges bemenetet, amíg egy kimenet meg nem egyezik. még sokáig tart.

  2. A hashok nem véletlenszerűek. Mint korábban említettem, a kivonatok egy visszafordíthatatlan matematikai művelet eredménye. Ennek a műveletnek továbbra is meghatározónak kell lennie; állandó bemenet esetén a kimenet állandó, függetlenül attól, hogy hányszor hajtja végre a műveletet. Nincs véletlenszerű komponens.

    Ahol összetéveszthetett, abban a kifejezésben szerepel, amit egy hash szimulál, ami egy véletlenszerű orákulum . Képzeljen el egy fekete dobozt, amelyen belül egy fényképészeti memóriával rendelkező kis ember található, és valami misztikus módszer áll rendelkezésre tökéletesen véletlenszerű számok előállítására. Leírsz valamit egy papírra, és átnyomod egy résen, ahol az ember megszerzi. Elolvassa, és két dolog közül az egyik történik. Vagy nem olvasta el korábban, ebben az esetben új véletlen számot generál, és megadja neked, mind az üzenetedet, mind a számot a memóriájára fordítva. Vagy ezt pontosan elolvasta üzenetet, ebben az esetben emlékszik arra a számra, amelyet először készített, és elolvasta, és tht számot ad neked. A véletlenszám-generátor soha nem generál olyan számot, amelyet már létrehozott, végtelen lehetséges nagyságrendű, és a kis ember a memória korlátlan és tévedhetetlen. Ezért a kis ember soha nem fogja azt hinni, hogy korábban elolvasott egy üzenetet, ha még soha nem felejtette el, hogy korábban elolvasott egy üzenetet, és ezért soha, soha nem fog előállítani két különböző számot ugyanarra az üzenetre, és nem is ugyanaz két különböző üzenet száma.

    Ezt a hash függvények próbálják szimulálni. Nem modellezhetik ezt a kis embert a fényképes memóriával, mert ehhez végtelen tárhelyre és korlátlan, univerzális rendelkezésre állásra lenne szükség. olyan eszközök, amelyek más módon nem kapcsolódnak más eszközökhöz. Ehelyett egy determinisztikus, de véletlenszerű kinézetű számításra támaszkodnak, amely az üzenet hash értékébe “emészti”. Ugyanaz a hash függvény, ha ugyanazt az üzenetet kapják, akkor ugyanaz a kivonat fog megjelenni; ezeknek a funkcióknak azonban korlátozott a hash értékek száma, amelyeket visszaengedhetnek. Ez megteremti annak lehetőségét, hogy mi hash ütközéseket nevezzünk; több lehetséges üzenet van, mint hash érték, tehát előbb vagy utóbb (remélhetőleg később), két különböző én az ssages ugyanazt a kivonatot hozza létre.

  3. A hasheket három alapvető okból lehet feltörni.Először is, mivel ezek egy determinisztikus, matematikai levezetést jelentenek üzenetükből, a matematikusok (és így a támadók) végül matematikai kapcsolatot találnak egy üzenet és annak kivonata, vagy két üzenet és ezekből származó hashek között. Ami egykor véletlenszerű volt, az már nem az. Ez számos támadást tesz lehetővé a talált gyengeség jellege alapján; ha van algoritmikus módszer egy adott üzenet és annak kivonata számára az ütköző üzenet létrehozására, az problémát jelent. Ha van mód az üzenet manipulálására és az eredő hash előrejelzésére, az más probléma. Ha valóban van mód a hash visszafordítására, akkor a kivonatból üzenetet küldünk, amely újravágáskor ugyanazt a hash-t hozza létre, ez a “ súlyos probléma.

    Másodszor, mivel a kivonatok korlátozott kivonatmérettel rendelkeznek, előbb vagy utóbb két üzenet ugyanazt a kivonatot hozza létre. Ez azt jelenti, hogy a támadónak nem kell megtalálnia azt az üzenetet, amelyet egy bizonyos kivonat előállításához használ. ; csak annyit kell tennie, hogy megtaláljon egy üzenetet, amely ugyanazt a hash-t hozza létre. Ennek esélye csekély, elméletileg egy esély a sok lehetséges hash közül, de mégis jobb, mint egy a végtelenben.

    Végül, bár sok a lehetséges üzenet, vannak sokkal kisebbek valószínű üzenetek száma. Azok az üzenetek, amelyeket általában a kivonatolási funkcióknak adunk, általában valamilyen felépítésűek (nyelv, tárgy, elektronikus formázás és cél alapján), ami azt jelenti, hogy az üzenet valamely részét figyelembe véve pontosabban kitalálhatjuk az üzenet más részeit. Informatikai szempontból ez azt jelenti, hogy a hash-sá alakított üzenetek gyakran alacsonyabb entrópiával rendelkeznek , mint maga a hash függvény; Egyszerűen fogalmazva: egy hash függvény, amely 256 bites emésztést eredményez, elméletileg ezeknek a biteknek a permutációját eredményezheti, 2 ^ 256. Ha azonban mondjuk csak 10 000 lehetséges üzenet van, amelyet valaha is bevihetnek ebbe a kivonatoló funkcióba egy támadásra vizsgált rendszer által, akkor a 2 ^ 256 lehetséges hash érték közül csak 10 000 lesz valaha látható, és ami még fontosabb, egy a támadónak a legrosszabb esetben csak az összes 10 000 lehetséges bemenetet kell kipróbálnia, hogy megtalálja azt, amely megadja a keresett hash értéket.

Megjegyzések

  • És ezért …. ezért szeretem az informatikai biztonságot ‘ a veremcsere webhely dolgát.
  • Ismertetése az 1. számra pontosan arra volt szükségem. Van azonban kérdésem. Úgy tűnik, hogy a ” hash ” olyanok, mint egy adott dolog számváltozatai (ebben az esetben jelszavak). Tehát ha van weboldalam és 100000 ember regisztrál. Akkor 50% használja a jelszót ” jelszó ” rengeteg helyet tudok megtakarítani azzal, hogy csak a ” jelszó ” jelszó helyett rengetegszer?
  • Nos, ha ‘ re egy biztonságos hash használatával (> = 256 bites összefoglaló méret), majd tárolja a ” jelszó kivonatolt értékét ” növelni fogja a tárhely méretét. Ezenkívül, ha a támadó valaha is látná, hogy a felhasználói fiókok 50% -ának ugyanaz a jelszó kivonata, akkor ‘ tudta, hogy minden ő ‘ d-nek kell tennie, hogy feltör egy jelszót, és hozzáfér a felhasználói fiókok 50% -ához. ” be kell sóznia ” a jelszó kivonatait; különféle módszerek léteznek, de a végeredmény az, hogy ugyanaz az algoritmus által kivonatolt ugyanaz a jelszó más kivonatot eredményez, mivel minden fiókhoz további egyedi sóérték tartozik.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük