Kryptografická hashovací funkce - Cryptographic hash function

Zabezpečené algoritmy hash
Pojmy
hashovací funkce  · SHA  · DSA
Hlavní standardy
SHA-0  · SHA-1  · SHA-2  · SHA-3
Kryptografická hashovací funkce (konkrétně SHA-1 ) při práci. Malá změna vstupu (ve slově „přes“) drasticky změní výstup (výtah). Jedná se o takzvaný lavinový efekt .

Kryptografické hashovací funkce ( CHF ) je matematický algoritmus , který mapuje data z libovolné velikosti (často nazývané „message“) k bitové pole o pevné velikosti (dále jen „hash hodnoty“, „hash“, nebo „výtah ze zprávy“ ). Je to jednosměrná funkce , tedy funkce, u které je prakticky nemožné invertovat nebo zvrátit výpočet. V ideálním případě je jediným způsobem, jak najít zprávu, která produkuje daný hash, pokus o hledání možných vstupů hrubou silou, aby se zjistilo, zda produkují shodu, nebo použít duhovou tabulku odpovídajících hashů. Kryptografické hashovací funkce jsou základním nástrojem moderní kryptografie.

Ideální kryptografická hashovací funkce má následující hlavní vlastnosti:

  • je deterministický , což znamená, že stejná zpráva má vždy za následek stejný hash
  • je rychlé vypočítat hodnotu hash pro danou zprávu
  • je nemožné vygenerovat zprávu, která poskytne danou hodnotu hash (tj. zvrátit proces je také známo, že vygeneroval danou hodnotu hash)
  • je nemožné najít dvě různé zprávy se stejnou hodnotou hash
  • malá změna zprávy by měla změnit hodnotu hash tak rozsáhle, že se nová hodnota hash jeví jako nekorelovaná se starou hodnotou hash ( lavinový efekt )

Kryptografické hashovací funkce mají mnoho aplikací pro zabezpečení informací , zejména v oblasti digitálních podpisů , ověřovacích kódů zpráv (MAC) a dalších forem ověřování . Mohou být také použity jako běžné hashovací funkce , k indexování dat v hashovacích tabulkách , pro snímání otisků prstů , k detekci duplicitních dat nebo jednoznačné identifikaci souborů a jako kontrolní součty k detekci náhodného poškození dat. V kontextech zabezpečení informací se kryptografickým hodnotám hash někdy říká ( digitální ) otisky prstů , kontrolní součty nebo jen hodnoty hash , přestože všechny tyto výrazy znamenají obecnější funkce s dosti odlišnými vlastnostmi a účely.

Vlastnosti

Většina kryptografických hashovacích funkcí je navržena tak, aby jako vstup používaly řetězec libovolné délky a vytvářely hodnotu hash s pevnou délkou.

Kryptografická hashovací funkce musí být schopna odolat všem známým typům kryptoanalytického útoku . V teoretické kryptografii byla úroveň zabezpečení funkce kryptografické hash definována pomocí následujících vlastností:

Odolnost před obrazem
Vzhledem k hodnotě hash h by mělo být obtížné najít jakoukoli zprávu m takovou, že h = hash ( m ) . Tento koncept souvisí s konceptem jednosměrné funkce . Funkce, kterým tato vlastnost chybí, jsou citlivé na útoky předobrazem .
Druhý odpor před obrazem
Vzhledem k zadání m 1 by mělo být obtížné najít jiný vstup m 2 tak, aby hash ( m 1 ) = hash ( m 2 ) . Tato vlastnost je někdy označována jako slabý kolizní odpor . Funkce, které tuto vlastnost postrádají, jsou citlivé na útoky z druhého předobrazu .
Odolnost proti kolizi
Mělo by být obtížné najít dvě různé zprávy m 1 a m 2 tak, aby hash ( m 1 ) = hash ( m 2 ) . Takovému páru se říká kryptografická kolize hash . Tato vlastnost je někdy označována jako silná odolnost proti nárazu . Vyžaduje hodnotu hash alespoň dvakrát delší, než je požadováno pro odolnost před obrazem; v opačném případě může dojít ke kolizi narozeninovým útokem .

