SHA-2

SHA-2
Vytvořeno 2002
zveřejněno 2002
Nástupce Keccak
Velikost hash 224, 256, 384 nebo 512 bitů
Počet kol 64 nebo 80
Typ rodina hashovacích funkcí

SHA-2 ( angl. Secure Hash Algorithm Version 2  - bezpečný hashovací algoritmus, verze 2) - rodina kryptografických algoritmů  - jednosměrné hashovací funkce , včetně algoritmů SHA-224, SHA-256, SHA-384, SHA-512 , SHA-512/256 a SHA-512/224 .

Hashovací funkce jsou navrženy tak, aby vytvářely „otisky prstů“ nebo „výběry“ zpráv libovolné délky. Používají se v různých aplikacích nebo součástech souvisejících s informační bezpečností .

Historie

Hashovací funkce SHA-2 byly vyvinuty americkou Národní bezpečnostní agenturou a publikovány Národním institutem pro standardy a technologie ve Federálním standardu zpracování informací FIPS PUB 180-2 v srpnu 2002 [1] . Tento standard také zahrnoval hashovací funkci SHA-1 , vyvinutou v roce 1995. V únoru 2004 byl do FIPS PUB 180-2 přidán SHA-224 [2] . V říjnu 2008 byla vydána nová edice standardu - FIPS PUB 180-3 [3] . V březnu 2012 byla vydána nejnovější revize FIPS PUB 180-4 , která přidala funkce SHA-512/256 a SHA-512/224 založené na SHA-512 (protože SHA-512 je rychlejší na 64bitových architekturách než SHA- 256) [4] .

V červenci 2006 se objevil RFC 4634 „U.S. Secure Hash Algorithms ( SHA a HMAC-SHA )“, který popisuje SHA-1 a rodinu SHA-2 .

Národní bezpečnostní agentura jménem státu vydala patent na SHA-2 [5] v rámci bezlicenční licence [6] .

Algoritmus

Obecný popis

Hashovací funkce rodiny SHA-2 jsou postaveny na základě struktury Merkle-Damgor .

Původní zpráva po přidání je rozdělena do bloků, každý blok na 16 slov. Algoritmus prochází každý blok zpráv smyčkou s 64 nebo 80 iteracemi (koly). Při každé iteraci jsou transformována 2 slova, transformační funkce je nastavena zbývajícími slovy. Výsledky zpracování každého bloku se sečtou, součet je hodnota hashovací funkce. Inicializace vnitřního stavu je však výsledkem zpracování předchozího bloku. Proto nemůžete samostatně zpracovávat bloky a přidávat výsledky. Podrobnosti viz pseudokód .

Porovnání hašovacích funkcí

Následující tabulka ukazuje některé technické charakteristiky různých variant SHA-2. „Vnitřní stav“ odkazuje na mezilehlý hash součet po zpracování dalšího bloku dat:

hashovací funkce Délka přehledu zprávy (bity) Délka vnitřního stavu (bity) Délka bloku (bity) Maximální
délka zprávy (bity)
Délka slova (bity) Počet iterací ve smyčce Rychlost (MiB/s) [7]
SHA-256 , SHA-224 256/224 256 (8×32) 512 2 64 - 1 32 64 139
SHA-512 , SHA-384 , SHA-512/256 , SHA-512/224 512/384/256/224 512 (8×64) 1024 2 128 - 1 64 80 154

Pseudokód

Pseudokód používá následující bitové operace:

SHA-256

Vysvětlivky: Všechny proměnné jsou bez znaménka, mají velikost 32 bitů a při výpočtech se sčítají modulo 2 32 zpráva — původní  binární zpráva m  — transformovaná zpráva h0 := 0x6A09E667 h1 := 0xBB67AE85 h2 := 0x3C6EF372 h3 := 0xA54FF53A h4 := 0x510E527F h5 := 0x9B05688C h6 := 0x1F83D9AB h7 := 0x5BE0CD19 Tabulka konstant (prvních 32 bitů zlomkové odmocniny prvních 64 prvočísel [2 až 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, 0xC67178F2 Předzpracování: m := zpráva ǁ [ jeden bit ] m := m ǁ [k nulových bitů ], kde k  je nejmenší nezáporné číslo takové, že (L + 1 + K) mod 512 = 448, kde L je počet bitů ve zprávě ( modulo 512 je srovnatelné s 448) m := m ǁ Délka (zpráva) je délka původní zprávy v bitech jako 64bitové číslopořadí bajtů od velkého po malý Dále je zpráva zpracována v po sobě jdoucích částech 512 bitů: rozdělit zprávu na části po 512 bitech za každý kus rozdělte blok na 16 slov o délce 32 bitů (s pořadím bajtů od horního k dolnímu konci slova): w[0..15] Vygenerujte dalších 48 slov: pro i od 16 do 63 s0 := (w[i-15] rotr 7) xor (w[i-15] rottr 18) xor (w[i-15] shr 3) s1 := (w[i-2] rotr 17) xor (w[i-2] rotr 19) xor (w[i-2] shr 10) w[i] := w[i-16] + s0 + w[i-7] + s1 Inicializace pomocných proměnných: a := h0 b := h1 c := h2 d := h3 e := h4 f := h5 g := h6 h := h7 Hlavní smyčka: pro i od 0 do 63 Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22) Ma := (a a b) xor (a a c) xor (ba c ) t2 := Σ0 + Ma Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25) Ch := (e a f) xor (( nikoli e) a g) t1 := h + Σ1 + Ch + k[i] + w[i] h := g g := f f := e e:= d + t1 d := c c := b b := a a := t1 + t2 Přidejte získané hodnoty k dříve vypočítanému výsledku: h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h Získejte konečnou hodnotu hash: digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7

