SHA-2 - SHA-2
[Hashovací algoritmy] | |
---|---|
Koncepty | |
hashovací funkce · SHA · DSA | |
Hlavní standardy | |
SHA-0 · SHA-1 · SHA-2 · SHA-3 |
Všeobecné | |
---|---|
Návrháři | Národní bezpečnostní agentura |
Nejprve publikováno | 2001 |
Série | (SHA-0 ), SHA-1, SHA-2, SHA-3 |
Osvědčení | FIPS PUB 180-4, CRYPTREC, NESSIE |
Detail | |
Velikosti trávení | 224, 256, 384 nebo 512 bitů |
Struktura | Konstrukce Merkle – Damgård s Davies – Meyerova kompresní funkce |
Náboje | 64 nebo 80 |
Nejlepší veřejnost dešifrování | |
Zlomí se útok z roku 2011 odpor obrazu pro 57 z 80 kol SHA-512 a 52 ze 64 kol pro SHA-256.[1] Pseudo-kolizní útok až na 46 kol SHA-256.[2] SHA-256 a SHA-512 jsou náchylné k útoky na prodloužení délky. Uhádnutím skryté části stavu budou útoky na prodloužení délky na SHA-224 a SHA-384 úspěšné s pravděpodobností 2−(256−224) = 2−32 > 2−224 a 2−(512−384) = 2−128 > 2−384 resp. |
SHA-2 (Secure Hash Algorithm 2) je sada kryptografické hashovací funkce navrženo Spojenými státy Národní bezpečnostní agentura (NSA) a poprvé publikováno v roce 2001.[3][4] Jsou postaveny pomocí Struktura Merkle – Damgård, od a funkce jednosměrné komprese sám postaven pomocí Davies – Meyerova struktura od specializovaného bloková šifra.
SHA-2 obsahuje významné změny oproti svému předchůdci, SHA-1. Rodina SHA-2 se skládá ze šesti hash funkcí s trávení (hodnoty hash), které jsou 224, 256, 384 nebo 512 bitů: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256. SHA-256 a SHA-512 jsou nové hashovací funkce počítané s 32bitovými a 64bitovými slovy. Používají různá množství posunu a aditivní konstanty, ale jejich struktury jsou jinak prakticky identické, liší se pouze počtem nábojů. SHA-224 a SHA-384 jsou zkrácené verze SHA-256 a SHA-512, počítané s různými počátečními hodnotami. SHA-512/224 a SHA-512/256 jsou také zkrácené verze SHA-512, ale počáteční hodnoty jsou generovány pomocí metody popsané v Federální standardy pro zpracování informací (FIPS) PUB 180-4.
SHA-2 byl poprvé publikován Národní institut pro standardy a technologie (NIST) jako americký federální standard (FIPS). Rodina algoritmů SHA-2 je patentována v americkém patentu 6829355.[5] USA zveřejnily patent pod a bez licenčních poplatků licence.[6]
V současné době jsou nejlepší veřejné útoky zlomené odpor obrazu za 52 ze 64 kol SHA-256 nebo 57 z 80 kol SHA-512 a odolnost proti kolizi pro 46 ze 64 kol SHA-256.[1][2]
Standard hash