Odolnost proti kolizi znamená druhý odpor před obrazem, ale neznamená to předobrazový odpor. Slabší předpoklad je vždy upřednostňován v teoretické kryptografii, ale v praxi je hashovací funkce, která je odolná pouze před druhým obrazem, považována za nejistou, a proto se nedoporučuje pro skutečné aplikace.

Neformálně tyto vlastnosti znamenají, že škodlivý protivník nemůže nahradit nebo upravit vstupní data, aniž by změnil jejich souhrn. Pokud tedy mají dva řetězce stejný výtah, člověk si může být velmi jistý, že jsou totožné. Odolnost druhého obrazu před útokem brání útočníkovi vytvořit dokument se stejným hashem jako dokument, který útočník nemůže ovládat. Odolnost proti kolizi brání útočníkovi ve vytváření dvou odlišných dokumentů se stejným hashem.

Funkce splňující tato kritéria může mít stále nežádoucí vlastnosti. V současné době jsou populární kryptografické hashovací funkce náchylné k útokům s prodloužením délky : daný hash ( m ) a len ( m ), ale ne m , výběrem vhodného m může útočník vypočítat hash ( mm ) , kde ∥ označuje zřetězení . Tuto vlastnost lze použít k prolomení naivních schémat ověřování na základě hashovacích funkcí. Konstrukce HMAC tyto problémy obchází.

V praxi je odolnost proti nárazu pro mnoho praktických použití nedostatečná. Kromě odolnosti proti kolizi by mělo být pro protivníka nemožné najít dvě zprávy s v podstatě podobnými digesty; nebo odvodit jakékoli užitečné informace o datech, pouze s ohledem na jejich souhrn. Zejména by se hashovací funkce měla chovat co nejvíce jako náhodná funkce ( v důkazech zabezpečení se jí často říká náhodná věštec ) a přitom být stále deterministická a efektivně vypočítatelná. To vylučuje funkce, jako je funkce SWIFFT , která může být přísně prokázána jako odolná vůči kolizím za předpokladu, že určité problémy na ideálních svazcích jsou výpočetně obtížné, ale jako lineární funkce tyto další vlastnosti nesplňuje.

Algoritmy kontrolního součtu, jako je CRC32 a další kontroly cyklické redundance , jsou navrženy tak, aby splňovaly mnohem slabší požadavky a obecně nejsou vhodné jako kryptografické hashovací funkce. Například CRC byl použit pro integritu zpráv v šifrovacím standardu WEP , ale útok byl okamžitě odhalen, což využilo linearitu kontrolního součtu.

Stupeň obtížnosti

V kryptografické praxi „obtížný“ obecně znamená „téměř jistě mimo dosah jakéhokoli protivníka, kterému musí být zabráněno v rozbití systému tak dlouho, dokud je bezpečnost systému považována za důležitou“. Význam pojmu je tedy do určité míry závislý na aplikaci, protože úsilí, které může škodlivý agent vložit do úkolu, je obvykle úměrné jejich očekávanému zisku. Protože se však potřebné úsilí obvykle znásobuje délkou digestu, lze i tisícinásobnou výhodu zpracovatelského výkonu neutralizovat přidáním několika desítek bitů k posledně uvedenému.

U zpráv vybraných z omezené sady zpráv, například hesel nebo jiných krátkých zpráv, je možné invertovat hash vyzkoušením všech možných zpráv v sadě. Protože kryptografické hashovací funkce jsou obvykle navrženy tak, aby byly rychle vypočítány, byly vyvinuty speciální funkce odvozování klíčů, které vyžadují větší výpočetní prostředky, které takové útoky hrubou silou ztěžují.

V některých teoretických analýzách má „obtížný“ specifický matematický význam, například „neřešitelný v asymptotickém polynomiálním čase “. Takové interpretace obtížnosti jsou důležité při studiu prokazatelně bezpečných kryptografických hashovacích funkcí, ale obvykle nemají silné spojení s praktickým zabezpečením. Například, exponenciální-time algoritmus může někdy být ještě dostatečně rychle, aby reálný útok. Naopak algoritmus polynomiálního času (např. Takový , který vyžaduje n 20 kroků pro n -číslicové klíče) může být příliš pomalý pro jakékoli praktické použití.

