N-hash

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt hozzászólók, és jelentősen eltérhet a 2015. január 14-én felülvizsgált verziótól ; az ellenőrzéshez 21 szerkesztés szükséges .
N-hash
Létrehozva 1990
közzétett 1990
Hash méret 128 bites
A körök száma 12 vagy 15
Típusú hash függvény

Az N-Hash  egy kriptográfiai hash függvény , amely a FEAL ciklikus függvényen alapul . Jelenleg nem tekinthető biztonságosnak [1] .

1990 -ben fejlesztette ki a Nippon Telegraph and Telephone (a FEAL-t is).

Kezdetben az N-Hash funkciót a két telefonhasználó (Nippon Telegraph and Telephone – távközlési vállalat) közötti úton történő információcsere problémájának megoldására és az adatok visszakeresésének felgyorsítására szánták. Például, ha egy személy SMS -t küld, akkor a kézbesítés előtt egy hash funkció segítségével ellenőrzik annak hitelességét. Ha pedig a Nippon Telegraph és Telephone termékek felhasználójának gyorsan meg kell találnia valakinek a kapcsolattartóját a telefonon, akkor az N-Hash használatával leegyszerűsítheti a név megtalálásának folyamatát a listában. Ez annak a ténynek köszönhető, hogy a kapcsolat első betűje a név hash kódjaként (a kapcsolat egy kis meghatározó része) van deklarálva.

Eredet

Az N-Hash algoritmus a FEAL blokktitkosítási algoritmuson alapul. A legnagyobb távközlési vállalat, a Nippon Telegraph and Telephone megalkotta a FEAL-t a DES alapján . De bár ez az algoritmus gyorsabban teljesít a DES-nél, nagyon megbízhatatlan és könnyen sebezhető: egy kriptoanalitikusnak nagyon kevés információra volt szüksége ahhoz, hogy megtörje az algoritmust. A FEAL algoritmus feltörése vezetett az N-Hash hash függvény megjelenéséhez 1990-ben. Az N-Hash a DES-nél is gyorsabb: a DES 9 Kb/s sebességéhez képest az N-Hash 24 Kb/s sebességgel fut 15 körös sémában, és 29 Kbps sebességgel 12 körös sémában. Ugyanakkor a Nippon Telegraph and Telephone megbízhatóságának növekedését érte el a FEAL -hez képest [1] .

Egy ideig az N-Hash algoritmust használta a Nippon Telegraph and Telephone ennek a függvénynek a céljainak megfelelően, de egy idő után kifejlesztették a születésnapi módszert , amely könnyen feltörte ezt az algoritmust. A feltörés kapcsán nemcsak az N-Hash-t hagyták el, hanem szinte minden blokk titkosításra épülő funkciót, hiszen mindegyiknél ugyanaz a probléma: könnyen kiszolgáltatottak a születésnapi metódusnak. Ehelyett mostantól megbízhatóbb, MD-technológiákon alapuló funkciókat használnak: MD5 , SHA-1 és a jelenleg megbízhatónak minősülő funkciók listájában felsorolt ​​funkciókat (az ISO / IEC 10118 szabvány szerint).

Használat

Az N-Hash függvényt rövid ideig használták az 1990-es évek elején, mígnem a születésnapi módszerrel feltörték.

Az N-Hash jellemzői

Egyirányú

Definíció: Legyen  egy bizonyos hosszúságú üzenet.

Egy függvényt egyirányúnak nevezünk , ha egyenlőségből

könnyen:

nagyon munkaigényes:

Egy egyszerűbb definíciót így írhatunk:

Az egyirányúság  az " ujjlenyomat ":

Az egyirányúság egy nagyon fontos problémát old meg. Nézzük meg egy példával.

Alice és Bob hagyományosan az információátadás tárgyait jelölik ki. Példák

Ütközésállóság

Annak elkerülése érdekében, hogy Alice a "születésnapi" módszert alkalmazza Bob megtévesztésére, nagyon kényelmes egy még erősebb feltételt bevezetni, mint az egyirányú feltétel. H olyan, hogy nehéz megtalálni az üzeneteket , és olyan, hogy a hash kódjuk megegyezik. Vagyis lehetetlen találni két azonos ujjlenyomatú embert.

Ezt a feltételt ütközésállóságnak nevezik , és nem érvényes az N-Hash hash függvényre.

Az ütközési instabilitás miatt Alice így csaphatja be Bobot (a "születésnapi" módszer):