SHA-224 je identický s SHA-256 kromě:

Počáteční hodnoty proměnných h0jsou h7v SHA-224: h0 := 0xC1059ED8 h1 := 0x367CD507 h2 := 0x3070DD17 h3 := 0xF70E5939 h4 := 0xFFC00B31 h5 := 0x68581511 h6 := 0x64F98FA7 h7 := 0xBEFA4FA4

SHA-512 má identickou strukturu, ale:

Počáteční hodnoty proměnných h0jsou h7v SHA-512: h0 := 0x6a09e667f3bcc908, h1 := 0xbb67ae8584caa73b, h2 := 0x3c6ef372fe94f82b, h3 := 0xa54ff53a5f1d36f1, h4 := 0x510e527fade682d1, h5 := 0x9b05688c2b3e6c1f, h6 := 0x1f83d9abfb41bd6b, h7 := 0x5be0cd19137e2179

SHA-384 je identický s SHA-512 kromě:

Počáteční hodnoty proměnných h0jsou h7v SHA-384 (prvních 64 bitů zlomkových částí odmocnin prvočísel od 9. do 16. [od 23 do 53]): h0 := CBBB9D5DC1059ED8 h1 := 629A292A367CD507 h2 := 9159015A3070DD17 h3 := 152FECD8F70E5939 h4 := 67332667FFC00B31 h5 := 8EB44A8768581511 h6 := DB0C2E0D64F98FA7 h7 := 47B5481DBEFA4FA4

SHA-512/256 je identický s SHA-512 kromě:

Počáteční hodnoty proměnných h0jsou h7v SHA-512/256 : h0 := 22312194FC2BF72C h1 := 9F555FA3C84C64C2 h2 := 2393B86B6F53B151 h3 := 963877195940EABD h4 := 96283EE2A88EFFE3 h5 := BE5E1E2553863992 h6 := 2B0199FC2C85B8AA h7 := 0EB72DDC81C52CA2

SHA-512/224 je identický s SHA-512 kromě:

Počáteční hodnoty proměnných h0jsou h7v SHA-512/224 : h0 := 8C3D37C819544DA2 h1 := 73E1996689DCD4D6 h2 := 1DFAB7AE32FF9C82 h3 := 679DD514582F9FCF h4 := 0F6D2B697BD44DA8 h5 := 77E36F7304C48942 h6 := 3F9D85A86A1D36C8 h7 := 1112E6AD91D692A1

Příklady

Níže jsou uvedeny příklady hodnot hash pro stejný text v různých verzích protokolu SHA-2 . Všechny příklady předpokládají použití kódování ASCII .

SHA-224(" Rychlá hnědá liška skáče přes líného psa ") = 730E109B D7A8A32B 1CB9D9A0 9AA2325D 2430587D DBC0C38B AD911525 SHA-256 („Rychlá hnědá liška skáče přes líného psa“) = D7A8FBB3 07D78094 69CA9ABC B0082E4F 8D5651E4 6D3CDB76 2D02D0BF 37C9E592 SHA-384 („Rychlá hnědá liška skáče přes líného psa“) = CA737F10 14A48F4C 0B6DD43C B177B0AF D9E51693 67544C49 4011E331 7DBF9A50 9CB1E5DC 1E85A941 BBEE3D7F 2AFBC9B1 SHA-512 („Rychlá hnědá liška skáče přes líného psa“) = 07E547D9 586F6A73 F73FBAC0 435ED769 51218FB7 D0C8D788 A309D785 436BBB64 2E93A252 A954F239 12547D1E 8A3B5ED6 E1BFD709 7821233F A0538F3D B854FEE6 SHA-512/256 („Rychlá hnědá liška skáče přes líného psa“) = DD9D67B3 71519C33 9ED8DBD2 5AF90E97 6A1EEEFD 4AD3D889 005E532F C5BEF04D SHA-512/224 („Rychlá hnědá liška skáče přes líného psa“) = 944CD284 7FB54558 D4775DB0 485A5000 3111C8E5 DAA63FE7 22C6AA37