Ilustrace

Potenciální využití kryptografického hashu je znázorněno následovně: Alice představuje Bobovi těžký matematický problém a tvrdí, že ho vyřešila. Bob by to chtěl zkusit sám, ale přesto by si chtěl být jistý, že Alice neblufuje. Alice proto zapíše své řešení, vypočítá jeho hash a řekne Bobovi hashovací hodnotu (přičemž řešení ponechá v tajnosti). Když pak Bob o několik dní později přijde s řešením sám, Alice může prokázat, že řešení měla dříve, tím, že ho odhalí a nechá ho hashovat a zkontroluje, zda odpovídá hodnotě hash, která mu byla dána dříve. (Toto je příklad jednoduchého schématu závazků ; ve skutečné praxi budou Alice a Bob často počítačové programy a tajemstvím by bylo něco méně snadno falešného než deklarované logické řešení.)

Aplikace

Ověření integrity zpráv a souborů

Důležitou aplikací bezpečných hash je ověření integrity zprávy . Porovnáním souhrnů zpráv (přehledů šarží nad zprávou) vypočítaných před a po přenosu může přenos určit, zda byly ve zprávě nebo souboru provedeny nějaké změny .

Soubory hash MD5 , SHA-1 nebo SHA-2 jsou někdy publikovány na webech nebo fórech, aby bylo možné ověřit integritu stažených souborů, včetně souborů načtených pomocí sdílení souborů , jako je zrcadlení . Tato praxe vytváří řetězec důvěry , pokud jsou hashe zveřejněny na důvěryhodném webu - obvykle původním webu - ověřeném protokolem HTTPS . Pomocí kryptografického hashu a řetězce důvěryhodnosti detekuje škodlivé změny v souboru. Jiné kódy pro detekci chyb, jako jsou cyklické kontroly redundance, pouze zabraňují nezdravým změnám souboru provedenými ostatními.

Generování a ověřování podpisu

Téměř všechna schémata digitálního podpisu vyžadují, aby byl ve zprávě vypočítán kryptografický hash. To umožňuje provést výpočet podpisu na relativně malém, staticky velkém hash digestu. Zpráva je považována za autentickou, pokud ověření podpisu proběhne úspěšně vzhledem k podpisu a přepočtenému hašovanému souhrnu zprávy. Vlastnost integrity zprávy kryptografického hashu se tedy používá k vytváření bezpečných a efektivních schémat digitálního podpisu.

Ověření hesla

Ověření hesla obvykle závisí na kryptografických hash. Uložení všech uživatelských hesel jako čirého textu může mít za následek velké narušení zabezpečení, pokud je soubor hesel ohrožen. Jedním ze způsobů, jak toto nebezpečí omezit, je uložit pouze hashovaný výtah každého hesla. K ověření uživatele je heslo předložené uživatelem zahašováno a porovnáno s uloženým hashem. Při provádění hašování hesla je vyžadována metoda resetování hesla; původní hesla nelze přepočítat z uložené hodnoty hash.

Standardní kryptografické hashovací funkce jsou navrženy tak, aby se daly rychle vypočítat, a v důsledku toho je možné vyzkoušet uhodnutá hesla za vysoké ceny. Běžné grafické procesory mohou každou sekundu vyzkoušet miliardy možných hesel. Funkce hash hesel, které provádějí roztahování klíčů -například PBKDF2 , scrypt nebo Argon2 -běžně používají opakované vyvolání kryptografického hashu ke zvýšení času (a v některých případech i počítačové paměti) potřebného k provádění útoků hrubou silou na uložené hash digesty hesel. Hash hesla vyžaduje použití velké náhodné, tajné hodnoty soli, kterou lze uložit s hashem hesla. Sůl randomizuje výstup hashování hesel, což znemožňuje protivníkovi ukládat tabulky hesel a předpočítaných hodnot hash, se kterými lze porovnávat hash hesel.