Az ilyen problémák elkerülése érdekében elegendő az aláírt szerződés kozmetikai módosítása. És bár ez a művelet semmilyen módon nem változtatja meg a H hash függvényt, és ezért semmilyen módon nem befolyásolja annak ütközésállóságát, de ezzel a művelettel a személy megkapja a szerződés új verzióját, amelynek hash kódja nem egyezik a támadó szerződéses verziójának hash kódjával. Vagyis ha Bob az 5. sorban vesszőt tesz valahova, vagy két pontot tesz egy helyett, akkor Alice nem fogja tudni bizonyítani, hogy újabb szerződést írt alá (mivel a hash kódja már nem egyezik Alice szerződésének hash kódjával).

Vegyünk egy valós példát: amikor a közjegyző lebélyegzi az aláírt szerződést, ott kozmetikai változtatásokat hajt végre.

Az N-Hash céljai

Az N-Hash függvény működésének megértéséhez tudományosabb beszédre kell váltania. Az alábbiakban ennek a funkciónak a céljait mutatjuk be, nem példákon keresztül, hanem a megvalósítás módja szerint és a megfelelő terminológiával .

Erre a tulajdonságra azért van szükség, hogy kizárja annak lehetőségét, hogy egy támadó hamis információt illesszen be az eredeti üzenetbe. A sértetlenség érdekében az üzenet szövegében bekövetkező változásokat (csere, beillesztés, törlés) észlelni kell. Az integritást redundáns információk beillesztése biztosítja az eredeti üzenetbe, ami egy tesztkombináció lesz. Ezt a kombinációt ellenőrző összegnek nevezik , és egy speciális algoritmussal számítható ki. Mivel ez az algoritmus a titkos kulcstól függ , nem valószínű , hogy hamis információ kerülne az üzenetbe .

, ahol a  redundáns információ, M egy üzenet - ellenőrző összeg;

A képletből az következik, hogy ha a só megváltozik, akkor S (ellenőrző összeg) is változik, ami azt jelenti, hogy mindkettő és megváltozott .

Vagyis arra a következtetésre juthatunk, hogy hamis információkat adtak hozzá.

Az N-Hash függvény M tetszőleges hosszúságú üzenettel működik. Ebben az esetben a kimenet egy 128 bites rögzített hosszúságú hash kód. Ez annak köszönhető, hogy az üzenet 128 bites méretű blokkra van felosztva , és az algoritmus szekvenciálisan működik az egyes blokkokkal.

Ez a tulajdonság egyirányú függvényekre vonatkozik, ami az N-Hash. Az M üzenet megbízhatóságát a végső hash kód (üzenetkivonat) kétszeri megkeresésével ellenőrizzük (küldő és fogadó fél). Az eredményeket összehasonlítják, és ha megegyeznek, akkor az információ megbízható. Az integritás nem garantálja az érvényességet .

azokon a webhelyeken, ahol meg kell adnia a bejelentkezési nevet és a jelszót , a beírás utáni jelszót hash kódra fordítják. Ez azt jelenti, hogy a felhasználó először beírja az M jelszavát, de egy hash kóddal lép be a védett területre . Az ismert h hash kód és a H függvény segítségével nagyon nehéz kiszámítani az M-et, ami biztosítja a jelszó titkosságát.

A hitelesítés  a felhasználó vagy az adatok bizonyos kritériumok alapján történő hitelesítésére szolgáló eljárás.

Felmerül a kérdés, hogy a hash függvény hogyan biztosítja a hitelesítés hitelességét. Ezt könnyű példával bemutatni.

Amikor a felhasználó beír egy felhasználónevet és jelszót bármely webhelyen , a jelszavát a rendszer hash kóddá alakítja, és hitelesítés céljából továbbítja a hálózaton. Nyilván ahhoz, hogy valaki más fiókja alatt tudjunk bejelentkezni, elég kideríteni a jelszó hash kódját, majd a képlet (h-hash kód, M - jelszó) segítségével megtalálni a jelszót. De az N-Hash, amely egyirányú funkció, biztosítja a jelszó biztonságát, mivel az egyirányú függvények egyenletének megoldása nagyon munkaigényes (nem személyi számítógép használata).

Algoritmus

Az N-Hash algoritmus a műveletek ciklikus ismétlődésén (12 vagy 15-ször - a körök száma) alapul. A bemeneten van egy hash kód és ez tetszőleges lehet, a kimenet az M üzenet h hash kódja , amit ki kell hasítani. A kimenő hash kód mérete rögzített és egyenlő 128 bittel, míg az M mérete tetszőleges [2] .

Alapmegnevezések

Az algoritmus leírása

A jobb oldali diagram a következő ábrákon szereplő műveletek vázlatos megjelöléseit mutatja.

Egy N-hash ciklus

