RIPEMD-160 | |
---|---|
Jedno kolo hash schéma | |
Vytvořeno | 1996 |
zveřejněno | 18. dubna 1996 |
Velikost hash | 160 bit |
Počet kol | 80 |
Typ | hashovací funkce |
RIPEMD-160 (od RACE Integrity Primitives Evaluation Message Digest ) je kryptografická hašovací funkce vyvinutá na Katolické univerzitě v Lovani Hansem Dobbertinem , Antonem Bosselaersem a Bartem Prenelem . Pro libovolnou vstupní zprávu funkce generuje 160bitovou hodnotu hash nazvanou souhrn zprávy . RIPEMD-160 je vylepšená verze RIPEMD, která zase využívá principy MD4 a je výkonově srovnatelná s běžnějším SHA-1 .
Existují také 128bitové, 256bitové a 320bitové verze tohoto algoritmu, které se nazývají RIPEMD-128 , RIPEMD-256 a RIPEMD-320 . 128bitová verze je pouze náhradou za původní RIPEMD, který byl rovněž 128bitový a ve kterém byly nalezeny zranitelnosti [1] . 256bitové a 320bitové verze mají dvojnásobnou délku souhrnu , což snižuje pravděpodobnost kolize , ale funkce již nejsou kryptograficky silné .
RIPEMD-160 byl vyvinut v otevřené akademické komunitě, na rozdíl od SHA-1 a SHA-2 , které byly vytvořeny NSA . Na druhou stranu se RIPEMD-160 v praxi používá o něco méně často než SHA-1 .
Použití RIPEMD-160 není omezeno žádnými patenty .
Zpráva je rozšířena tak, že její délka v bitech modulo 512 je 448. V důsledku rozšíření je tedy zpráva o 64 bitů kratší než násobek délky 512 bitů. Rozšíření se provede vždy, i když má zpráva původně správnou délku.
Rozšíření se provádí následovně: ke zprávě se přidá jeden bit rovný 1 a poté se přidají bity rovné 0, dokud délka zprávy není 448 modulo 512. Celkem se ke zprávě přidá alespoň 1 bit, a maximálně 512.
64bitová reprezentace (délka zprávy před přidáním výplňových bitů) je přidána k výsledku předchozího kroku. V nepravděpodobném případě, že je větší než , se použije pouze nejméně významných 64 bitů. Tyto bity jsou přidány jako dvě 32bitová slova, přičemž slovo obsahující nejméně významné bity se přidává jako první.
V této fázi (po sečtení bitů a délky zprávy) dostaneme zprávu o délce, která je násobkem 512 bitů. To je ekvivalentní této zprávě, která je násobkem 16 32bitových slov. Každé 32bitové slovo obsahuje čtyři 8bitová slova, která však nenásledují za sebou, ale naopak (např. z osmi 8bitových slov (abcdefgh) dostaneme dvě 32bitová slova (dcba hgfe)).
I. Nelineární bitové funkce:
II. Přidány hexadecimální konstanty:
III. Výběr 32bitových slov ze zprávy
VI. Nastavit bitovou rotaci doleva (provoz rolování)
V. Počáteční významy souhrnných slov
Po nastavení všech počátečních funkcí, konstant a počátečních hodnot slov hash součtu můžete přistoupit k provádění algoritmu. Zpracování zpráv probíhá v 512bitových blocích sestávajících z 16 slov po 32 bitech (16 * 32 = 512). Každý blok je zpracován dvěma způsoby a výsledky se určitým způsobem sčítají.
Níže je pseudokód algoritmu. Sčítání "+" znamená sčítání modulo 2 32 , rol s označuje cyklický posun doleva o pozice s. Původní zpráva sestávající z tbloků 16 32bitových slov je uložena v poli , , [2] . Xi[j]0 <= i < t0 <= j < 16
for i := 0 až (t - 1) { A := h0; B:= hl; C:= h2; D:= h3; E:= h4; A' := h0; B':= hl; C':= h2; D':= h3; E':= h4; pro j := 0 až 79 { T:= rol s(j) (A + f(j; B; C; D) + Xi [r(j)] + K(j)) + E ; A:= E; E:= D; D:= role 10 (C); C:= B; B:= T; T:= rols '(j) (A' + f(79 - j; B'; C'; D') + Xi [ r '(j)] + K'(j)) + E'; A' := E'; E' := D'; D':= hod 10 (C'); C':= B'; B':= T; } T:= hl + C + D'; h1:= h2 + D + E'; h2:= h3 + E + A'; h3:= h4 + A + B'; h4:= h0 + B + C'; h0 := T; }Vstupní řetězec se skládá ze znaků ASCII . Výstupní řetězec je hexadecimální zápis.
RIPEMD-160(" Rychlá hnědá liška skáče přes líného psa ") = 37f332f68db77bd9d7edd4969571ad671cf9dd3bI malá změna zprávy způsobí významnou změnu v jejím souhrnu . dNapříklad ve výše uvedeném příkladu nahradíme c:
RIPEMD-160("Rychlá hnědá liška skáče přes líné kolečko") = 132072df690933835eb8b6ad0b77e7b6f14acad7Hašovací součet prázdného řetězce vypadá takto:
RIPEMD-160("") = 9c1185a5c5e9fc54612808977ee8f548b2258d31Tabulka pro srovnání ukazuje rychlosti provádění funkcí podobných MD4. Předpokládá se, že prováděcí kód a data jsou v mezipaměti spouštěcího zařízení.
Algoritmus | Cykly | Mbps | Relativní výkon |
---|---|---|---|
MD4 | 241 | 191,2 | 1,00 |
MD5 | 337 | 136,7 | 0,72 |
RIPEMD | 480 | 96,0 | 0,50 |
RIPEMD-128 | 592 | 77,8 | 0,41 |
SHA-1 | 837 | 55,1 | 0,29 |
RIPEMD-160 | 1013 | 45,5 | 0,24 |
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|