Výstup funkce hash hesla lze také použít jako kryptografický klíč. Hashování hesel je proto také známé jako funkce odvozování klíčů na základě hesla (PBKDF).

Doklad o práci

Systém proof-of-work (nebo protokol nebo funkce) je ekonomickým opatřením, které má zabránit útokům typu denial-of-service a další zneužívání služeb, jako je nevyžádaná pošta v síti, vyžadováním určité práce od žadatele o službu, což obvykle znamená dobu zpracování počítač. Klíčovým rysem těchto schémat je jejich asymetrie: práce musí být na straně žadatele středně těžká (ale proveditelná), ale pro poskytovatele služeb musí být snadno kontrolovatelná. Jeden populární systém-používaný při těžbě bitcoinů a Hashcash -využívá částečné inverze hash k prokázání, že práce byla provedena, k odemčení odměny za těžbu v bitcoinech a jako token dobré vůle k odeslání e-mailu v Hashcash. Odesílatel je povinen najít zprávu, jejíž hodnota hash začíná počtem nulových bitů. Průměrná práce, kterou musí odesílatel provést, aby našel platnou zprávu, je exponenciální v počtu nulových bitů požadovaných v hodnotě hash, zatímco příjemce může ověřit platnost zprávy provedením jediné funkce hash. Například v Hashcash je odesílatel požádán o vygenerování záhlaví, jehož 160bitová hodnota hash SHA-1 má prvních 20 bitů jako nuly. Odesílatel bude v průměru muset zkusit 2 19 krát najít platný záhlaví.

Identifikátor souboru nebo dat

Přehled zpráv může také sloužit jako prostředek ke spolehlivé identifikaci souboru; několik systémů správy zdrojových kódů , včetně Git , Mercurial a Monotone , používá k jedinečné identifikaci sha1sum různých typů obsahu (obsah souboru, adresářové stromy, informace o původu atd.). K identifikaci souborů v sítích sdílení souborů peer-to-peer se používají hashe . Například v odkazu ED2K , An MD4 -variant hash je spojena s velikostí souboru, které poskytují dostatečné informace pro určení polohy zdroje souborů, stahování souborů a ověření jeho obsah. Magnetické odkazy jsou dalším příkladem. Takováto hašování souborů jsou často nejlepším hashem seznamu hash nebo stromem hash, který umožňuje další výhody.

Jednou z hlavních aplikací hashovací funkce je umožnit rychlé vyhledávání dat v hashovací tabulce . Vzhledem k tomu, že jde o hašovací funkce určitého druhu, jsou kryptografické hashovací funkce vhodné i pro tuto aplikaci.

Ve srovnání se standardními hashovacími funkcemi však kryptografické hashovací funkce bývají výpočetně mnohem dražší. Z tohoto důvodu se obvykle používají v kontextech, kde je nutné, aby se uživatelé chránili před možností padělání (vytváření dat se stejným souhrnem jako očekávaná data) potenciálně škodlivými účastníky.

Funkce hash na základě blokových šifer

Existuje několik způsobů použití blokové šifry k vytvoření funkce kryptografické hash, konkrétně funkce jednosměrné komprese .

Metody se podobají provozním režimům blokové šifry, které se obvykle používají pro šifrování. Mnoho známých hashovacích funkcí, včetně MD4 , MD5 , SHA-1 a SHA-2 , je postaveno na komponentách podobných blokovým šifrám navrženým pro tento účel se zpětnou vazbou, která zajišťuje, že výsledná funkce není invertibilní. Finalisté SHA-3 obsahovali funkce s komponentami podobnými blokovým šifrám (např. Skein , BLAKE ), i když funkce, která byla nakonec vybrána, Keccak , byla místo toho postavena na kryptografické houbě .

