SHA-2

SHA-2
Oprettet 2002
offentliggjort 2002
Efterfølger Keccak
Hash størrelse 224, 256, 384 eller 512 bit
Antal runder 64 eller 80
Type hashfunktionsfamilie

SHA-2 ( eng. Secure Hash Algorithm Version 2  - sikker hashalgoritme, version 2) - en familie af kryptografiske algoritmer  - envejs hashfunktioner , herunder algoritmerne SHA-224, SHA-256, SHA-384, SHA-512 , SHA -512/256 og SHA-512/224 .

Hash-funktioner er designet til at skabe "fingeraftryk" eller "sammendrag" af meddelelser af vilkårlig længde. De bruges i forskellige applikationer eller komponenter relateret til informationssikkerhed .

Historie

SHA-2 hash-funktioner blev udviklet af US National Security Agency og udgivet af National Institute of Standards and Technology i Federal Information Processing Standard FIPS PUB 180-2 i august 2002 [1] . Denne standard inkluderede også SHA-1 hash-funktionen , udviklet i 1995. I februar 2004 blev SHA-224 [2] tilføjet til FIPS PUB 180-2 . I oktober 2008 udkom en ny udgave af standarden - FIPS PUB 180-3 [3] . I marts 2012 blev den seneste revision af FIPS PUB 180-4 udgivet , som tilføjede SHA-512/256 og SHA-512/224 funktioner baseret på SHA-512 (da SHA-512 er hurtigere på 64-bit arkitekturer end SHA- 256) [4] .

I juli 2006 dukkede RFC 4634 "U.S. Secure Hash Algorithms ( SHA and HMAC-SHA )" op, der beskriver SHA-1 og SHA-2- familien .

National Security Agency udstedte på vegne af staten et patent på SHA-2 [5] under en royaltyfri licens [6] .

Algoritme

Generel beskrivelse

Hash-funktionerne i SHA-2-familien er bygget på basis af Merkle-Damgor-strukturen .

Den oprindelige besked efter tilføjelsen er opdelt i blokke, hver blok i 16 ord. Algoritmen sender hver beskedblok gennem en løkke med 64 eller 80 iterationer (runder). Ved hver iteration transformeres 2 ord, transformationsfunktionen sættes af de resterende ord. Resultaterne af behandlingen af ​​hver blok lægges sammen, summen er værdien af ​​hash-funktionen. Imidlertid er initialiseringen af ​​den interne tilstand resultatet af behandlingen af ​​den foregående blok. Derfor kan du ikke selvstændigt behandle blokke og tilføje resultater. Se pseudokode for detaljer .

Sammenligning af hash-funktioner

Følgende tabel viser nogle af de tekniske karakteristika for de forskellige SHA-2 varianter. "Intern tilstand" refererer til den mellemliggende hash-sum efter behandling af den næste blok af data:

hash funktion Længde på beskedsammendrag (bits) Intern tilstandslængde (bits) Bloklængde (bits) Maksimal
meddelelseslængde (bit)
Ordlængde (bits) Antal iterationer i en loop Hastighed (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

Pseudokode

Pseudokoden bruger følgende bitvise operationer:

SHA-256

Forklaringer: Alle variable er uden fortegn, har en størrelse 32 bit og summeres modulo 2 under beregninger 32 besked — original  binær besked m  — transformeret besked h0 := 0x6A09E667 h1 := 0xBB67AE85 h2 := 0x3C6EF372 h3 := 0xA54FF53A h4 := 0x510E527F h5:= 0x9B05688C h6 := 0x1F83D9AB h7 := 0x5BE0CD19 Konstant tabel (første 32 bit af brøkterningrødderne af de første 64 primtal [2 til 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 Forbehandling: m := besked ǁ [ enkelt bit ] m := m ǁ [k nul bits ], hvor k  er det mindste ikke-negative tal, således at (L + 1 + K) mod 512 = 448, hvor L er antallet af bit i meddelelsen ( modulo 512 er sammenlignelig med 448) m := m ǁ Længde (meddelelse) er længden af ​​den oprindelige meddelelse i bits som en 64-bit nummerbyte rækkefølge fra stor til lille Derefter behandles meddelelsen i successive dele af 512 bit: opdel beskeden i bidder af 512 bit for hvert stykke opdel klumpen i 16 ord med en længde på 32 bit (med byte rækkefølge fra høj til lav ende af ordet): w[0..15] Generer yderligere 48 ord: for i fra 16 til 63 s0 := (w[i-15] rotr 7) xor (w[i-15] rotr 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 Initialisering af hjælpevariable: a := h0 b := h1 c:= h2 d := h3 e := h4 f := h5 g := h6 h := h7 Hovedløkke: for i fra 0 til 63 Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22) Ma := (a og b) xor (a og c) xor (b og c) t2 := Σ0 + Ma Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25) Ch := (e og f) xor (( ikke e) og 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 Tilføj de opnåede værdier til det tidligere beregnede resultat: h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h Få den endelige hashværdi: digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7

SHA-224 er identisk med SHA-256 bortset fra:

De indledende værdier af variablerne h0er h7i SHA-224: h0 := 0xC1059ED8 h1 := 0x367CD507 h2 := 0x3070DD17 h3 := 0xF70E5939 h4 := 0xFFC00B31 h5 := 0x68581511 h6 := 0x64F98FA7 h7 := 0xBEFA4FA4

SHA-512 har en identisk struktur, men:

De indledende værdier af variablerne h0er h7i SHA-512: h0 := 0x6a09e667f3bcc908, h1 := 0xbb67ae8584caa73b, h2 := 0x3c6ef372fe94f82b, h3 := 0xa54ff53a5f1d36f1, h4 := 0x510e527fade682d1, h5 := 0x9b05688c2b3e6c1f, h6 := 0x1f83d9abfb41bd6b, h7 := 0x5be0cd19137e2179

SHA-384 er identisk med SHA-512 bortset fra:

De indledende værdier af variablerne h0er h7i SHA-384 (de første 64 bit af brøkdelene af kvadratrødderne af primtal fra 9. til 16. [fra 23 til 53]): h0 := CBBB9D5DC1059ED8 h1:= 629A292A367CD507 h2 := 9159015A3070DD17 h3 := 152FECD8F70E5939 h4 := 67332667FFC00B31 h5 := 8EB44A8768581511 h6 := DB0C2E0D64F98FA7 h7 := 47B5481DBEFA4FA4

SHA-512/256 er identisk med SHA-512 bortset fra:

De indledende værdier af variablerne h0er h7i SHA-512/256 : h0 := 22312194FC2BF72C h1 := 9F555FA3C84C64C2 h2:= 2393B86B6F53B151 h3 := 963877195940EABD h4 := 96283EE2A88EFFE3 h5 := BE5E1E2553863992 h6 := 2B0199FC2C85B8AA h7 := 0EB72DDC81C52CA2

SHA-512/224 er identisk med SHA-512 bortset fra:

De indledende værdier af variablerne h0er h7i SHA-512/224 : h0 := 8C3D37C819544DA2 h1:= 73E1996689DCD4D6 h2 := 1DFAB7AE32FF9C82 h3 := 679DD514582F9FCF h4 := 0F6D2B697BD44DA8 h5:= 77E36F7304C48942 h6 := 3F9D85A86A1D36C8 h7 := 1112E6AD91D692A1

Eksempler

Nedenfor er eksempler på hashes for den samme tekst under forskellige versioner af SHA-2- protokollen . Alle eksempler antager brugen af ​​ASCII- kodning .

SHA-224 (" Den hurtige brune ræv hopper over den dovne hund ") = 730E109B D7A8A32B 1CB9D9A0 9AA2325D 2430587D DBC0C38B AD911525 SHA-256("Den hurtige brune ræv hopper over den dovne hund") = D7A8FBB3 07D78094 69CA9ABC B0082E4F 8D5651E4 6D3CDB76 2D02D0BF 37C9E592 SHA-384("Den hurtige brune ræv hopper over den dovne hund") = CA737F10 14A48F4C 0B6DD43C B177B0AF D9E51693 67544C49 4011E331 7DBF9A50 9CB1E5DC 1E85A941 BBEE3D7F 2AFBC9B1 SHA-512("Den hurtige brune ræv hopper over den dovne hund") = 07E547D9 586F6A73 F73FBAC0 435ED769 51218FB7 D0C8D788 A309D785 436BBB64 2E93A252 A954F239 12547D1E 8A3B5ED6 E1BFD709 7821233F A0538F3D B854FEE6 SHA-512/256("Den hurtige brune ræv hopper over den dovne hund") = DD9D67B3 71519C33 9ED8DBD2 5AF90E97 6A1EEEFD 4AD3D889 005E532F C5BEF04D SHA-512/224("Den hurtige brune ræv hopper over den dovne hund") = 944CD284 7FB54558 D4775DB0 485A5000 3111C8E5 DAA63FE7 22C6AA37

Den mindste ændring i budskabet fører i langt de fleste tilfælde til en fuldstændig ændring af hashen på grund af lavineeffekten . For eksempel, når du skifter dogtil cog(ændringen påvirker kun én bit ud af 344 i den kodede sætning), vil hashen ændre sig dramatisk:

SHA-256("Den hurtige brune ræv hopper over det dovne tandhjul") = E4C4D8F3 BF76B692 DE791A17 3E053211 50F7A345 B46484FE 427F6ACC 7ECC81BE

Krypteringsanalyse

Krypteringsanalyse af en hashfunktion involverer studiet af algoritmens stabilitet mod mindst følgende typer angreb:

I 2003 gennemførte Gilbert og Handschuh en undersøgelse af SHA-2 , men fandt ingen sårbarheder [8] . Men i marts 2008 offentliggjorde de indiske forskere Somitra Kumar Sanadiya og Palash Sarkar de kollisioner, de fandt for 22 iterationer af SHA-256 og SHA-512 [9] . I september samme år præsenterede de en metode til at konstruere kollisioner for trunkerede versioner af SHA-2 (21 iterationer) [10] [11] . Senere blev der fundet metoder til at konstruere kollisioner for 31 iterationer af SHA-256 [12] og for 27 iterationer af SHA-512 [13] .

På grund af den algoritmiske lighed mellem SHA-2 og SHA-1 og tilstedeværelsen af ​​potentielle sårbarheder i sidstnævnte, blev det besluttet, at SHA-3 vil være baseret på en helt anden algoritme [14] [15] . Den 2. oktober 2012 godkendte NIST Keccak -algoritmen som SHA-3 .

Ansøgning og certificering

Se også Anvendelse af hashing

SHA-224 , SHA-256 , SHA-384 , SHA-512 , SHA-512/256 og SHA-512/224 er tilladt i henhold til amerikansk lovgivning til brug i visse offentlige applikationer, herunder brug inden for andre kryptografiske algoritmer og protokoller, for at beskytte oplysninger , som ikke har et tavshedsstempel. Standarden tillader også private og kommercielle organisationers brug af SHA-2 [16] .

SHA-2 hash-funktioner bruges til dataintegritetstjek og i forskellige kryptografiske skemaer. Fra 2008 er SHA-2- familien af ​​hashfunktioner ikke så udbredt som MD5 og SHA-1 [17] , på trods af manglerne fundet i sidstnævnte.

Nogle eksempler på brugen af ​​SHA-2 er angivet i tabellen:

Anvendelsesområde detaljer
S/MIME SHA-224 , SHA-256 , SHA-384 eller SHA-512 beskedsammendrag [18]
ÅbnLDAP SHA-256 , SHA-384 eller SHA-512 hash - kodeord [19]
DNSSEC SHA-256 DNSKEY fordøjelser i DNSSEC -protokollen [20]
X.509 SHA-224 , SHA-256 , SHA-384 og SHA-512 bruges til at skabe en elektronisk digital signatur af et certifikat [21]
PGP SHA-256 , SHA-384 , SHA-512 bruges til at skabe en elektronisk digital signatur [22]
IPSec Nogle implementeringer understøtter SHA-256 i ESP- og IKE-protokollerne [23]
DSA SHA-2- familien bruges til at skabe en elektronisk digital signatur [24]
SHACAL-2 SHACAL-2 blokkrypteringsalgoritmen er baseret på SHA-256 hash-funktionen
bitcoin At finde en kombination af data, hvis SHA-256- hash opfylder den angivne betingelse, er bevis på det udførte arbejde, når du udsteder en kryptovaluta

Undersøgelser har vist [25] at SHA-2 algoritmer er 2-3 gange langsommere end andre populære hashalgoritmer MD5 , SHA-1 , Tiger og RIPEMD-160 .

Certificering

Implementeringer af SHA-2 , som alle føderale informationsbehandlingsstandarder, kan certificeres til brug i visse applikationer i USA. Certificering finder sted som en del af Cryptographic Module Validation Program , som udføres af US National Institute of Standards and Technology i samarbejde med Canadian Bureau of Communications Security.

Fra den 5. november 2008 er mere end 250 SHA-2 implementeringer blevet certificeret , hvoraf fire kan håndtere beskeder med en bitlængde, der ikke er et multiplum af otte [26] .

Certificeret af FIPS PUB 180-4, CRYPTREC og NESSIE .

Se også

Noter

  1. ↑ FIPS PUB 180-2  . - den originale version af standarden for SHA-2. Hentet 19. november 2008. Arkiveret fra originalen 18. marts 2012.
  2. FIPS PUB 180-2 med  ændringsmeddelelse . - en variant af standarden med SHA-224. Hentet 19. november 2008. Arkiveret fra originalen 18. marts 2012.
  3. ↑ FIPS PUB 180-3  . - Oktober 2008-udgaven af ​​Secure Hash Standard. Hentet 19. november 2008. Arkiveret fra originalen 18. marts 2012.
  4. FIPS PUB 180-4  (engelsk)  (link ikke tilgængeligt) . — udgave af Secure Hash Standard fra august 2015. Hentet 28. august 2015. Arkiveret fra originalen 26. november 2016.
  5. US patent 6829355  . — Enhed til og metode til envejs kryptografisk hashing. Hentet 14. maj 2017. Arkiveret fra originalen 27. juli 2016.
  6. Licenserklæring for US patent 6829355.  (neopr.) .  (Engelsk)
  7. "Crypto++ 5.6.0 Benchmarks". Hentet 2013-06-13. . Hentet 25. september 2016. Arkiveret fra originalen 14. oktober 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, 14.-15. august 2003. Revised Papers / M Matsui , R. J. Zuccher - Berlin , Heidelberg , New York, NY , London [etc.] : Springer Berlin Heidelberg , 2004. - S. 175-193. - ( Lecture Notes in Computer Science ; Vol. 3006) - ISBN 978-3-540-21370-3 - ISSN 0302-9743 ; 1611-3349 - doi:10.1007/978-3-540-24654-1_13
  9. Somitra Kumar Sanadhya, Palash Sarkar. 22-trins kollisioner for SHA-2 Arkiveret 30. marts 2010 på Wayback Machine 
  10. Somitra Kumar Sanadhya, Palash Sarkar. Deterministiske konstruktioner af 21-trins kollisioner for SHA-2 Hash-  familien
  11. Præsentation "Deterministic Constructions of 21-Step Collisions for the SHA-2 Hash Family" Arkiveret 3. juli 2010 på 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, Athen , Grækenland, maj 26-30, 2013. Proceedings / 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 og Florian Mendel. Analyse af SHA-512/224 og SHA-512/256  (udefineret) . – 2016.
  14. Schneier om sikkerhed: NIST Hash Workshop Liveblogging (5) Arkiveret 7. oktober 2008 på Wayback Machine 
  15. Hash cracked - heise Security Arkiveret 6. december 2008 på Wayback Machine 
  16. FIPS 180-2: Secure Hash Standard (SHS): 6. Anvendelse Arkiveret fra originalen den 18. marts 2012.  (Engelsk)
  17. SHA-1 , SHA-256 i Googles søgemaskineresultater
  18. draft-ietf-smime-sha2-08 Arkiveret 22. juni 2009 på Wayback Machine  : Brug af SHA2-algoritmer med kryptografisk meddelelsessyntaks
  19. SHA-2 hash-understøttelse i OpenLDAP Arkiveret 27. juli 2010 på Wayback Machine 
  20. RFC 4509 : Brug af SHA-256 i DNSSEC Delegation Signer (DS) Resource Records (RR'er)
  21. RFC 4055 : Yderligere algoritmer og identifikatorer til RSA-kryptering til brug i Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
  22. RFC 4880 : OpenPGP Message Format
  23. Oversigt over Windows Vista Service Pack 1: Nye standarder arkiveret 12. marts 2016 på Wayback Machine 
  24. FIPS-186-2 Arkiveret 18. maj 2009. : Digital Signature Standard (DSS)]
  25. Hastighedssammenligning af populære kryptoalgoritmer [1] Arkiveret 15. oktober 2008 på Wayback Machine 
  26. SHS-valideringsliste Arkiveret 23. august 2011 på Wayback Machine 

Litteratur

Links