Sebemenší změna zprávy v naprosté většině případů vede k úplné změně hashe vlivem lavinového efektu . Například při změně dogna cog(změna ovlivní pouze jeden bit z 344 v zakódované frázi) se hash dramaticky změní:

SHA-256 („Rychlá hnědá liška skáče přes líné kolečko“) = E4C4D8F3 BF76B692 DE791A17 3E053211 50F7A345 B46484FE 427F6ACC 7ECC81BE

Kryptoanalýza

Kryptoanalýza hashovací funkce zahrnuje studium stability algoritmu proti alespoň následujícím typům útoků:

V roce 2003 Gilbert a Handschuh provedli studii o SHA-2 , ale nenašli žádné zranitelnosti [8] . V březnu 2008 však indičtí výzkumníci Somitra Kumar Sanadiya a Palash Sarkar zveřejnili srážky, které našli pro 22 iterací SHA-256 a SHA-512 [9] . V září téhož roku představili metodu pro konstrukci kolizí pro zkrácené verze SHA-2 (21 iterací) [10] [11] . Později byly nalezeny metody pro konstrukci kolizí pro 31 iterací SHA-256 [12] a pro 27 iterací SHA-512 [13] .

Vzhledem k algoritmické podobnosti SHA-2 s SHA-1 a přítomnosti potenciálních zranitelností v SHA-1 bylo rozhodnuto, že SHA-3 bude založen na zcela jiném algoritmu [14] [15] . 2. října 2012 NIST schválil algoritmus Keccak jako SHA-3 .

Aplikace a certifikace

Viz také Použití hashování

SHA-224 , SHA-256 , SHA-384 , SHA-512 , SHA-512/256 a SHA-512/224 je zákonem USA povoleno pro použití v určitých vládních aplikacích, včetně použití v rámci jiných kryptografických algoritmů a protokolů, k ochraně informace, která není opatřena razítkem tajemství. Standard také umožňuje použití SHA-2 soukromými a komerčními organizacemi [16] .

Hashovací funkce SHA-2 se používají pro kontrolu integrity dat a v různých kryptografických schématech. Od roku 2008 není rodina hašovacích funkcí SHA-2 tak rozšířená jako MD5 a SHA-1 [17] , navzdory nedostatkům zjištěným u posledně jmenovaných.

Některé příklady použití SHA-2 jsou uvedeny v tabulce:

Oblast použití Podrobnosti
S/MIME Přehledy zpráv SHA-224 , SHA-256 , SHA-384 nebo SHA-512 [18]
OpenLDAP Hash hesel SHA -256 , SHA-384 nebo SHA-512 [19]
DNSSEC Digesty SHA-256 DNSKEY v protokolu DNSSEC [20]
X.509 SHA-224 , SHA-256 , SHA-384 a SHA-512 se používají k vytvoření elektronického digitálního podpisu certifikátu [21]
PGP SHA-256 , SHA-384 , SHA-512 se používají k vytvoření elektronického digitálního podpisu [22]
IPSec Některé implementace podporují SHA-256 v protokolech ESP a IKE [23]
DSA Rodina SHA-2 se používá k vytvoření elektronického digitálního podpisu [24]
SHACAL-2 Algoritmus blokového šifrování SHACAL-2 je založen na hašovací funkci SHA-256
bitcoin Nalezení kombinace dat, jejichž hash SHA-256 splňuje zadanou podmínku, je důkazem práce vykonané při vydávání kryptoměny

Studie ukázaly [25] , že algoritmy SHA-2 jsou 2–3krát pomalejší než jiné populární hashovací algoritmy MD5 , SHA-1 , Tiger a RIPEMD-160 .

Certifikace

Implementace SHA-2 , stejně jako všechny federální standardy zpracování informací, mohou být certifikovány pro použití v určitých aplikacích ve Spojených státech. Certifikace probíhá jako součást Cryptographic Module Validation Program , kterou provádí americký Národní institut pro standardy a technologie ve spolupráci s Kanadským úřadem pro bezpečnost komunikací.

K 5. listopadu 2008 bylo certifikováno více než 250 implementací SHA-2 , z nichž čtyři dokážou zpracovat zprávy s bitovou délkou, která není násobkem osmi [26] .

Certifikováno FIPS PUB 180-4, CRYPTREC a NESSIE .

Viz také