Místo těchto vlastních blokových šifer lze použít standardní blokovou šifru, jako je AES ; to může být užitečné, když integrovaný systém potřebuje implementovat šifrování i hašování s minimální velikostí kódu nebo hardwarovou oblastí. Tento přístup však může mít náklady na účinnost a zabezpečení. Šifry v hašovacích funkcích jsou vytvořeny pro hašování: používají velké klíče a bloky, mohou efektivně měnit klíče v každém bloku a byly navrženy a prověřeny pro odolnost vůči útokům na související klíče . Univerzální šifry mívají různé designové cíle. Zejména AES má velikosti klíčů a bloků, díky nimž je netriviální používat ke generování dlouhých hodnot hash; Šifrování AES se stane méně efektivním, když klíč změní každý blok; a útoky pomocí souvisejících klíčů způsobují, že je potenciálně méně bezpečné pro použití v hašovací funkci než pro šifrování.

Návrh funkce hash

Stavba Merkle – Damgård

Hašovací konstrukce Merkle – Damgård

Funkce hash musí být schopna zpracovat zprávu libovolné délky do výstupu s pevnou délkou. Toho lze dosáhnout rozdělením vstupu na řadu stejně velkých bloků a jejich postupným zpracováním pomocí funkce jednosměrné komprese . Funkce komprese může být buď speciálně navržena pro hašování, nebo může být vytvořena z blokové šifry. Hašovací funkce postavená na konstrukci Merkle -Damgård je stejně odolná vůči kolizím jako její kompresní funkce; jakoukoli kolizi pro plnou hashovací funkci lze vysledovat zpět ke kolizi ve funkci komprese.

Poslední zpracovaný blok by měl být také jednoznačně vyplněn délkou ; to je zásadní pro bezpečnost této stavby. Tato konstrukce se nazývá konstrukce Merkle – Damgård . Tuto formu mají nejběžnější klasické hashovací funkce, včetně SHA-1 a MD5 .

Široká trubka versus úzká trubka

Jednoduchá aplikace konstrukce Merkle – Damgård, kde je velikost hashovacího výstupu stejná jako velikost vnitřního stavu (mezi každým krokem komprese), má za následek návrh hash s úzkými trubkami . Tento design způsobuje mnoho inherentních nedostatků, včetně prodloužení délky , vícekolizí, útoků na dlouhé zprávy, útoků generování a vkládání a také nemůže být paralelizován. Jako výsledek, moderní hashovací funkce jsou postaveny na širokoúhlé trubkových konstrukcí, které mají větší vnitřní rozměr stát - které se pohybují od vylepší výstavby Merkle-Damgardův do novostaveb, jako je stavebnictví houba a Haifa konstrukci . Žádný ze účastníků soutěže o hashovací funkci NIST nepoužívá klasickou konstrukci Merkle – Damgård.

Mezitím zkrácení výstupu delšího hash, jako je použit v SHA-512/256, také porazí mnoho z těchto útoků.

Použití při stavbě dalších kryptografických primitivů

Funkce hash lze použít k vytvoření dalších kryptografických primitiv. Aby byla tato další primitiva kryptograficky bezpečná, je třeba dbát na jejich správné sestavení.

Ověřovací kódy zpráv (MAC) (nazývané také klíčové hashovací funkce) jsou často postaveny z hashovacích funkcí. HMAC je takový MAC.

Stejně jako lze blokové šifry použít k vytváření hašovacích funkcí, lze k vytváření blokových šifer použít také hašovací funkce. Konstrukce Luby-Rackoff využívající hashovací funkce mohou být prokazatelně bezpečné, pokud je bezpečná základní hashovací funkce. Mnoho hašovacích funkcí (včetně SHA-1 a SHA-2 ) je také vytvořeno pomocí speciální blokové šifry v Davies-Meyerově nebo jiné konstrukci. Tuto šifru lze také použít v konvenčním provozním režimu bez stejných bezpečnostních záruk. Viz SHACAL , BEAR a LION .

Generátory pseudonáhodných čísel (PRNG) lze vytvořit pomocí hashovacích funkcí. To se provádí kombinací (tajného) náhodného semene s počítadlem a jeho hašováním.

