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.
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).
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.
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ákAnnak 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 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 só 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).
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] .
A jobb oldali diagram a következő ábrákon szereplő műveletek vázlatos megjelöléseit mutatja.
Az alábbiakban az N-Hash algoritmus egy ciklusa látható.
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:
.
Transzformációs függvényFelmerü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ó
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:
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:
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:
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.
Ha ez a feltétel nem teljesül, akkor ez lehetővé teszi a Wikipédia-felhasználók jelszavainak megtalálását.
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 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:
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 ellenDen 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ásokA 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 :
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 |
Hash függvények | |
---|---|
Általános rendeltetésű | |
Kriptográfia | |
Kulcsgenerálási funkciók | |
Csekkszám ( összehasonlítás ) | |
Hashes |
|