Az alábbiakban az N-Hash algoritmus egy ciklusa látható.

  • A g függvény bemenete az (i-1)-edik lépés és az i-edik üzenetblokk hash kódja . Ebben az esetben tetszőlegesen van kiválasztva: például lehet nulla. És a modulo 2 összeadási művelet kimenetére is be van táplálva, vagyis az eredmény (a következő lépés hash kódja) így fog kinézni: ( valami még ismeretlen ).
  • A diagramból látható, hogy nem csak az XOR -ra van betáplálva , hanem a modulo 2 összeadás műveletének kimenetére is. Vagyis most az első bekezdéssel összhangban az eredmény így néz ki: ( valami, ami egyelőre ismeretlen ).

A maradék ismeretlen valami nyolc transzformációs függvényből álló kaszkádon való áthaladás után található meg. A megszerzését így lehet leírni:

  • Az EXG funkció felcseréli a magas és alacsony számjegyeket , és hozzáadja az eredményt , majd az eredményt modulo 2 s- mal egészíti ki .
  • A diagramból látható, hogy az eredményt szekvenciálisan j transzformáló függvény bemenetére tápláljuk, melynek második argumentuma az összeg , ahol j=1, ... , 8.
  • Az eredmény az i-edik lépés hash kódja :

.

Transzformációs függvény

Felmerül a kérdés, hogyan működik a transzformációs függvény .

Tekintsük az áramkör felső részét a szálkereszthez.

Az eredeti üzenet bitblokkokra van osztva .

A közbenső kimeneteket az áramkör alsó részének bemeneteinek tekintjük. és a közbenső kimenetekre , míg a műveletek és a másik két kimenetre kerülnek . Mostantól lehetőség van a közbenső kimeneteken lévő eredmények újrajelölésére, és rajtuk keresztül – hasonlóan a felső részhez – az alsó rész kimenetén, vagyis a teljes áramkör egészében megtalálni az eredményeket.

Az összes szükséges számítás elvégzése után azt kapjuk, hogy a bemenetre alkalmazva a kimeneti üzenet üzenetek összefűzéseként ábrázolható

  • ;
  • ;
  • ;
  • .
Az f(x, P) függvény keresése

Mivel az f függvény argumentumokkal dolgozik, amelyek hossza 32 bit, így az f(x, P) függvény keresési sémájából a következőt kapjuk:

  • Az érték 8 bites részekre van felosztva.
  • Írjuk fel ezeket a részeket , i=1,…,4 alakban, és vezessünk be új jelölést:
    • ;
    • ;
    • ;
    • ;

A függvény argumentumai (az első nyíl balról) a és .

A függvény argumentumai (a második nyíl balról) a és .

Vagyis a kimeneti üzenet két összetevője már ismert és egyenlő

    • ;
    • ;

Továbbá az üzenet már beérkezett elhagyó részeit használjuk a kimeneten a jelölés megkönnyítése érdekében:

    • ;
    • ;
  • Ekkor a kimeneti üzenet a következővel ábrázolható .
  • És ez köztudott
    • =( balra 2 bites forgatás )(a+b) mod 256
    • =( 2 bites balra forgatás )(a+b+1) mod 256

A hash függvények biztonsága

A hash-függvény akkor biztonságos , ha a kriptaelemzőnek sok információra van szüksége a hash feltöréséhez (ezáltal nem valószínű, hogy feltörik), és ha a hash-t még nem sikerült feltörni [3] .

Ahhoz, hogy a hash funkció biztonságos legyen, a következő feltételeknek kell teljesülniük:

  • Az üzenet szövegének változásaival (beszúrások, permutációk stb.) az üzenet hash kódjának is meg kell változnia;

Ellenkező esetben az a személy, aki beírja felhasználónevét és jelszavát a Wikipédiába való belépéshez , egy másik résztvevő oldalára kerülhet.

  • Lehetetlen üzenetet találni egy ismert hash kóddal innen ;

Ha ez a feltétel nem teljesül, akkor ez lehetővé teszi a Wikipédia-felhasználók jelszavainak megtalálását.

  • Nagyon időigényesnek kell lennie annak a feladatnak, hogy olyan üzeneteket találjunk , amelyekben a hash kódok megegyeznek .

Ellenkező esetben lehetséges lenne két jelszót találni azonos hash kóddal.

Az N-Hash nem biztonságos függvény, mert az utolsó feltétel nem teljesül.

Az N-Hash kriptanalízise

Az N-Hash jelenleg nem biztonságos szolgáltatásnak számít. Ez az ábra felsorolja az összes jelenleg biztonságos egyirányú funkciót az ISO/IEC 10118 [1] szerint :

A blokk titkosításon alapuló N-Hash-hez hasonló algoritmusok közül csak az MDC-2 és az MDC-4 tekinthető biztonságosnak .