Některé hash funkce, jako je přadeno , Keccak a RadioGatún , výstup libovolně dlouho proud a může být použit jako proudovou šifru , a proud kódy mohou být také vytvořena ze pevné délky štěpit hašovací funkce. Často se to děje tak, že se nejprve vytvoří kryptograficky bezpečný generátor pseudonáhodných čísel a poté se použije proud náhodných bajtů jako klíčový proud . SEAL je proudová šifra, která používá SHA-1 ke generování interních tabulek, které jsou pak použity v generátoru klíčových proudů více či méně nesouvisející s hashovacím algoritmem. Není zaručeno, že bude SEAL tak silný (nebo slabý) jako SHA-1. Podobně klíčové rozšíření šifrovacích toků HC-128 a HC-256 hojně využívá hashovací funkci SHA-256 .

Zřetězení

Zřetězení výstupů z více hashovacích funkcí poskytuje odolnost proti kolizím stejně dobrou jako nejsilnější z algoritmů obsažených ve zřetězeném výsledku. Například starší verze Transport Layer Security (TLS) a Secure Sockets Layer (SSL) používaly zřetězené částky MD5 a SHA-1 . Tím je zajištěno, že metoda pro nalezení kolizí v jedné z hashovacích funkcí neporazí data chráněná oběma hashovacími funkcemi.

U hashovacích funkcí konstrukce Merkle – Damgård je zřetězená funkce stejně odolná vůči kolizím jako její nejsilnější součást, ale není odolnější vůči kolizi. Antoine Joux poznamenal, že 2 kolize vedou k n -kolizi: pokud je možné, aby útočník našel dvě zprávy se stejným hashem MD5, pak mohl najít tolik dalších zpráv se stejným hashem MD5, kolik si přáli, bez větší obtížnost. Mezi těmito zprávami n se stejným hashem MD5 pravděpodobně dojde ke kolizi v SHA-1. Další práce nutná k nalezení kolize SHA-1 (mimo exponenciální vyhledávání narozenin) vyžaduje pouze polynomiální čas .

Kryptografické hashovací algoritmy

Existuje mnoho kryptografických algoritmů hash; tato část uvádí několik algoritmů, na které se relativně často odkazuje. Rozsáhlejší seznam lze nalézt na stránce obsahující srovnání kryptografických hashovacích funkcí .

MD5

MD5 byl navržen Ronaldem Rivestem v roce 1991, aby nahradil dřívější hashovací funkci, MD4, a byl specifikován v roce 1992 jako RFC 1321. Kolize proti MD5 lze vypočítat během několika sekund, což činí algoritmus nevhodným pro většinu případů použití, kde je vyžadován kryptografický hash. MD5 produkuje souhrn 128 bitů (16 bajtů).

SHA-1

SHA-1 byl vyvinut jako součást projektu Capstone americké vlády . Původní specifikace-nyní běžně nazývaná SHA-0-algoritmu byla publikována v roce 1993 pod názvem Secure Hash Standard, FIPS PUB 180, americkou vládní normalizační agenturou NIST (National Institute of Standards and Technology). To bylo staženo NSA krátce po zveřejnění a bylo nahrazeno revidovanou verzí, publikovanou v roce 1995 ve FIPS PUB 180-1 a běžně označovanou SHA-1. Srážky proti úplnému algoritmu SHA-1 lze vytvářet pomocí rozbitého útoku a hashovací funkce by měla být považována za poškozenou. SHA-1 produkuje hašovaný souhrn 160 bitů (20 bajtů).

Dokumenty mohou odkazovat na SHA-1 pouze jako „SHA“, i když to může být v rozporu s ostatními algoritmy Secure Hash, jako jsou SHA-0, SHA-2 a SHA-3.

RIPEMD-160

RIPEMD (RACE Integrity Primitive Evaluation Message Digest) je rodina kryptografických hashovacích funkcí vyvinutých v belgickém Lovani Hansem Dobbertinem, Antoon Bosselaers a Bartem Preneelem ve výzkumné skupině COSIC na Katholieke Universiteit Leuven a poprvé publikováno v roce 1996. RIPEMD byl založen na konstrukčních principech použitých v MD4 a je výkonově podobný populárnějšímu SHA-1. RIPEMD-160 však nebyl zlomen. Jak název napovídá, RIPEMD-160 produkuje hašovaný souhrn 160 bitů (20 bajtů).

