Jsem v oblasti kryptografie nová, zjistila jsem, že SHA-3
(Secure Hash Algorithm 3) je nejnovějším členem rodina standardů Secure Hash Algorithm, vydaná NIST.
Nedávno jsem ale viděl SHA-256
, ale ve srovnání s SHA-3
?
Komentáře
- SHA-256 je SHA-2 s 256bitovým výstupem. SHA-2 je předchůdce SHA-3. Sdílejí jen velmi málo za jménem.
- Ale název vystihuje podstatu. Pokud neděláte kryptografii, jedná se o zabezpečené hashovací algoritmy. Smlouva a bezpečnostní tvrzení jsou téměř totožné .
- @MeirMaor Vzhledem k existenci SHA-1, která se jeví jako odvážné prohlášení.
- @Maeher, SHA1 byl vytvořen se v podstatě stejnými požadavky, nyní víme, že ' nesplňují je. Přinejmenším požadavky na odolnost proti kolizi. Má také menší výstupní velikost, zatímco SHA3 může mít stejnou výstupní velikost jako SHA2.
Odpověď
Hlavní rozdíly mezi staršími SHA-256 rodiny SHA-2 FIPS 180 a novější SHA3-256 rodiny SHA-3 FIPS 202 , are:
-
Odolnost proti útokům na prodloužení délky. S SHA-256, vzhledem k $ H (m) $ , ale ne $ m $ , je snadné najít $ H (m \ mathbin \ | m „) $ pro určité přípony $ m“ $ . Není tomu tak u žádné z funkcí SHA-3.
To znamená, např. , že $ m \ mapsto H (k \ mathbin \ | m) $ není není zabezpečený ověřovací kód zprávy pod klíčem $ k $ , když $ H $ je SHA-256, protože znalost autentizátoru v jedné zprávě vám umožňuje vytvořit autentizátor v jiné. Vlastnost rozšíření délky částečně posunula vývoj HMAC.
Naproti tomu konstrukce předpony klíče je bezpečná jako MAC, když $ H $ je některá z funkcí SHA-3 – nebo některá z novějších funkcí SHA-2 SHA-512/224 a SHA-512/256. U SHA-224, což je v podstatě 224bitové zkrácení SHA-256 (ale s jiným IV), má protivník šanci $ 2 ^ {- 32} $ hádání vyřazených bitů výstupu v jedné zkušební verzi – malé, ale nezanedbatelné.
-
Výkon. Funkce SHA-2 – zejména SHA-512, SHA-512/224 a SHA-512/256 – mají obecně vyšší výkon než funkce SHA-3. Částečně to bylo z paranoie a politických důvodů v procesu návrhu SHA-3.
(V reakci na to byl jeden z finalistů SHA-3 vytočen do mnohem rychlejšího BLAKE2 , který je dnes také široce používán na internetu, a vítěz SHA-3 Keccak byl otočen do mnohem rychlejšího KangarooTwelve . )
-
Zcela odlišný vnitřní design. SHA-2 používá Davies –Meyerova struktura, instance struktury Merkle – Damgård, s blokovou šifrou (někdy nazývanou SHACAL-2) postavenou ze sítě ARX, jako je MD4; SHA-3 používá strukturu houby s permutací Keccak.
Zde není žádný uživatelsky viditelný rozdíl, ale změnilo to důvěru kryptografů v designy po mnoha DM / ARX designy založené na MD4 byly rozbité na konci 90. a na počátku 2000.
Historie. Došlo k dlouhé řadě hash funkcí standardizovaných NIST v FIPS 180, Secure Hash Standard a později FIPS 202¸ SHA-3 Standard: Permutation-Based a Extendable-Output Funkce Další podrobnosti a historie, včetně souvisejících hash funkcí MD4 a MD5, na nichž byly založeny SHA-0, SHA-1 a SHA-2 – ale ne SHA-3:
\ begin {equation} \ begin {array} {ccc} \ text {hash} & \ text {year} & \ text {sb. res.} & \ text {size (bits)} & \ text {design} & \ text {nefunkční?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {32bitový ARX DM} & 1995 \\ \ text {SHA-0 (SHA)} & 1993 & 80 & 160 & \ text {32 -bit ARX DM} & 1998 \\ \ text {MD5} & 1993 & 64 & 128 & \ text {32bitový ARX DM} & 2004 \\ \ text {SHA-1} & 1995 & 80 & 160 & \ text {32bitový ARX DM} & 2005 \\ \ hline \ text {SHA-256 (SHA-2)} & 2002 & 128 & 256 & \ text { 32bitový ARX DM} & \\ \ te xt {SHA-384 (SHA-2)} & 2002 & 192 & 384 & \ text {64-bit ARX DM} & \\ \ text {SHA-512 (SHA-2)} & 2002 & 256 & 512 & \ text {64-bit ARX DM} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {32bitový ARX DM} & \\ \ text {SHA-512/224} & 2012 & 112 & 224 & \ text {64bitový ARX DM} & \\ \ text {SHA-512/256 } & 2012 & 128 & 256 & \ text {64-bit ARX DM} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {64bitová houba Keccak} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {64bitová houba Keccak} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {64bitová houba Keccak} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {64bitová houba Keccak} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {64bitová houba Keccak} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {64bitová houba Keccak} \ end {pole} \ end {rovnice}
-
V roce 1993 NIST publikoval FIPS 180 , standard Secure Hash, definující SHA-0 , původně právě pojmenovaný SHA pro algoritmus Secure Hash, určené pro použití s nově publikovaným DSA. SHA-0 je jediná 160bitová hashovací funkce zaměřená na 80bitové zabezpečení proti kolizím (a nyní zcela nefunkční) na základě o relativně novém a rychlém designu MD4 v roce 1990.
-
V roce 1995 NIST tiše stáhl FIPS 180 a nahradil jej FIPS 180-1 definující SHA-1 , který se od SHA-0 liší zahrnutím jediného – rotace bitů. Stejně jako SHA-0 je i SHA-1 jediná 160bitová hashovací funkce zaměřená na 80bitové zabezpečení proti kolizím (a nyní zcela nefunkční).
K této změně nebylo poskytnuto žádné veřejné vysvětlení, ale nebylo to dlouho předtím, než Eli Biham zveřejnil diferenciální kryptoanalýzu a akademická komunita si uvědomila, že vylepšení NSA vůči DES S-boxům v sedmdesátých letech se skutečně zlepšilo zabezpečení (nevadí, že zmenšili 128bitovou velikost klíče Lucifera na 56 bitů pro DES, čímž došlo k úplnému zničení zabezpečení současně). Ve stejném roce Dobbertin zlomil MD4 [1] a příští rok vážně poškodil MD5 [2] . Nedlouho poté, v roce 1998, Florent Chabaud a Antoine Joux ohlásili $ 2 ^ {61} $ -cost kolizní útok na SHA-0 [3] .
-
V roce 2002 NIST publikoval FIPS 180-2 , definující SHA-2 , rodina souvisejících hash funkcí s různými velikostmi: SHA- 256, SHA-384 a SHA-512, pojmenované pro své výstupní velikosti a zaměřené na odolnost proti kolizi 112, 128, 192 a 256 bitů. SHA -2 funkce pokračovaly v konstrukčních principech MD4, MD5, SHA-0 a SHA-1, s více koly a větším stavem. Nedlouho poté, v roce 2004, tým Xiaoyun Wanga oznámil úplné kolize s MD5 a dalšími hashovacími funkcemi [4] a v roce 2005 publikoval $ 2 ^ {69} $ – nákladný útok na SHA-1 [5] , podstatně levnější než obecný. Vzhledem k tomu, že mnoho designů založených na MD4 již bylo přerušeno, všichni byli z tohoto designu nervózní, takže…
-
V roce 2007 zahájila společnost NIST soutěž SHA-3 o návrh nástupce SHA-2 pro případ, že by se design ukázal jako špatný. Soutěž by probíhala několik let.
-
Mezitím v roce 2008 NIST aktualizovala standard Secure Hash pomocí FIPS 180-3 , přidání SHA-224 do rodiny SHA-2 a poté v roce 2012 jej NIST znovu aktualizoval pomocí FIPS 180-4 (2012) a přidal SHA-512/224 a SHA-512/256 , rychlejší 256bitové a 384bitové hashovací funkce na 64bitových počítačích s odolností vůči útokům na prodloužení délky, které umožňují výpočet $ H (m \ mathbin \ | m „) $ zadáno $ H (m) $ a určité $ m“ $ bez vědět, $ m $ .
-
V roce 2013 byla uzavřena soutěž SHA-3 s Keccakem jako zvoleným vítězem NIST , které publikovali v FIPS 202 . SHA-3 zahrnuje čtyři hashovací funkce pevné velikosti, SHA3-224, SHA3-256, SHA3-384, SHA3-512 a dvě hash funkce s rozšiřitelným výstupem SHAKE128 a SHAKE256 , které dosahují až 128bitové nebo 256 -bitová úroveň zabezpečení, pokud je výstup dostatečně dlouhý.
Návrh SHA-3 je zcela odlišný od SHA-2, což dává jistotu, že kryptoanalytické průlomy v řadě návrhů založených na MD4 pravděpodobně nebudou mít vliv SHA-3, přestože deset let a půl po krveprolití na počátku dvacátých let tam nebyla včela Ani na SHA-2 není velký pokrok. Parametry vybrané pro funkce SHA-3 s pevnou velikostí byly z politických důvodů nějakým způsobem náhodně přepracovány [6] , takže funkce SHA-3 jako SHA3-256 jsou pomalejší, než je třeba, a obecně byste měli používat pouze SHAKE128 nebo SHAKE256.
Komentáře
- Když řekněte " úplně rozbitý ", pokud tomu rozumím, je možné vypočítat m1 , m2 tak, že H ( m1 ) = H ( m2 ). Nikomu se však dosud nepodařilo, vzhledem k pevné zprávě M , vypočítat zprávu m (nerovná se M ) tak, aby H ( M ) = H ( m ).
- @MartinBonner Ano, ' mluvím o odolnosti proti kolizi tady, proto jsou dvě slova těsně před „a nyní úplně rozbitá“ „kolizní bezpečnost“. ' se zde nezabývám odporem preimage, protože bezpečné použití funkce hash odolné proti preimage , ale ne odolné proti kolizi je velmi jemné a ' se snažím nenechávat pasti neopatrným čtenářům ; Stav MD5 ' s preimage odporu jinde řeším, když ' s konkrétně požádán.
Odpověď
Rozdíl mezi SHA256 a SHA3
Hlavním rozdílem SHA256 a SHA3 je jejich návrh interního algoritmu .
SHA2 (a SHA1) jsou vytvářeny pomocí struktury Merkle – Damgård .
SHA3 je naopak postaven pomocí Funkce Sponge a patří do rodiny Keccaků.
Název může být zavádějící, když si myslí, že SHA3 ve srovnání s SHA2 je jen " novější " verze algoritmu. Jak řekl SEJPM: " […] Sdílejí za jménem jen velmi málo." Název je právě uveden z NIST a znamená " Bezpečný hashovací algoritmus ", rodina oficiálních standardů.
I když můžete vytvořit MAC s SHA256 i SHA3 se SHA3 MAC používá snadněji (viz komentář fgrieu níže).
Výstup
SHA256 vydává 256bitový hash.
SHA3 umožňuje výstupy
- 224 bitů
- 256 bitů
- 384 bitů
- 512bitový
hash, ačkoli varianty SHA2 (SHA256 je jednou z těchto variant) také umožňuje tyto délky.
Algoritmy SHA3 lze upravit na " SHAKE " algoritmy, které umožňují výstup libovolné délky. Další informace najdete v tato dříve položená otázka .
Zabezpečení
Haše, které využívají pouze strukturu Merkle – Damgård a vytvářejí své plné l (nebo téměř plný) stav je zranitelný vůči útokům na prodloužení délky .
Algoritmy SHAKE jsou také užitečné pro Optimální asymetrické šifrovací polstrování .
Přímé srovnání si můžete prohlédnout zde (wikipedia) .
Komentáře
- Přísně vzato, " Hash, které využívají Merkle – Damg å druhá struktura je zranitelná vůči útokům na rozšíření délky " je nesprávná. Counterexamples include SHA-512/256 and SHA-384, because they do not output their full state. Dalším je SHA-256d, definovaný jako SHA-256d (m) = SHA-256 (SHA-256 (m)), protože skrývá stav prvního hash. Platí, že " hash, který pouze využívá strukturu Merkle – Damg å rd a výstup jejich úplného (nebo téměř úplného) stavu jsou zranitelné vůči útokům na prodloužení délky ". ' existuje další rozdíl mezi SHA-2 a SHA-3: pozdější je jednodušší použít jako MAC.
- Co tím myslíte " jednodušší použití " jako MAC? Bezpečnější / rychlejší / implementace?
- Můžeme vytvořit MAC s bezpečnostním argumentem z SHA-3 jako $ \ text {SHA-3} (K \ | M) $ (pro určitou délku $ K $ to záleží na variantě SHA-3 a mělo by to být uh, nevím ' jistě); když nemáme ' takový argument s SHA-2 (i když vlastnost prodloužení délky neplatí). Viz část 5.1.12 části Kryptografické funkce houba .