Az N-Hash-t a következő probléma jellemzi:

  • Mivel a hash kód hossza megegyezik a titkosítási algoritmus blokkjának hosszával, az algoritmus instabil a születésnapi támadással szemben.

A hash függvények elleni támadások

Ez az ábra az összes kivonatolási algoritmus elleni támadások osztályozását mutatja általában.

Az algoritmusfüggő támadások egy adott algoritmus tulajdonságain alapuló támadások.

Például az N-Hash-t sikeresen megtámadták differenciális módszerrel , fixpontos támadással és középen találkozóval .

Az algoritmusfüggetlen támadások bármilyen hash függvényre alkalmazhatók, de ez nem zárja ki azt a tényt, hogy egyes algoritmusok esetében nagyon időigényesek a nagy információmennyiség vagy a kód sebessége miatt.

Hatékony támadások az N-Hash ellen Algoritmus alapú támadások Differenciál módszer

Den Boer egy eljárást javasolt ütközés felépítésére egy egyfordulós N-Hash séma számára.

Biham és Shamir sikeresen alkalmazta a differenciális kriptoanalízist a 6 körös N-Hash séma kompromittálására . Az általuk javasolt módszer az ütközés megkonstruálására bármely N értékre működik, amely három többszöröse, ugyanakkor N ≤ 12 esetén hatékonyabbnak bizonyul, mint a születésnapi paradoxonon alapuló megközelítés .

Egy 12 körből álló séma esetén az ütközések felépítésének bonyolultsága a javasolt módszerrel 256 műveletre becsülhető (a születésnapi paradoxonon alapuló módszer összetettsége 264 művelet).

Algoritmusfüggetlen támadások

A hash kód és a titkos kulcs hosszának növelése megnehezíti a kriptoanalitikus munkáját. Megpróbálhatja a számításokat túl időigényessé tenni egy személyi számítógép számára, és nagy erőforrásokat igényel. Ekkor a kriptoanalitikusnak vagy szuperszámítógépet kell keresnie, vagy egy vírust kell írnia, amely a hash-függvény feltörési folyamatának párhuzamosítása alapján több személyi számítógépet használ egyszerre a probléma megoldására [3] .

A hash függvény [4] védelmének következő módszerei is hatékonyak :

  • ellenőrző összegek használata a kivonatolás különböző szakaszaiban;
  • az információk pontosságának ellenőrzése;
  • típusú információ beágyazása az üzenetbe .

Eredmények

  • Jelenleg az N-Hash-t nem használják széles körben, mivel nem biztonságos, és több mint 10 éve feltörték.
  • Mostantól van egy speciális elnevezése a hash függvényeknek, mint például az N-Hash - key , azaz egyirányú, de nem ütközésálló:
    • Ha a felek megbíznak egymásban (vagyis mindkét fél biztos abban, hogy a másik nem fogja felváltani a szerződést, mint Alice és Bob esetében), akkor az N-Hash használható.

Az N-Hash összehasonlítása más hash-függvényekkel

Algoritmus Hash érték hossza Titkosítási sebesség (KB/s)
Davies-Meyer szimultán kör ( IDEA -val ) 128 22
Davies-Meyer (DES-szel) 64 9
GOST hash függvény 256 tizenegy
HAVAL (3 készlet) változó 168
HAVAL (4 szett) változó 118
HAVAL (5 készlet) változó 98
MD2 128 23
MD4 128 236
MD5 128 174
N-Hash (12 szakasz) 128 29
N-Hash (15 szakasz) 128 24
RIPE-MD 128 182
SHA-1 160 75
Snefru (4 menet) 128 48
Snefru (8 készlet) 128 23

Jegyzetek

  1. 1 2 3 4 5 Hash függvények (elérhetetlen hivatkozás - előzmények ) . Cryptomash. Letöltve: 2008. november 27.   (elérhetetlen link)
  2. Bruce Schneier. 18. fejezet Egyirányú hash-függvények // Alkalmazott kriptográfia . - 2. kiadás Archiválva : 2014. február 28. a Wayback Machine -nál
  3. 1 2 A kriptográfia fő kérdése  // CIO: folyóirat. - 2005. május 17. - 5. sz . Az eredetiből archiválva : 2008. május 29.
  4. Hash függvények kriptoanalízise (elérhetetlen link - történelem ) . Cryptomash. Letöltve: 2008. november 27.   (elérhetetlen link)

Lásd még

Linkek

Irodalom

  • A. Scserbakov, A. Domasev. Alkalmazott kriptográfia. - M . : orosz kiadás, 2003. - 404 p. — ISBN 5-7502-0215-1 .
  • Bruce Schneier. Alkalmazott kriptográfia. - 2. kiadás - M . : Triumph, 2002. - 816 p.