vířivá vana

Whirlpool je kryptografická hashovací funkce navržená Vincentem Rijmenem a Paulo SLM Barreto, kteří ji poprvé popsali v roce 2000. Whirlpool je založen na podstatně upravené verzi Advanced Encryption Standard (AES). Whirlpool produkuje hašovaný souhrn 512 bitů (64 bajtů).

SHA-2

SHA-2 (Secure Hash Algorithm 2) je sada kryptografických hashovacích funkcí navržených americkou Národní bezpečnostní agenturou (NSA), poprvé publikované v roce 2001. Jsou postaveny pomocí struktury Merkle – Damgård, z jednosměrné kompresní funkce sám byl postaven pomocí struktury Davies – Meyer z (klasifikované) specializované blokové šifry.

SHA-2 se v zásadě skládá ze dvou hashovacích algoritmů: SHA-256 a SHA-512. SHA-224 je varianta SHA-256 s různými počátečními hodnotami a zkráceným výstupem. SHA-384 a méně známé SHA-512/224 a SHA-512/256 jsou všechny varianty SHA-512. SHA-512 je bezpečnější než SHA-256 a je běžně rychlejší než SHA-256 na 64bitových počítačích, jako je AMD64 .

Výstupní velikost v bitech je dána příponou názvu „SHA“, takže SHA-224 má výstupní velikost 224 bitů (28 bytů); SHA-256, 32 bytů; SHA-384, 48 bytů; a SHA-512, 64 bytů.

SHA-3

SHA-3 (Secure Hash Algorithm 3) byl vydán NIST 5. srpna 2015. SHA-3 je podmnožinou širší kryptografické primitivní rodiny Keccak. Algoritmus Keccak je dílem Guido Bertoni, Joan Daemen, Michael Peeters a Gilles Van Assche. Keccak je založen na konstrukci houby, kterou lze také použít ke stavbě dalších kryptografických primitiv, jako je proudová šifra. SHA-3 poskytuje stejné výstupní velikosti jako SHA-2: 224, 256, 384 a 512 bitů.

Konfigurovatelné výstupní velikosti lze také získat pomocí funkcí SHAKE-128 a SHAKE-256. Zde rozšíření -128 a -256 názvu znamenají spíše zabezpečení funkce než velikost výstupu v bitech.

BLAKE2

BLAKE2, vylepšená verze BLAKE, byla oznámena 21. prosince 2012. Vytvořili ji Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn a Christian Winnerlein s cílem nahradit široce používaný, ale rozbitý MD5 a Algoritmy SHA-1. Při spuštění na 64bitových architekturách x64 a ARM je BLAKE2b rychlejší než SHA-3, SHA-2, SHA-1 a MD5. Ačkoli BLAKE a BLAKE2 nebyly standardizovány jako SHA-3, BLAKE2 byl použit v mnoha protokolech, včetně hash hesla Argon2 , pro vysokou účinnost, kterou nabízí na moderních CPU. Protože BLAKE byl kandidátem na SHA-3, BLAKE a BLAKE2 nabízejí stejné výstupní velikosti jako SHA-3-včetně konfigurovatelné výstupní velikosti.

BLAKE3

BLAKE3, vylepšená verze BLAKE2, byla oznámena 9. ledna 2020. Vytvořili ji Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves a Zooko Wilcox-O'Hearn. BLAKE3 je jediný algoritmus, na rozdíl od BLAKE a BLAKE2, což jsou rodiny algoritmů s více variantami. Funkce komprese BLAKE3 je úzce založena na funkci BLAKE2s, přičemž největší rozdíl spočívá v tom, že počet kol je snížen z 10 na 7. Interně je BLAKE3 strom Merkle a podporuje vyšší stupně paralelnosti než BLAKE2.

Útoky na kryptografické hashovací algoritmy

Existuje dlouhý seznam kryptografických hashovacích funkcí, ale mnohé byly shledány zranitelnými a neměly by být používány. NIST například vybrala 51 hašovacích funkcí jako kandidáty pro 1. kolo SHA-3 hašovací soutěže, z nichž 10 bylo považováno za přerušené a 16 vykazovalo významné nedostatky, a proto se nedostalo do dalšího kola; více informací naleznete v hlavním článku o soutěžích hashovací funkce NIST .

