SHA-2

SHA-2
Skapad 2002
publiceras 2002
Efterträdare Keccak
Hash storlek 224, 256, 384 eller 512 bitar
Antal omgångar 64 eller 80
Sorts hashfunktionsfamilj

SHA-2 ( sv. Secure Hash Algorithm Version 2  - säker hashalgoritm, version 2) - en familj av kryptografiska algoritmer  - enkelriktade hashfunktioner , inklusive algoritmerna SHA-224, SHA-256, SHA-384, SHA-512 , SHA -512/256 och SHA-512/224 .

Hash-funktioner är designade för att skapa "fingeravtryck" eller "sammandrag" av meddelanden av godtycklig längd. De används i olika applikationer eller komponenter relaterade till informationssäkerhet .

Historik

SHA-2 hash-funktioner utvecklades av US National Security Agency och publicerades av National Institute of Standards and Technology i Federal Information Processing Standard FIPS PUB 180-2 i augusti 2002 [1] . Denna standard inkluderade även hashfunktionen SHA-1 , utvecklad 1995. I februari 2004 lades SHA-224 [2] till FIPS PUB 180-2 . I oktober 2008 släpptes en ny upplaga av standarden - FIPS PUB 180-3 [3] . I mars 2012 släpptes den senaste versionen av FIPS PUB 180-4 , som lade till funktionerna SHA-512/256 och SHA-512/224 baserade på SHA-512 (eftersom SHA-512 är snabbare på 64-bitars arkitekturer än SHA- 256) [4] .

I juli 2006 dök RFC 4634 "U.S. Secure Hash Algorithms ( SHA and HMAC-SHA )" upp, som beskrev SHA-1 och SHA-2- familjen .

National Security Agency utfärdade på uppdrag av staten ett patent för SHA-2 [5] under en royaltyfri licens [6] .

Algoritm

Allmän beskrivning

Hashfunktionerna i SHA-2-familjen är byggda på basis av Merkle-Damgor-strukturen .

Det ursprungliga meddelandet efter tillägget är uppdelat i block, varje block i 16 ord. Algoritmen skickar varje meddelandeblock genom en loop med 64 eller 80 iterationer (rundor). Vid varje iteration transformeras 2 ord, transformationsfunktionen ställs in av de återstående orden. Resultaten av bearbetningen av varje block läggs ihop, summan är värdet av hashfunktionen. Initieringen av det interna tillståndet är emellertid resultatet av bearbetningen av föregående block. Därför kan du inte självständigt bearbeta block och lägga till resultat. Se pseudokod för detaljer .

Jämförelse av hashfunktioner

Följande tabell visar några av de tekniska egenskaperna hos de olika SHA-2-varianterna. "Internt tillstånd" hänvisar till den mellanliggande hashsumman efter bearbetning av nästa datablock:

hash-funktion Längd på meddelandesammanfattning (bitar) Intern tillståndslängd (bitar) Blocklängd (bitar) Maximal
meddelandelängd (bitar)
Ordlängd (bitar) Antal iterationer i en loop Hastighet (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

Pseudokod

Pseudokoden använder följande bitvisa operationer:

SHA-256

Förklaringar: Alla variabler är osignerade, har en storlek 32 bitar och summeras modulo 2 vid beräkningar 32 meddelande — original  binärt meddelande m  — transformerat meddelande h0 := 0x6A09E667 h1 := 0xBB67AE85 h2 := 0x3C6EF372 h3 := 0xA54FF53A h4 := 0x510E527F h5:= 0x9B05688C h6 := 0x1F83D9AB h7 := 0x5BE0CD19 Konstanttabell (första 32 bitarna av bråk -kubrötter av de första 64 primtal [2 till 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 Förbearbetning: m := meddelande ǁ [ enkelbit ] m := m ǁ [k noll bitar ], där k  är det minsta icke-negativa talet så att (L + 1 + K) mod 512 = 448, där L är antalet bitar i meddelandet ( modulo 512 är jämförbart med 448) m := m ǁ Längd (meddelande) är längden på det ursprungliga meddelandet i bitar som en 64-bitars nummerbyteordning från stor till liten Därefter bearbetas meddelandet i på varandra följande delar om 512 bitar: dela upp meddelandet i bitar om 512 bitar för varje bit dela upp biten i 16 ord med längden 32 bitar (med byteordning från hög till låg del av ordet): w[0..15] Generera ytterligare 48 ord: för i från 16 till 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 av hjälpvariabler: a := h0 b := hl c:= h2 d := h3 e := h4 f := h5 g := h6 h := h7 Huvudslinga: för i från 0 till 63 Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22) Ma := (a och b) xor (a och c) xor (b och c) t2 := Σ0 + Ma Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25) Ch := (e och f) xor (( inte e) och g) t1 := h + Σ1 + Ch + k[i] + w[i] h := g g := f f := e e := d + tl d := c c := b b := a a := t1 + t2 Lägg till de erhållna värdena till det tidigare beräknade resultatet: 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å det slutliga hashvärdet: sammandrag = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7

SHA-224 är identisk med SHA-256 förutom:

De initiala värdena för variablerna h0finns 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 initiala värdena för variablerna h0finns h7i SHA-512: h0 := 0x6a09e667f3bcc908, h1 := 0xbb67ae8584caa73b, h2 := 0x3c6ef372fe94f82b, h3 := 0xa54ff53a5f1d36f1, h4 := 0x510e527fade682d1, h5 := 0x9b05688c2b3e6c1f, h6 := 0x1f83d9abfb41bd6b, h7 := 0x5be0cd19137e2179

SHA-384 är identisk med SHA-512 förutom:

De initiala värdena för variablerna h0är h7i SHA-384 (de första 64 bitarna av bråkdelar av kvadratrötterna av primtal från 9:e till 16:e [från 23 till 53]): h0 := CBBB9D5DC1059ED8 h1:= 629A292A367CD507 h2:= 9159015A3070DD17 h3 := 152FECD8F70E5939 h4 := 67332667FFC00B31 h5 := 8EB44A8768581511 h6 := DB0C2E0D64F98FA7 h7 := 47B5481DBEFA4FA4

SHA-512/256 är identisk med SHA-512 förutom:

De initiala värdena för variablerna h0finns h7i SHA-512/256 : h0 := 22312194FC2BF72C h1 := 9F555FA3C84C64C2 h2:= 2393B86B6F53B151 h3 := 963877195940EABD h4 := 96283EE2A88EFFE3 h5 := BE5E1E2553863992 h6 := 2B0199FC2C85B8AA h7 := 0EB72DDC81C52CA2

SHA-512/224 är identisk med SHA-512 förutom:

De initiala värdena för variablerna h0finns h7i SHA-512/224 : h0 := 8C3D37C819544DA2 h1:= 73E1996689DCD4D6 h2 := 1DFAB7AE32FF9C82 h3 := 679DD514582F9FCF h4 := 0F6D2B697BD44DA8 h5:= 77E36F7304C48942 h6 := 3F9D85A86A1D36C8 h7:= 1112E6AD91D692A1

Exempel

Nedan finns exempel på hash för samma text under olika versioner av SHA-2- protokollet . Alla exempel förutsätter användning av ASCII- kodning .

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

Minsta förändring i budskapet leder i de allra flesta fall till en fullständig förändring av hashen på grund av lavineffekten . Till exempel, när du ändrar dogtill cog(ändringen påverkar bara en bit av 344 i den kodade frasen), kommer hashen att ändras dramatiskt:

SHA-256("Den kvicka bruna räven hoppar över den lata kuggen") = E4C4D8F3 BF76B692 DE791A17 3E053211 50F7A345 B46484FE 427F6ACC 7ECC81BE

Kryptanalys

Krypteringsanalys av en hashfunktion involverar studiet av algoritmens stabilitet mot åtminstone följande typer av attacker:

År 2003 genomförde Gilbert och Handschuh en studie på SHA-2 , men fann inga sårbarheter [8] . Men i mars 2008 publicerade de indiska forskarna Somitra Kumar Sanadiya och Palash Sarkar de kollisioner som de hittade för 22 iterationer av SHA-256 och SHA-512 [9] . I september samma år presenterade de en metod för att konstruera kollisioner för trunkerade versioner av SHA-2 (21 iterationer) [10] [11] . Senare hittades metoder för att konstruera kollisioner för 31 iterationer av SHA-256 [12] och för 27 iterationer av SHA-512 [13] .

På grund av den algoritmiska likheten mellan SHA-2 och SHA -1 och närvaron av potentiella sårbarheter i den senare, beslutades att SHA-3 kommer att baseras på en helt annan algoritm [14] [15] . Den 2 oktober 2012 godkände NIST Keccak- algoritmen som SHA-3 .

Ansökan och certifiering

Se även Tillämpa hash

SHA-224 , SHA-256 , SHA-384 , SHA-512 , SHA-512/256 och SHA-512/224 är tillåtna enligt amerikansk lag för användning i vissa statliga tillämpningar, inklusive användning inom andra kryptografiska algoritmer och protokoll, för att skydda information , som inte har sekretessstämpel. Standarden tillåter även användning av SHA-2 av privata och kommersiella organisationer [16] .

SHA-2- hashfunktioner används för dataintegritetskontroller och i olika kryptografiska system. Från och med 2008 är SHA-2- familjen av hashfunktioner inte lika utbredd som MD5 och SHA-1 [17] , trots de brister som finns i den senare.

Några exempel på användningen av SHA-2 listas i tabellen:

Applikationsområde Detaljer
S/MIME SHA-224 , SHA-256 , SHA-384 eller SHA-512 meddelandesammandrag [18]
ÖppnaLDAP SHA-256 , SHA-384 eller SHA-512 lösenordshaschar [ 19]
DNSSEC SHA-256 DNSKEY smälter i DNSSEC - protokollet [20]
X.509 SHA-224 , SHA-256 , SHA-384 och SHA-512 används för att skapa en elektronisk digital signatur av ett certifikat [21]
PGP SHA-256 , SHA-384 , SHA-512 används för att skapa en elektronisk digital signatur [22]
IPSec Vissa implementeringar stöder SHA-256 i ESP- och IKE-protokollen [23]
DSA SHA -2- familjen används för att skapa en elektronisk digital signatur [24]
SHACAL-2 SHACAL-2-blockkrypteringsalgoritmen är baserad på SHA-256- hashfunktionen
bitcoin Att hitta en kombination av data vars SHA-256- hash uppfyller det angivna villkoret är ett bevis på utfört arbete när man utfärdar en kryptovaluta

Studier har visat [25] att SHA-2- algoritmer är 2-3 gånger långsammare än andra populära hashalgoritmer MD5 , SHA-1 , Tiger och RIPEMD-160 .

Certifiering

Implementeringar av SHA-2 , som alla federala informationsbehandlingsstandarder, kan certifieras för användning i vissa applikationer inom USA. Certifieringen sker som en del av Cryptographic Module Validation Program , som utförs av US National Institute of Standards and Technology i samarbete med Canadian Bureau of Communications Security.

Den 5 november 2008 har mer än 250 SHA-2- implementeringar certifierats , varav fyra kan hantera meddelanden med en bitlängd som inte är en multipel av åtta [26] .

Certifierad av FIPS PUB 180-4, CRYPTREC och NESSIE .

Se även

Anteckningar

  1. ↑ FIPS PUB 180-2  . - den ursprungliga versionen av standarden för SHA-2. Hämtad 19 november 2008. Arkiverad från originalet 18 mars 2012.
  2. FIPS PUB 180-2 med  ändringsmeddelande . - en variant av standarden med SHA-224. Hämtad 19 november 2008. Arkiverad från originalet 18 mars 2012.
  3. ↑ FIPS PUB 180-3  . - Oktober 2008-utgåvan av Secure Hash Standard. Hämtad 19 november 2008. Arkiverad från originalet 18 mars 2012.
  4. FIPS PUB 180-4  (engelska)  (länk ej tillgänglig) . — upplagan av Secure Hash Standard från augusti 2015. Hämtad 28 augusti 2015. Arkiverad från originalet 26 november 2016.
  5. US patent 6829355  . — Enhet för och metod för enkelriktad kryptografisk hashning. Hämtad 14 maj 2017. Arkiverad från originalet 27 juli 2016.
  6. Licensdeklaration för US patent 6829355.  (neopr.) .  (Engelsk)
  7. "Crypto++ 5.6.0 Benchmarks". Hämtad 2013-06-13. . Hämtad 25 september 2016. Arkiverad från originalet 14 oktober 2016.
  8. Gilbert H. , Handschuh H. Säkerhetsanalys av SHA-256 och systrar  // Selected Areas in Cryptography : 10th Annual International Workshop , SAC 2003, Ottawa, Kanada, 14-15 augusti 2003. Revised Papers / M Matsui , R. J. Zuccher - Berlin , Heidelberg , New York, NY , London [etc.] : Springer Berlin Heidelberg , 2004. - P. 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-stegskollisioner för SHA-2 Arkiverad 30 mars 2010 på Wayback Machine 
  10. Somitra Kumar Sanadhya, Palash Sarkar. Deterministiska konstruktioner av 21-stegskollisioner för SHA-2 Hash-  familjen
  11. Presentation "Deterministic Constructions of 21-Step Collisions for the SHA-2 Hash Family" Arkiverad 3 juli 2010 på Wayback Machine 
  12. Mendel F. , Nad T. , Schläffer M. Improving Local Collisions: New Attacks on Reduced SHA-256  // Framsteg inom kryptologi – EUROCRYPT 2013 : 32nd Annual International Conference on the Theory and Applications of Cryptographic Techniques, Aten, Grekland, maj 26-30, 2013. Proceedings / T. Johansson , P. Q. Nguyen - Springer Berlin Heidelberg , 2013. - S. 262-278. — 736 sid. - ISBN 978-3-642-38347-2 - doi: 10.1007/978-3-642-38348-9_16
  13. Christoph Dobraunig, Maria Eichlseder och Florian Mendel. Analys av SHA-512/224 och SHA-512/256  (odefinierad) . — 2016.
  14. Schneier om säkerhet: NIST Hash Workshop Liveblogging (5) Arkiverad 7 oktober 2008 på Wayback Machine 
  15. Hash cracked - heise Security Arkiverad 6 december 2008 på Wayback Machine 
  16. FIPS 180-2: Secure Hash Standard (SHS): 6. Tillämpning Arkiverad från originalet den 18 mars 2012.  (Engelsk)
  17. SHA-1 , SHA-256 i Googles sökmotorresultat
  18. draft-ietf-smime-sha2-08 Arkiverad 22 juni 2009 på Wayback Machine  : Använda SHA2-algoritmer med kryptografisk meddelandesyntax
  19. SHA-2 hash-stöd i OpenLDAP Arkiverad 27 juli 2010 på Wayback Machine 
  20. RFC 4509 : Användning av SHA-256 i DNSSEC Delegation Signer (DS) Resource Records (RR)
  21. RFC 4055 : Ytterligare algoritmer och identifierare för RSA-kryptering för användning i Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
  22. RFC 4880 : OpenPGP -meddelandeformat
  23. Översikt över Windows Vista Service Pack 1: Nya standarder arkiverade 12 mars 2016 på Wayback Machine 
  24. FIPS-186-2 Arkiverad 18 maj 2009. : Digital Signature Standard (DSS)]
  25. Hastighetsjämförelse av populära kryptoalgoritmer [1] Arkiverad 15 oktober 2008 på Wayback Machine 
  26. SHS-valideringslista Arkiverad 23 augusti 2011 på Wayback Machine 

Litteratur

Länkar