Bitová rotace používá pro SHA-512 různé konstanty. Uvedená čísla platí pro SHA-256.
Červená je doplněk modulo 232 pro SHA-256 nebo 264 pro SHA-512.
S vydáním FIPS PUB 180-2 přidal NIST další tři hashovací funkce v rodině SHA. Algoritmy jsou souhrnně označovány jako SHA-2, pojmenované podle jejich délky souhrnu (v bitech): SHA-256, SHA-384 a SHA-512.
Algoritmy byly poprvé publikovány v roce 2001 v návrhu FIPS PUB 180-2, kdy byly přijaty veřejné recenze a komentáře. V srpnu 2002 se novinkou stal FIPS PUB 180-2 Secure Hash Standard, nahrazující FIPS PUB 180-1, který byl vydán v dubnu 1995. Aktualizovaný standard zahrnoval původní algoritmus SHA-1 s aktualizovanou technickou notací konzistentní s popisem vnitřního fungování rodiny SHA-2.[4]
V únoru 2004 bylo zveřejněno oznámení o změně pro FIPS PUB 180-2, specifikující další variantu SHA-224, definovanou tak, aby odpovídala délce klíče dvou klíčů Triple DES.[7] V říjnu 2008 byl standard aktualizován v FIPS PUB 180-3, včetně SHA-224 z oznámení o změně, ale jinak standard neprovedl žádné zásadní změny. Primární motivací pro aktualizaci standardu bylo přemístění bezpečnostních informací o hašovacích algoritmech a doporučení pro jejich použití do speciálních publikací 800-107 a 800-57.[8][9][10] Ze standardu byly také odstraněny podrobné údaje o testu a ukázkové zprávy o zprávě, které byly poskytnuty jako samostatné dokumenty.[11]
V lednu 2011 NIST zveřejnil SP800-131A, který specifikoval přechod z tehdy minimálního 80bitového zabezpečení (poskytovaného SHA-1) povoleného pro použití federální vládou do konce roku 2013, na 112bitové zabezpečení (za předpokladu SHA-2), což je jak minimální požadavek (od roku 2014), tak doporučený úroveň zabezpečení (počínaje datem zveřejnění v roce 2011).[12]
V březnu 2012 byl standard aktualizován v FIPS PUB 180-4, přidáním hashovacích funkcí SHA-512/224 a SHA-512/256 a popisem metody pro generování počátečních hodnot pro zkrácené verze SHA-512. Navíc omezení na polstrování vstupní data před výpočtem hash byla odstraněna, což umožňuje vypočítat hash data současně s generováním obsahu, jako je video nebo audio kanál v reálném čase. Před hašovacím výstupem musí dojít k odsazení posledního datového bloku.[13]
V červenci 2012 NIST revidoval SP800-57, který poskytuje pokyny pro správu kryptografických klíčů. Publikace po roce 2013 neumožňovala vytváření digitálních podpisů s hashovým zabezpečením nižším než 112 bitů. Předchozí revize z roku 2007 stanovila mezní hodnotu na konec roku 2010.[10] V srpnu 2012 NIST revidoval SP800-107 stejným způsobem.[9]
The Soutěž o hashovací funkci NIST vybral novou hashovací funkci, SHA-3, v roce 2012.[14] Algoritmus SHA-3 není odvozen od SHA-2.
Aplikace
Funkce hash SHA-2 je implementována v některých široce používaných bezpečnostních aplikacích a protokolech, včetně TLS a SSL, PGP, SSH, S / MIME, a IPsec.
SHA-256 se účastní procesu autentizace Debian softwarové balíčky[15] a v DKIM standard pro podepisování zpráv; SHA-512 je součástí systému pro autentizaci archivního videa z Mezinárodní trestní tribunál rwandské genocidy.[16] SHA-256 a SHA-512 jsou navrženy pro použití v DNSSEC.[17] Prodejci systémů Unix a Linux přecházejí k používání 256- a 512bitového SHA-2 pro bezpečné hašování hesel.[18]
Několik kryptoměny jako Bitcoin použijte SHA-256 k ověření transakcí a výpočtu doklad o práci[19] nebo důkaz o vkladu.[20] Povstání ASIC Akcelerační čipy SHA-2 vedly k použití scrypt - na základě schémat důkazů o práci.
SHA-1 a SHA-2 jsou Zabezpečené hashovací algoritmy zákon vyžaduje pro použití v určitých Vláda USA aplikace, včetně použití v rámci jiných kryptografických algoritmů a protokolů, pro ochranu citlivých neutajovaných informací. FIPS PUB 180-1 také podporoval přijetí a použití SHA-1 soukromými a komerčními organizacemi. SHA-1 je vyřazen pro většinu vládních použití; americký národní institut pro standardy a technologie říká: „Federální agentury by měl přestat používat SHA-1 pro ... aplikace, které vyžadují odolnost proti kolizi, jakmile to bude praktické, a musí pro tyto aplikace po roce 2010 používat rodinu hash funkcí SHA-2 “(důraz v originále).[21] Směrnice NIST, že americké vládní agentury musí po roce 2010 přestat používat SHA-1[22] doufalo se, že urychlí migraci z SHA-1.
Funkce SHA-2 nebyly zpočátku rychle přijaty, navzdory lepšímu zabezpečení než SHA-1. Mezi důvody může patřit nedostatečná podpora SHA-2 v systémech se systémem Windows XP SP2 nebo starším[23] a nedostatek vnímané naléhavosti, protože srážky SHA-1 ještě nebyly nalezeny. The Google Chrome tým oznámil plán, aby jejich webový prohlížeč postupně přestal ctít certifikáty TLS závislé na SHA-1 v období od konce roku 2014 do začátku roku 2015.[24][25][26] Podobně Microsoft oznámil[27] že internet Explorer a Okraj přestane od února 2017 ctít veřejné certifikáty TLS podepsané SHA-1. Mozilla deaktivoval SHA-1 počátkem ledna 2016, ale musel jej dočasně znovu povolit prostřednictvím a Firefox aktualizace, po problémech s webovými uživatelskými rozhraními některých modelů routerů a bezpečnostní zařízení.[28]
Kryptoanalýza a validace
Pro hashovací funkci, pro kterou L je počet bity v přehled zpráv, vyhledání zprávy, která odpovídá danému přehledu zpráv, lze vždy provést pomocí a hrubou silou hledat v 2L hodnocení. Tomu se říká a preimage útok a může nebo nemusí být praktické v závislosti na L a konkrétní výpočetní prostředí. Druhým kritériem je nalezení dvou různých zpráv, které produkují stejný přehled zpráv, známý jako srážka, vyžaduje v průměru pouze 2L/2 hodnocení pomocí a narozeninový útok.
Některé z aplikací, které používají kryptografické hashe, například úložiště hesel, jsou ovlivněny pouze minimálně kolizní útok. Vytvoření hesla, které funguje pro daný účet, vyžaduje útok preimage, stejně jako přístup k hash původního hesla (obvykle v stín
soubor), který může, ale nemusí být triviální. Útoky neumožňují obrácení šifrování hesla (např. Získání hesla k pokusu proti účtu uživatele jinde). (Ani bezpečný hash hesla však nemůže zabránit útokům hrubou silou na slabá hesla.)
V případě podepisování dokumentu by útočník nemohl jednoduše předstírat podpis z existujícího dokumentu - útočník by musel předložit pár dokumentů, jeden neškodný a jeden škodlivý, a získat držitel soukromého klíče k podpisu neškodného dokumentu. Existují praktické okolnosti, za kterých je to možné; do konce roku 2008 bylo možné vytvářet padělané SSL certifikáty pomocí MD5 kolize, kterou by akceptovaly široce používané webové prohlížeče.[29]
Zvýšený zájem o kryptografickou hashovou analýzu během soutěže SHA-3 přinesl několik nových útoků na rodinu SHA-2, z nichž nejlepší jsou uvedeny v tabulce níže. Prakticky složité jsou pouze kolizní útoky; žádný z útoků se nevztahuje na plnou kulatou hashovací funkci.
Na FSE 2012, výzkumní pracovníci v Sony přednesl návrh naznačující, že útoky pseudo-kolize by mohly být rozšířeny na 52 kol na SHA-256 a 57 kol na SHA-512 na základě biclique útok pseudo-preimage.[30]
Publikoval v | Rok | Metoda útoku | Záchvat | Varianta | Náboje | Složitost |
---|---|---|---|---|---|---|
Nové kolize útočí proti Až 24 kroků SHA-2[31] | 2008 | Deterministický | Kolize | SHA-256 | 24/64 | 228.5 |
SHA-512 | 24/80 | 232.5 | ||||
Preimages for step-reduced SHA-2[32] | 2009 | Setkejte se uprostřed | Preimage | SHA-256 | 42/64 | 2251.7 |
43/64 | 2254.9 | |||||
SHA-512 | 42/80 | 2502.3 | ||||
46/80 | 2511.5 | |||||
Pokročilé setkávání uprostřed preimage útoky[33] | 2010 | Setkejte se uprostřed | Preimage | SHA-256 | 42/64 | 2248.4 |
SHA-512 | 42/80 | 2494.6 | ||||
Diferenciální útok vyššího řádu na redukovaném SHA-256[2] | 2011 | Rozdíl | Pseudo-kolize | SHA-256 | 46/64 | 2178 |
33/64 | 246 | |||||
Bicliques for Preimages: Attacks on Skein-512 a rodina SHA-2[1] | 2011 | Biclique | Preimage | SHA-256 | 45/64 | 2255.5 |
SHA-512 | 50/80 | 2511.5 | ||||
Pseudo-preimage | SHA-256 | 52/64 | 2255 | |||
SHA-512 | 57/80 | 2511 | ||||
Zlepšení místních kolizí: Nové Útoky na redukovaný SHA-256[34] | 2013 | Rozdíl | Kolize | SHA-256 | 31/64 | 265.5 |
Pseudo-kolize | SHA-256 | 38/64 | 237 | |||
Rozvětvená heuristika v diferenciální kolizi Hledejte pomocí aplikací na SHA-512[35] | 2014 | Heuristický diferenciál | Pseudo-kolize | SHA-512 | 38/80 | 240.5 |
Analýza SHA-512/224 a SHA-512/256[36] | 2016 | Rozdíl | Kolize | SHA-256 | 28/64 | praktický |
SHA-512 | 27/80 | praktický | ||||
Pseudo-kolize | SHA-512 | 39/80 | praktický |
Oficiální validace
Implementace všech bezpečnostních funkcí schválených FIPS lze oficiálně ověřit prostřednictvím Program CMVP, společně provozovaný Národní institut pro standardy a technologie (NIST) a Zřízení komunikační bezpečnosti (CSE). Pro neformální ověření je na webu NIST k dispozici balíček ke generování vysokého počtu testovacích vektorů; výsledné ověření však nenahrazuje formální ověření CMVP, které je pro určité aplikace vyžadováno zákonem.
Od prosince 2013[Aktualizace], existuje více než 1300 validovaných implementací SHA-256 a více než 900 SHA-512, přičemž pouze 5 z nich je schopno zpracovávat zprávy s délkou v bitech, ne násobkem osmi, přičemž podporuje obě varianty.[37]
Testovací vektory
Hodnoty hash prázdného řetězce (tj. Vstupního textu s nulovou délkou).
SHA224 ("")0x d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42fSHA256 ("")0x e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855SHA384 ("")0x 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95bSHA512 ("")0x cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3eSHA512 / 224 ("")0x 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4SHA512 / 256 ("")0x c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a
I malá změna ve zprávě bude mít (s naprostou pravděpodobností) za následek většinou jiný hash, kvůli lavinový efekt. Například přidání tečky na konec následující věty změní téměř polovinu (111 z 224) bitů v hash:
SHA224 („Rychlá hnědá liška přeskočí na líného psa ")0x 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525SHA224 („Rychlá hnědá liška přeskočí na líného psa.")0x 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c
Pseudo kód
Pseudo kód pro algoritmus SHA-256 následuje. Všimněte si velkého nárůstu míchání mezi kousky w [16..63]
slova ve srovnání s SHA-1.
Poznámka 1: Všechny proměnné jsou 32bitová celá čísla bez znaménka a sčítání se počítá modulo 232Poznámka 2: Pro každé kolo existuje jedna kulatá konstanta k [i] a jeden záznam v poli plánu zpráv w [i], 0 ≤ i ≤ 63Poznámka 3: Funkce komprese používá 8 pracovních proměnných, a až hPoznámka 4: Konvence Big-endian se používá při vyjadřování konstant v tomto pseudokódu, a při analýze dat bloku zpráv z bytů na slova, například první slovo vstupní zprávy „abc“ po odsazení je 0x61626380Inicializovat hodnoty hash:(prvních 32 bitů dílčí části druhé odmocniny prvních 8 prvočísel 2..19):h0: = 0x6a09e667h1: = 0xbb67ae85h2: = 0x3c6ef372h3: = 0xa54ff53ah4: = 0x510e527fh5: = 0x9b05688ch6: = 0x1f83d9abh7: = 0x5be0cd19Inicializovat pole kulatých konstant:(prvních 32 bitů dílčí části kořenů krychle prvních 64 prvočísel 2..311):k [0..63]: = 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f , 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624 , 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2Předběžné zpracování (polstrování):začněte s původní zprávou o délce L bitů přidejte jeden bit 1 bitappend K '0', kde K je minimální počet> = 0, takže L + 1 + K + 64 je násobek 512 připojení L jako 64 bitů big-endian integer, takže celková délka po zpracování je násobkem 512 bitůZpracovat zprávu v následujících 512bitových blocích:rozdělit zprávu na 512bitové blokypro každý blok vytvoří pole záznamu zpráv se 64 vstupy w [0..63] 32bitových slov (Počáteční hodnoty ve w [0..63] nezáleží, tolik implementací je zde vynuluje) zkopírujte blok na prvních 16 slov w [0..15] pole plánu zpráv Rozšiřte prvních 16 slov na zbývajících 48 slov w [16..63] pole plánu zpráv: pro i z 16 až 63 s0: = (w [i-15] otočit doprava 7) xor (w [i-15] otočit doprava 18) xor (w [i-15] posun práv 3) s1: = (w [i- 2] otočit doprava 17) xor (w [i- 2] otočit doprava 19) xor (w [i- 2] posun práv 10) w [i]: = w [i-16] + s0 + w [i-7] + s1 Inicializujte pracovní proměnné na aktuální hodnotu hash: a: = h0 b: = h1 c: = h2 d: = h3 e: = h4 f: = h5 g: = h6 h: = h7 Hlavní smyčka kompresní funkce: pro i z 0 až 63 S1: = (např otočit doprava 6) xor (E otočit doprava 11) xor (E otočit doprava 25) ch: = (např a F) xor ((ne E) a g) temp1: = h + S1 + ch + k [i] + w [i] S0: = (a otočit doprava 2) xor (A otočit doprava 13) xor (A otočit doprava 22) maj: = (a a b) xor (A a C) xor (nar a c) temp2: = S0 + maj h: = g g: = f f: = e e: = d + temp1 d: = c c: = b b: = a a: = temp1 + temp2 Přidejte komprimovaný blok k aktuální hodnotě hash: h0: = h0 + a h1: = h1 + b h2: = h2 + c h3: = h3 + d h4: = h4 + e h5: = h5 + f h6: = h6 + g h7: = h7 + hVytvořte konečnou hodnotu hash (big-endian):digest: = hash: = h0 připojit h1 připojit h2 připojit h3 připojit h4 připojit h5 připojit h6 připojit h7
Výpočet ch
a maj
hodnoty lze optimalizovat stejným způsobem jak je popsáno pro SHA-1.
SHA-224 je identický s SHA-256, kromě toho:
- počáteční hodnoty hash
h0
přesh7
jsou různé a - výstup je konstruován vynecháním
h7
.
Počáteční hodnoty hash SHA-224 (ve velkém endianu):(Druhých 32 bitů zlomkových částí druhé odmocniny 9. až 16. prvočísel 23..53)h [0..7]: = 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
SHA-512 má stejnou strukturu jako SHA-256, ale:
- zpráva je rozdělena na 1024bitové bloky,
- počáteční hodnoty hash a kulaté konstanty jsou rozšířeny na 64 bitů,
- existuje 80 kol namísto 64,
- pole plánu zpráv w má 80 64bitových slov namísto 64 32bitových slov,
- pro rozšíření pole plánu zpráv w je smyčka od 16 do 79 místo od 16 do 63,
- kulaté konstanty jsou založeny na prvních 80 prvočíslech 2..409,
- velikost slova použitá pro výpočty je 64 bitů dlouhá,
- připojená délka zprávy (před předběžným zpracováním), v bity, je 128bitové celé číslo big-endian a
- použitá množství posunu a otáčení se liší.
Počáteční hodnoty hash SHA-512 (ve big-endianu):h [0..7]: = 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, 0x510e527fade682d1, 0x9b05688c2b3e6c1f9, 0b0b0SHA-512 kulaté konstanty:k [0..79]: = [0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654 BE30, 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817]SHA-512 Sum & Sigma:S0: = (a otočit doprava 28) xor (A otočit doprava 34) xor (A otočit doprava 39) S1: = (např otočit doprava 14) xor (E otočit doprava 18) xor (E otočit doprava 41)s0: = (w [i-15] otočit doprava 1) xor (w [i-15] otočit doprava 8) xor (w [i-15] posun práv 7) s1: = (w [i-2] otočit doprava 19) xor (w [i-2] otočit doprava 61) xor (w [i-2] posun práv 6)
SHA-384 je totožný s SHA-512, kromě toho:
- počáteční hodnoty hash
h0
přesh7
jsou různé (převzaty z 9. až 16. prvočísla) a - výstup je konstruován vynecháním
h6
ah7
.
Počáteční hodnoty hash SHA-384 (ve big-endianu):h [0..7]: = 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, 0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0b4
SHA-512 / t je totožný s SHA-512 kromě toho, že:
- počáteční hodnoty hash
h0
přesh7
jsou dány Funkce generace SHA-512 / t IV, - výstup je sestaven zkrácením zřetězení
h0
přesh7
na t bity, - t rovno 384 není povoleno, místo toho by měl být použit SHA-384, jak je uvedeno, a
- t hodnoty 224 a 256 jsou zvláště uváděny jako schválené.
The Funkce generace SHA-512 / t IV hodnotí a upravený SHA-512 na řetězci ASCII „SHA-512 /t", nahrazeno desetinným vyjádřením t. The upravený SHA-512 je stejný jako SHA-512 kromě jeho počátečních hodnot h0
přes h7
byli každý XORed s hexadecimální konstantou 0xa5a5a5a5a5a5a5a5
.
Ukázkovou implementaci C pro rodinu hash funkcí SHA-2 najdete v RFC 6234.
Porovnání funkcí SHA
V následující tabulce vnitřní stav znamená „interní hash součet“ po každé kompresi datového bloku.
Algoritmus a varianta | Výstupní velikost (bity) | Velikost vnitřního stavu (bity) | Velikost bloku (bity) | Náboje | Operace | Zabezpečení (v bitů) proti kolizní útoky | Kapacita proti útoky na prodloužení délky | Výkon na Skylake (medián cpb )[38] | Nejprve publikováno | ||
---|---|---|---|---|---|---|---|---|---|---|---|
dlouhé zprávy | 8 bytů | ||||||||||
MD5 (jako reference) | 128 | 128 (4 × 32) | 512 | 64 | A Xor, Rot, Přidat (mod 232), Nebo | ≤18 (nalezeny kolize)[39] | 0 | 4.99 | 55.00 | 1992 | |
SHA-0 | 160 | 160 (5 × 32) | 512 | 80 | A Xor, Rot, Přidat (mod 232), Nebo | <34 (nalezeny kolize) | 0 | ≈ SHA-1 | ≈ SHA-1 | 1993 | |
SHA-1 | <63 (nalezeny kolize)[40] | 3.47 | 52.00 | 1995 | |||||||
SHA-2 | SHA-224 SHA-256 | 224 256 | 256 (8 × 32) | 512 | 64 | A Xor, Rot, Přidat (mod 232), Nebo Shr | 112 128 | 32 0 | 7.62 7.63 | 84.50 85.25 | 2004 2001 |
SHA-384 SHA-512 | 384 512 | 512 (8 × 64) | 1024 | 80 | A Xor, Rot, Přidat (mod 264), Nebo Shr | 192 256 | 128 (≤ 384) 0[41] | 5.12 5.06 | 135.75 135.50 | 2001 | |
SHA-512/224 SHA-512/256 | 224 256 | 112 128 | 288 256 | ≈ SHA-384 | ≈ SHA-384 | 2012 | |||||
SHA-3 | SHA3-224 SHA3-256 SHA3-384 SHA3-512 | 224 256 384 512 | 1600 (5 × 5 × 64) | 1152 1088 832 576 | 24[42] | A Xor, Rot, ne | 112 128 192 256 | 448 512 768 1024 | 8.12 8.59 11.06 15.88 | 154.25 155.50 164.00 164.00 | 2015 |
OTŘEŠTE 128 OTŘES256 | d (libovolný) d (libovolný) | 1344 1088 | min (d/2, 128) min (d/2, 256) | 256 512 | 7.08 8.59 | 155.25 155.50 |
Ve sloupci bitových operací znamená „Rot“ otočit bez nošení a „Shr“ znamená správný logický posun. Všechny tyto algoritmy používají modulární doplněk nějakým způsobem kromě SHA-3.
Podrobnější měření výkonu na moderních procesorových architekturách uvádí následující tabulka.
Architektura CPU | Frekvence | Algoritmus | Velikost slova (bity) | Cykly / bajt x86 | MiB / s x86 | Cykly / bajt x86-64 | MiB / s x86-64 |
---|---|---|---|---|---|---|---|
Intel Ivy Bridge | 3,5 GHz | SHA-256 | 32 | 16.80 | 199 | 13.05 | 256 |
SHA-512 | 64 | 43.66 | 76 | 8.48 | 394 | ||
AMD Piledriver APU | 3,8 GHz | SHA-256 | 32 | 22.87 | 158 | 18.47 | 196 |
SHA-512 | 64 | 88.36 | 41 | 12.43 | 292 |
Čísla výkonu s označením „x86“ byla spuštěna pomocí 32bitového kódu na 64bitových procesorech, zatímco čísla „x86-64“ jsou nativní 64bitový kód. Zatímco SHA-256 je navržen pro 32bitové výpočty, těží z kódu optimalizovaného pro 64bitové procesory na architektuře x86. 32bitové implementace SHA-512 jsou výrazně pomalejší než jejich 64bitové protějšky. Varianty obou algoritmů s různými velikostmi výstupu budou fungovat podobně, protože funkce rozšíření a komprese zpráv jsou identické a liší se pouze počáteční hodnoty hash a velikost výstupu. Nejlepší implementace MD5 a SHA-1 provádějí v moderních procesorech mezi 4,5 a 6 cykly na bajt.
Testování provedla University of Illinois v Chicagu na jejich systému hydra8 s procesorem Intel Xeon E3-1275 V2 s taktem 3,5 GHz a na jejich systému hydra9 s AMD A10-5800K APU s taktem 3,8 GHz.[43] Výše uvedené rychlosti cyklů na bajt představují střední výkon algoritmu stráveného zprávou 4096 bajtů pomocí kryptografického srovnávacího softwaru SUPERCOP.[44] Výkon MiB / s je extrapolován z hodinové rychlosti CPU na jednom jádře; skutečný výkon se bude lišit v důsledku řady faktorů.
Implementace
Níže je uveden seznam kryptografických knihoven, které podporují SHA-2:
- Botan
- Skákací hrad
- Kryptlib
- Crypto ++
- Libgcrypt
- Mbed TLS[45][46]
- libsodium
- Kopřiva
- LibreSSL
- OpenSSL
- GnuTLS
- wolfSSL
Hardwarovou akceleraci zajišťují následující rozšíření procesoru:
- Rozšíření Intel SHA: K dispozici u některých procesorů Intel a AMD x86.
- VIA PadLock
- ARMv8 kryptografická rozšíření [47]
Viz také
- Porovnání kryptografických hashovacích funkcí
- Porovnání kryptografických knihoven
- Shrnutí zabezpečení funkce hash
- Hashcash
- HMAC
- Mezinárodní asociace pro kryptologický výzkum (IACR)
sha1sum
(sha224sum
,sha256sum
,sha384sum
asha512sum
) příkazy- Důvěryhodné časové razítko
Reference
- ^ A b C Dmitrij Khovratovich, Christian Rechberger a Alexandra Savelieva (2011). „Bicliques for Preimages: Attacks on Skein-512 and the SHA-2 family“ (PDF). Archiv ePrint kryptologie IACR. 2011:286.
- ^ A b C Mario Lamberger a Florian Mendel (2011). „Diferenciální útok vyššího řádu při sníženém SHA-256“ (PDF). Archiv ePrint kryptologie IACR. 2011:37.
- ^ „Na rodinu zabezpečeného algoritmu hash“ (PDF). Archivovány od originál (PDF) dne 30.03.2016.
- ^ A b Oznámení o federálním registru 02-21599, Oznamujeme schválení publikace FIPS 180-2
- ^ USA 6829355
- ^ „Licenční prohlášení k americkému patentu 6829355“. Citováno 2008-02-17. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ „FIPS 180-2 se změnou 1“ (PDF). csrc.nist.gov.
- ^ Oznámení federálního registru E8-24743, Oznamujeme schválení publikace FIPS 180-3
- ^ A b FIPS SP 800-107 Doporučení pro aplikace využívající schválené hashovací algoritmy
- ^ A b FIPS SP 800-57 Doporučení pro správu klíčů: Část 1: Obecně
- ^ "NIST.gov - Divize počítačové bezpečnosti - Centrum zabezpečení počítačové bezpečnosti".
- ^ FIPS SP 800-131A Doporučení pro přechod na používání kryptografických algoritmů a délek klíčů
- ^ Oznámení o federálním registru 2012-5400, Oznamujeme schválení publikace FIPS 180-4
- ^ „NIST vybrala vítěze soutěže Secure Hash Algorithm (SHA-3)“. Citováno 24. února 2015.
- ^ „Debian codebase v Google Code“. Archivovány od originál 7. listopadu 2011. Citováno 2011-11-08.
- ^ John Markoff, Nástroj pro ověřování digitálních záznamů, i když se technologie posouvá, New York Times, 26. ledna 2009
- ^ RFC 5702,RFC-Editor.org
- ^ Ulrich Drepper, Unixová krypta s SHA-256/512
- ^ Bitcoin, přebytek. „Bitcoin neztrácí energii“. Přebytek bitcoinů. Citováno 2020-04-20.
- ^ „Co je SHA-256 a jak to souvisí s bitcoiny? - Mycryptopedia“. Mycryptopedia. 2017-09-21. Citováno 2018-09-17.
- ^ National Institute on Standards and Technology Computer Security Resource Center, Zásady NIST týkající se hashovacích funkcí Archivováno 09.06.2011 na Wayback Machine, přístup 29. března 2009.
- ^ „Secure Hashing“. NIST. Archivovány od originál dne 25.06.2011. Citováno 2010-11-25.
- ^ „Přehled aktualizace Windows XP Service Pack 3“ (PDF). Společnost Microsoft. Archivovány od originál (PDF) dne 30. května 2008.
- ^ Blog Chromium, 5. září 2014, Postupně končí SHA-1
- ^ Eric Mill. „SHAAAAAAAAAAAAAA“. SHAAAAAAAAAAAAAA.com.
- ^ Filippo Valsorda, Nejčastější dotazy k neoficiálnímu ukončení podpory SHA1 Chrome
- ^ „Aktualizace našeho plánu ukončení podpory SHA-1 - blog Microsoft Edge Dev Blog blogu Microsoft Edge Dev“. blogs.windows.com. Citováno 2016-11-28.
- ^ Fabian A. Scherschel, Heise Zabezpečení: Firefox: Mozilla schaltet SHA-1 ab ... und direkt wieder an (Němec)
- ^ Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, MD5 je dnes považován za škodlivý: Vytvoření nepoctivého certifikátu CA., přístup 29. března 2009.
- ^ Ji Li, Takanori Isobe a Kyoji Shibutani, Sony China Research Laboratory a Sony Corporation, Převod Meet-in-the-Middle Preimage Attack na Pseudo Collision Attack: Aplikace na SHA-2
- ^ Somitra Kumar Sanadhya & Palash Sarkar (2008). „Nové kolize útočí až na 24stupňový SHA-2“ (PDF). Archiv ePrint kryptologie IACR. 2008:270.
- ^ Kazumaro Aoki; Jian Guo; Krystian Matusiewicz; Yu Sasaki & Lei Wang (2009). Preimages for step-reduced SHA-2. Pokroky v kryptologii - ASIACRYPT 2009. Přednášky z informatiky. 5912. Springer Berlin Heidelberg. 578–597. doi:10.1007/978-3-642-10366-7_34. ISBN 978-3-642-10366-7. ISSN 0302-9743.
- ^ Jian Guo; San Ling; Christian Rechberger & Huaxiong Wang (2010). Pokročilé útoky typu meet-in-the-middle preimage: První výsledky na plném Tigeru a vylepšené výsledky na MD4 a SHA-2 (PDF). Pokroky v kryptologii - ASIACRYPT 2010. Přednášky z informatiky. 6477. Springer Berlin Heidelberg. 56–75. doi:10.1007/978-3-642-17373-8_4. ISBN 978-3-642-17373-8. ISSN 0302-9743.
- ^ Florian Mendel; Tomislav Nad; Martin Schläffer (2013). Zlepšení místních kolizí: Nové útoky na redukovaný SHA-256. Pokroky v kryptologii - EUROCRYPT 2013. Přednášky z informatiky. 7881. Springer Berlin Heidelberg. 262–278. doi:10.1007/978-3-642-38348-9_16. ISBN 978-3-642-38348-9. ISSN 0302-9743.
- ^ Maria Eichlseder a Florian Mendel a Martin Schläffer (2014). „Větvení heuristiky při vyhledávání diferenciální kolize s aplikacemi na SHA-512“ (PDF). Archiv ePrint kryptologie IACR. 2014:302.
- ^ Christoph Dobraunig; Maria Eichlseder & Florian Mendel (2016). „Analýza SHA-512/224 a SHA-512/256“ (PDF). Citovat deník vyžaduje
| deník =
(Pomoc) - ^ „Seznam ověření SHS“. NIST. 16. 06. 2017. Archivovány od originál dne 2017-06-17.
- ^ "Tabulka měření". bench.cr.yp.to.
- ^ Tao, Xie; Liu, Fanbao; Feng, Dengguo (2013). Rychlý kolizní útok na MD5 (PDF). Archiv kryptologie ePrint (Technická zpráva). IACR.
- ^ Stevens, Marc; Bursztein, Elie; Karpman, Pierre; Albertini, Ange; Markov, Yarik. První kolize pro plný SHA-1 (PDF) (Technická zpráva). Google Research. Shrnutí ležel – Blog zabezpečení Google (23. února 2017).
- ^ Bez zkrácení je známý plný vnitřní stav hashovací funkce, bez ohledu na odolnost proti kolizi. Pokud je výstup zkrácen, musí být odstraněná část stavu prohledána a nalezena před obnovením funkce hash, což umožní pokračování útoku.
- ^ „Rodina funkcí houba Keccak“. Citováno 2016-01-27.
- ^ Benchmarky SUPERCOP Měření hashovacích funkcí indexovaných strojem
- ^ „SUPERCOP“. Citováno 24. února 2015.
- ^ Podporované šifrovací sady SSL / TLS
- ^ Seznam změn Mbed TLS, 7. července 2007
- ^ „ARM Cortex-A53 MPCore Processor Technical Reference Manual Cryptography Extension“.
Další čtení
- Henri Gilbert, Helena Handschuh: Bezpečnostní analýza SHA-256 a Sisters. Vybrané oblasti v kryptografii 2003: str. 175–193
- „Navržená revize federálního standardu pro zpracování informací (FIPS) 180, standard Secure Hash“. Federální registr. 59 (131): 35317–35318. 1994-07-11. Citováno 2007-04-26.[trvalý mrtvý odkaz ]
externí odkazy
- Popis SHA-256, SHA-384 a SHA-512 z NIST
- Kontrola SHA-2 - SHAChecker pro kontrolu kompatibility SSL pro SHA-2
- Specifikace standardu Secure Hash (SHS) - Návrh pro navrhovaný SHS (SHA-0)
- Secure Hash Standard (SHS) - Navržený SHS (SHA-0)
- CSRC Cryptographic Toolkit - Oficiální NIST web pro standard Secure Hash
- FIPS PUB 180-4: Secure Hash Standard (SHS) (PDF, 834 KB) - Aktuální verze Secure Hash Standard (SHA-1, SHA-224, SHA-256, SHA-384 a SHA-512), srpen 2015
- Testovací vektory pro SHA-256/384/512 z NESSIE projekt
- Testovací vektory pro SHA-1, SHA-2 z NIST stránky
- Kryptografický hashovací projekt NIST - Soutěž SHA-3
- RFC 3874: "224bitová jednosměrná hashovací funkce: SHA-224"
- RFC 6234: "US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)"; obsahuje ukázkovou implementaci C.