I když funkce hash nebyla nikdy porušena, úspěšný útok proti oslabené variantě může podkopat důvěru odborníků. Například v srpnu 2004 byly nalezeny kolize v několika tehdy populárních hashovacích funkcích, včetně MD5. Tyto slabé stránky zpochybnily bezpečnost silnějších algoritmů odvozených od slabých hashovacích funkcí-zejména SHA-1 (posílená verze SHA-0), RIPEMD-128 a RIPEMD-160 (obě zesílené verze RIPEMD).

12. srpna 2004 Joux, Carribault, Lemuel a Jalby oznámili kolizi celého algoritmu SHA-0. Joux a kol. toho dosáhlo pomocí zobecnění útoku Chabaud a Joux. Zjistili, že kolize měla složitost 2 51 a zabrala asi 80 000 hodin CPU na superpočítači s 256 procesory Itanium 2 -což odpovídá 13 dnům používání superpočítače na plný úvazek.

V únoru 2005 byl hlášen útok na SHA-1, který by našel kolizi asi u 2 69 hašovacích operací, než u 2 80 očekávaných pro 160bitovou hashovací funkci. V srpnu 2005 byl hlášen další útok na SHA-1, který by našel kolize při 2 63 operacích. Byly známy další teoretické slabiny SHA-1: a v únoru 2017 Google oznámil kolizi v SHA-1. Výzkumníci v oblasti zabezpečení doporučují, aby se nové aplikace těmto problémům mohly vyhnout pomocí pozdějších členů rodiny SHA, jako je SHA-2 , nebo pomocí technik, jako je randomizované hašování, které nevyžadují odolnost proti kolizi.

Úspěšný, praktický útok zlomil MD5 použitý v certifikátech pro Transport Layer Security v roce 2008.

Mnoho kryptografických hash je založeno na konstrukci Merkle -Damgård . Všechny kryptografické hashe, které přímo využívají plný výkon konstrukce Merkle -Damgård, jsou náchylné k útokům s prodloužením délky . Díky tomu jsou algoritmy MD5, SHA-1, RIPEMD-160, Whirlpool a SHA-256 / SHA-512 všechny náchylné k tomuto konkrétnímu útoku. SHA-3, BLAKE2, BLAKE3 a zkrácené varianty SHA-2 nejsou náchylné k tomuto typu útoku.

Útoky na hašovaná hesla

Běžným použitím hashů je ukládání dat pro ověření hesla. Řízený přístupový systém místo ukládání prostého textu uživatelských hesel ukládá hash hesla každého uživatele do souboru nebo databáze. Když někdo požádá o přístup, heslo, které odešle, je hašováno a porovnáno s uloženou hodnotou. Pokud je databáze ukradena (příliš častý výskyt), zloděj bude mít pouze hodnoty hash, nikoli hesla.

Většina lidí však volí hesla předvídatelným způsobem. Seznamy běžných hesel jsou hojně šířeny a mnoho hesel je dostatečně krátkých, aby bylo možné vyzkoušet všechny možné kombinace, pokud se používají rychlé hash. Použití kryptografické soli předchází některým útokům, jako je vytváření souborů předpočítačových hodnot hash, např. Duhových tabulek . Ale vyhledávání v řádu 100 miliard testů za sekundu je možné pomocí špičkových grafických procesorů , což umožňuje přímé útoky i přes sůl. Americký národní institut pro standardy a technologie doporučuje ukládání hesel pomocí speciálních hashů nazývaných klíčové derivační funkce (KDF), které byly vytvořeny za účelem zpomalení vyhledávání hrubou silou. Pomalé hashes patří PBKDF2 , bcrypt , scrypt , argon2 , balón a některé nedávné režimy Unix krypty . U KSF, které provádějí vícenásobné hashování za účelem pomalého provádění, NIST doporučuje počet iterací 10 000 nebo více.

Viz také

Reference

Citace

Prameny

externí odkazy