RIPEMD-160

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 .

Implementace RIPEMD-160

Krok 1: Přidání chybějících bitů

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.

Krok 2. Přidání délky zprávy

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)).

Krok 3: Určení skutečných funkcí a konstant

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

Krok 4. Proveďte hashovací algoritmus

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; }

Příklady hashů RIPEMD-160

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 ") = 37f332f68db77bd9d7edd4969571ad671cf9dd3b

I 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") = 132072df690933835eb8b6ad0b77e7b6f14acad7

Hašovací součet prázdného řetězce vypadá takto:

RIPEMD-160("") = 9c1185a5c5e9fc54612808977ee8f548b2258d31

Výkon

Tabulka 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

Odkazy

Poznámky

  1. RMD160 Archivováno 2. února 2019 na Wayback Machine