Poznámky

  1. ↑ FIPS PUB 180-2  . - původní verze standardu pro SHA-2. Získáno 19. listopadu 2008. Archivováno z originálu 18. března 2012.
  2. FIPS PUB 180-2 s  upozorněním na změnu . - varianta standardu s SHA-224. Získáno 19. listopadu 2008. Archivováno z originálu 18. března 2012.
  3. ↑ FIPS PUB 180-3  . - Vydání Secure Hash Standard z října 2008. Získáno 19. listopadu 2008. Archivováno z originálu 18. března 2012.
  4. FIPS PUB 180-4  (anglicky)  (odkaz není k dispozici) . — vydání standardu Secure Hash Standard ze srpna 2015. Získáno 28. srpna 2015. Archivováno z originálu dne 26. listopadu 2016.
  5. Americký patent 6829355  . — Zařízení a metoda jednosměrného kryptografického hašování. Staženo 14. 5. 2017. Archivováno z originálu 27. 7. 2016.
  6. Licenční prohlášení pro US patent 6829355.  (neopr.) .  (Angličtina)
  7. "Crypto++ 5.6.0 Benchmarky". Získáno 2013-06-13. . Získáno 25. září 2016. Archivováno z originálu 14. října 2016.
  8. Gilbert H. , Handschuh H. Security Analysis of SHA-256 and Sisters  // Selected Areas in Cryptography : 10th Annual International Workshop , SAC 2003, Ottawa, Canada, August 14-15, 2003. Revised Papers / M Matsui , R. J. Zuccher - Berlín , Heidelberg , New York, NY , Londýn [atd.] : Springer Berlin Heidelberg , 2004. - S. 175-193. - ( Lecture Notes in Computer Science ; Vol. 3006) - ISBN 978-3-540-21370-3 - ISSN 0302-9743 ; 1611-3349doi:10.1007/978-3-540-24654-1_13
  9. Somitra Kumar Sanadhya, Palash Sarkar. Kolize 22 kroků pro SHA-2 Archivováno 30. března 2010 na Wayback Machine 
  10. Somitra Kumar Sanadhya, Palash Sarkar. Deterministické konstrukce kolizí o 21 krocích pro  rodinu hash SHA-2
  11. Prezentace „Deterministické konstrukce kolizí o 21 krocích pro rodinu hash SHA-2“ Archivována 3. července 2010 na Wayback Machine 
  12. Mendel F. , Nad T. , Schläffer M. Improving Local Collisions: New Attacks on Reduced SHA-256  // Advances in Cryptology – EUROCRYPT 2013 : 32nd Annual International Conference on the Theory and Applications of Cryptographic Techniques, Mayths, Greece 26-30, 2013. Sborník příspěvků / T. Johansson , P. Q. Nguyen - Springer Berlin Heidelberg , 2013. - S. 262-278. — 736 s. - ISBN 978-3-642-38347-2 - doi: 10.1007/978-3-642-38348-9_16
  13. Christoph Dobraunig, Maria Eichlseder a Florian Mendel. Analýza SHA-512/224 a SHA-512/256  (nedefinováno) . — 2016.
  14. Schneier on Security: NIST Hash Workshop Liveblogging (5) Archivováno 7. října 2008 na Wayback Machine 
  15. Hash cracked - heise Security Archivováno 6. prosince 2008 na Wayback Machine 
  16. FIPS 180-2: Secure Hash Standard (SHS): 6. Použitelnost Archivováno z originálu 18. března 2012.  (Angličtina)
  17. SHA-1 , SHA-256 ve výsledcích vyhledávače Google
  18. draft-ietf-smime-sha2-08 Archivováno 22. června 2009 na Wayback Machine  : Použití algoritmů SHA2 se syntaxí kryptografických zpráv
  19. Podpora SHA-2 hash v OpenLDAP Archivováno 27. července 2010 na Wayback Machine 
  20. RFC 4509 : Použití SHA-256 v záznamech zdrojů (RR) DNSSEC Delegation Signer (DS)
  21. RFC 4055 : Další algoritmy a identifikátory pro kryptografii RSA pro použití v profilu Internetové infrastruktury veřejného klíče X.509 Certifikát a seznam odvolaných certifikátů (CRL)
  22. RFC 4880 : Formát zpráv OpenPGP
  23. Přehled aktualizace Windows Vista Service Pack 1: Nové standardy archivované 12. března 2016 na Wayback Machine 
  24. FIPS-186-2 Archivováno 18. května 2009. : Standard digitálního podpisu (DSS)]
  25. Porovnání rychlosti populárních krypto algoritmů [1] Archivováno 15. října 2008 na Wayback Machine 
  26. SHS Validation List Archivováno 23. srpna 2011 na Wayback Machine 

Literatura

Odkazy