SHA-2

SHA-2
Létrehozva 2002
közzétett 2002
Utód Keccak
Hash méret 224, 256, 384 vagy 512 bit
A körök száma 64 vagy 80
Típusú hash függvénycsalád

SHA-2 ( eng. Secure Hash Algorithm Version 2 – Secure Hash Algorithm, Version 2) – kriptográfiai algoritmusok  családja  – egyirányú hash függvények , beleértve az SHA-224, SHA-256, SHA-384, SHA-512 algoritmusokat , SHA -512/256 és SHA-512/224 .

A hash függvények tetszőleges hosszúságú üzenetek "ujjlenyomatait" vagy "kivonatait" készítik. Különböző, információbiztonsággal kapcsolatos alkalmazásokban vagy összetevőkben használják őket .

Történelem

Az SHA-2 hash függvényeket az Egyesült Államok Nemzetbiztonsági Ügynöksége fejlesztette ki , és a National Institute of Standards and Technology publikálta a FIPS PUB 180-2 szövetségi információfeldolgozási szabványban 2002 augusztusában [1] . Ez a szabvány tartalmazza az 1995-ben kifejlesztett SHA-1 hash függvényt is. 2004 februárjában az SHA-224 [2] hozzáadásra került a FIPS PUB 180-2 -hez . 2008 októberében megjelent a szabvány új kiadása - FIPS PUB 180-3 [3] . 2012 márciusában megjelent a FIPS PUB 180-4 legújabb verziója , amely SHA-512/256 és SHA-512/224 funkciókkal egészítette ki az SHA-512 alapú (mivel az SHA-512 gyorsabb 64 bites architektúrákon, mint az SHA- 256) [4] .

2006 júliusában jelent meg az RFC 4634 "U.S. Secure Hash Algorithms ( SHA and HMAC-SHA )", amely leírja az SHA-1- et és az SHA-2 családot .

A Nemzetbiztonsági Ügynökség az állam nevében szabadalmat adott ki az SHA-2- re [5] jogdíjmentes licenc [6] alapján .

Algoritmus

Általános leírás

Az SHA-2 család hash funkciói a Merkle-Damgor struktúra alapján épülnek fel .

Az eredeti üzenet a hozzáadás után blokkra van osztva, mindegyik blokk 16 szóból áll. Az algoritmus minden üzenetblokkot 64 vagy 80 iterációt (kört) tartalmazó hurkon halad át. Minden iterációnál 2 szó transzformálásra kerül, a transzformációs függvényt a maradék szavak állítják be. Az egyes blokkok feldolgozási eredményeit összeadjuk, az összeg a hash függvény értéke. A belső állapot inicializálása azonban az előző blokk feldolgozásának eredménye. Ezért nem dolgozhat fel önállóan blokkokat és nem adhat hozzá eredményeket. Lásd a pszeudokódot a részletekért .

A hash függvények összehasonlítása

Az alábbi táblázat a különböző SHA-2 változatok néhány műszaki jellemzőjét mutatja be. A „belső állapot” a következő adatblokk feldolgozása utáni közbenső hash összegre utal:

hash függvény Üzenet kivonat hossza (bit) Belső állapot hossza (bit) Blokkhossz (bit) Üzenet maximális
hossza (bit)
Szóhossz (bit) Az iterációk száma egy ciklusban Sebesség (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

Pszeudokód

A pszeudokód a következő bitenkénti műveleteket használja:

SHA-256

Magyarázatok: Minden változó előjel nélküli , 32 bites , és a számítások során modulo 2 összegzésre kerül 32 üzenet — eredeti  bináris üzenet m  — transzformált üzenet h0 := 0x6A09E667 h1 := 0xBB67AE85 h2 := 0x3C6EF372 h3 := 0xA54FF53A h4 := 0x510E527F h5 := 0x9B05688C h6 := 0x1F83D9AB h7 := 0x5BE0CD19 Állandó táblázat (az első 64 prím tört kockagyökeinek első 32 bitje [2-től 311-ig]): 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 Előfeldolgozás: m := üzenet ǁ [ single bit ] m := m ǁ [k nulla bit ], ahol k  a legkisebb nemnegatív szám, (L + 1 + K) mod 512 = 448, ahol L az üzenet bitjeinek száma (az 512 modul 448-hoz hasonlítható) m := m ǁ Hossz (üzenet) az eredeti üzenet hossza bitben. 64 bites számbájtok sorrendje nagytól kicsiig Ezután az üzenetet 512 bites egymást követő részekben dolgozzuk fel: az üzenetet 512 bites darabokra bontja minden darabhoz osszuk fel a darabot 16, 32 bites szóra ( bájtsorrenddel a magastól az alsóig): w[0..15] További 48 szó létrehozása: i - hez 16 -tól 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 A segédváltozók inicializálása: a := h0 b := h1 c := h2 d := h3 e := h4 f := h5 g := h6 h := h7 Fő hurok: i - hez 0 -tól 63 Σ0 := (egy rotr 2) xor (egy rotr 13) xor (egy rotr 22) Ma := (a és b) xor (a és c) xor (b és c) t2 := Σ0 + Ma Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25) Ch := (e és f) xor (( nem e) és 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 Adja hozzá a kapott értékeket az előzőleg kiszámított eredményhez: h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h Szerezze meg a végső hash értéket: digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7

Az SHA-224 megegyezik az SHA-256-tal , kivéve:

A változók kezdeti értékei az h0SHA h7-224-ben vannak: h0 := 0xC1059ED8 h1 := 0x367CD507 h2 := 0x3070DD17 h3 := 0xF70E5939 h4 := 0xFFC00B31 h5 := 0x68581511 h6 := 0x64F98FA7 h7 := 0xBEFA4FA4

Az SHA-512 szerkezete azonos, de:

A változók kezdeti értékei az h0SHA h7-512-ben vannak: h0 := 0x6a09e667f3bcc908, h1 := 0xbb67ae8584caa73b, h2 := 0x3c6ef372fe94f82b, h3 := 0xa54ff53a5f1d36f1, h4 := 0x510e527fade682d1, h5 := 0x9b05688c2b3e6c1f, h6 := 0x1f83d9abfb41bd6b, h7 := 0x5be0cd19137e2179

Az SHA-384 megegyezik az SHA-512-vel, kivéve:

A változók kezdeti értékei az h0SHA h7-384-ben vannak (a prímszámok négyzetgyökeinek tört részeinek első 64 bitje 9-től 16-ig [23-tól 53-ig]): h0 := CBBB9D5DC1059ED8 h1 := 629A292A367CD507 h2 := 9159015A3070DD17 h3 := 152FECD8F70E5939 h4 := 67332667FFC00B31 h5 := 8EB44A8768581511 h6 := DB0C2E0D64F98FA7 h7 := 47B5481DBEFA4FA4

Az SHA-512/256 megegyezik az SHA-512-vel, kivéve:

A változók kezdeti értéke az h0SHA h7-512/256-ban található : h0 := 22312194FC2BF72C h1 := 9F555FA3C84C64C2 h2 := 2393B86B6F53B151 h3 := 963877195940EABD h4 := 96283EE2A88EFFE3 h5 := BE5E1E2553863992 h6 := 2B0199FC2C85B8AA h7 := 0EB72DDC81C52CA2

Az SHA-512/224 megegyezik az SHA-512-vel, kivéve:

A változók kezdeti értéke az h0SHA h7-512/224-ben található : h0 := 8C3D37C819544DA2 h1 := 73E1996689DCD4D6 h2 := 1DFAB7AE32FF9C82 h3 := 679DD514582F9FCF h4 := 0F6D2B697BD44DA8 h5 := 77E36F7304C48942 h6 := 3F9D85A86A1D36C8 h7 := 1112E6AD91D692A1

Példák

Az alábbiakban példák láthatók az SHA-2 protokoll különböző verziói alatti kivonatokra ugyanarra a szövegre . Minden példa ASCII kódolás használatát feltételezi .

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

Az üzenet legkisebb változása az esetek túlnyomó többségében a hash teljes megváltozásához vezet a lavinahatás miatt . Például a következőre dogváltáskor cog(a változás csak egy bitet érint a kódolt frázis 344-éből), a hash drámaian megváltozik:

SHA-256 ("A gyors barna róka átugrik a lusta fogaskeréken") = E4C4D8F3 BF76B692 DE791A17 3E053211 50F7A345 B46484FE 427F6ACC 7ECC81BE

Kriptanalízis

A hash függvény kriptoanalízise magában foglalja az algoritmus stabilitásának tanulmányozását legalább a következő típusú támadásokkal szemben:

2003- ban Gilbert és Handschuh tanulmányt végzett az SHA-2-vel kapcsolatban , de nem találtak sebezhetőséget [8] . 2008 márciusában azonban Somitra Kumar Sanadiya és Palash Sarkar indiai kutatók közzétették az SHA-256 és SHA-512 22 iterációja során talált ütközéseket [9] . Ugyanezen év szeptemberében bemutattak egy módszert az SHA-2 csonka verzióinak ütközések létrehozására (21 iteráció) [10] [11] . Később találtak módszereket ütközések létrehozására az SHA-256 [12] 31 és az SHA-512 [13] 27 iterációjához .

Az SHA-2 és az SHA-1 algoritmikus hasonlósága és az utóbbi lehetséges sebezhetősége miatt úgy döntöttek, hogy az SHA-3 egy teljesen más algoritmuson fog alapulni [14] [15] . 2012. október 2-án a NIST jóváhagyta a Keccak algoritmust SHA-3 néven .

Pályázat és tanúsítás

Lásd még: Kivonat alkalmazása

Az Egyesült Államok törvényei engedélyezik az SHA-224 , SHA-256 , SHA-384 , SHA-512 , SHA-512/256 és SHA-512/224 használatát bizonyos kormányzati alkalmazásokban, ideértve az egyéb kriptográfiai algoritmusokon és protokollokon belüli felhasználást is a védelem érdekében. információ , amely nem rendelkezik titkosítási bélyegzővel. A szabvány magán- és kereskedelmi szervezetek számára is lehetővé teszi az SHA-2 használatát [16] .

Az SHA-2 hash függvények az adatok integritásának ellenőrzésére és különféle kriptográfiai sémákban használatosak. 2008 -tól az SHA-2 hash-függvénycsalád nem olyan elterjedt, mint az MD5 és az SHA-1 [17] , az utóbbiban talált hiányosságok ellenére.

Néhány példa az SHA-2 használatára a táblázatban található:

Alkalmazási terület Részletek
S/MIME SHA-224 , SHA-256 , SHA-384 vagy SHA-512 üzenet kivonatok [18]
OpenLDAP SHA-256 , SHA-384 vagy SHA -512 jelszókivonatok [19]
DNSSEC SHA-256 DNSKEY kivonatok a DNSSEC protokollban [20]
X.509 Az SHA-224 , SHA-256 , SHA-384 és SHA-512 egy tanúsítvány elektronikus digitális aláírásának létrehozására szolgál [21]
PGP Az SHA-256 , SHA-384 , SHA-512 elektronikus digitális aláírás létrehozására szolgál [22]
IPSec Egyes megvalósítások támogatják az SHA-256 -ot az ESP és IKE protokollokban [23]
DSA Az SHA-2 családot elektronikus digitális aláírás létrehozására használják [24]
SHACAL-2 A SHACAL-2 blokk titkosítási algoritmus az SHA-256 hash függvényen alapul
bitcoin Az olyan adatok kombinációjának megtalálása, amelyek SHA-256 hashje megfelel a megadott feltételnek, a kriptovaluta kibocsátása során végzett munka bizonyítéka

Tanulmányok kimutatták [25] , hogy az SHA-2 algoritmusok 2-3-szor lassabbak, mint a többi népszerű hash algoritmus ( MD5 , SHA-1 , Tiger és RIPEMD-160 ).

Minősítés

Az SHA-2 implementációi , mint minden szövetségi információfeldolgozási szabvány, tanúsíthatók bizonyos alkalmazásokban az Egyesült Államokban. A tanúsítás a Cryptographic Module Validation Program részeként történik, amelyet az Egyesült Államok Nemzeti Szabványügyi és Technológiai Intézete hajt végre a Kanadai Kommunikációs Biztonsági Irodával közösen.

2008. november 5- ig több mint 250 SHA-2 implementációt tanúsítottak , amelyek közül négy olyan üzenetet képes kezelni, amelynek bithossza nem a nyolcszoros [26] .

A FIPS PUB 180-4, CRYPTREC és NESSIE tanúsítványa .

Lásd még

Jegyzetek

  1. ↑ FIPS PUB 180-2  . - az SHA-2 szabvány eredeti verziója. Letöltve: 2008. november 19. Az eredetiből archiválva : 2012. március 18..
  2. FIPS PUB 180-2 változási  értesítéssel . - a szabvány változata SHA-224-gyel. Letöltve: 2008. november 19. Az eredetiből archiválva : 2012. március 18..
  3. ↑ FIPS PUB 180-3  . - A Secure Hash Standard 2008. októberi kiadása. Letöltve: 2008. november 19. Az eredetiből archiválva : 2012. március 18..
  4. FIPS PUB 180-4  (angol)  (hivatkozás nem érhető el) . – a Secure Hash Standard 2015. augusztusi kiadása. Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2016. november 26..
  5. US 6829355 szabadalom  . — Eszköz és módszer az egyirányú kriptográfiai kivonatoláshoz. Letöltve: 2017. május 14. Az eredetiből archiválva : 2016. július 27.
  6. Licencnyilatkozat a 6829355 számú amerikai egyesült államokbeli szabadalomhoz  . (neopr.) .  (Angol)
  7. "Crypto++ 5.6.0 benchmarks". Letöltve: 2013-06-13. . Letöltve: 2016. szeptember 25. Az eredetiből archiválva : 2016. október 14..
  8. Gilbert H. , Handschuh H. SHA-256 és nővérek biztonsági elemzése  // Selected Areas in Cryptography : 10th Annual International Workshop , SAC 2003, Ottawa, Kanada, 2003. augusztus 14-15. Revised Papers / M Matsui Zuccherato J. - Berlin , Heidelberg , New York, NY , London [stb.] : Springer Berlin Heidelberg , 2004. - P. 175-193. - ( Számítástechnikai előadások jegyzetei ; 3006. évf.) - 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-Step Collisions for SHA-2 Archiválva : 2010. március 30. a Wayback Machine -nél 
  10. Somitra Kumar Sanadhya, Palash Sarkar. 21 lépéses ütközések determinisztikus konstrukciói az SHA-2 hash-  családhoz
  11. "21 lépéses ütközések determinisztikus konstrukciói az SHA-2 hash családhoz" előadás archiválva 2010. július 3-án a Wayback Machine -nél 
  12. Mendel F. , Nad T. , Schläffer M. Improving Local Collisions: New Attacks on Redduced SHA-256  // Advances in Cryptology – EUROCRYPT 2013 : 32nd Annual International Conference on the Theory and Applications of Cryptographic Techniques, May Athén, Görögország, 26-30, 2013. Proceedings / T. Johansson , P. Q. Nguyen - Springer Berlin Heidelberg , 2013. - P. 262-278. — 736 p. - ISBN 978-3-642-38347-2 - doi: 10.1007/978-3-642-38348-9_16
  13. Christoph Dobraunig, Maria Eichlseder és Florian Mendel. Az SHA-512/224 és az SHA-512/256 elemzése  (undefined) . — 2016.
  14. Schneier a biztonságról: NIST Hash Workshop Liveblogging (5) Archivált : 2008. október 7. a Wayback Machine -nél 
  15. Hash cracked - heise Security Archiválva : 2008. december 6. a Wayback Machine -nél 
  16. FIPS 180-2: Secure Hash Standard (SHS): 6. Alkalmazhatóság Az eredetiből archiválva : 2012. március 18.  (Angol)
  17. SHA-1 , SHA-256 a Google keresőmotor eredményeiben
  18. draft-ietf-smime-sha2-08 Archivált : 2009. június 22. a Wayback Machine -nél  : SHA2 algoritmusok használata kriptográfiai üzenet szintaxissal
  19. SHA-2 hash támogatás az OpenLDAP-ban Archiválva : 2010. július 27. a Wayback Machine -nél 
  20. RFC 4509 : SHA-256 használata a DNSSEC Delegation Signer (DS) erőforrásrekordokban (RR)
  21. RFC 4055 : További algoritmusok és azonosítók az RSA kriptográfiához az Internet X.509 nyilvános kulcsú infrastruktúra tanúsítvány és tanúsítvány visszavonási lista (CRL) profiljában
  22. RFC 4880 : OpenPGP üzenetformátum
  23. A Windows Vista Service Pack 1 áttekintése: Új szabványok archiválva 2016. március 12-én a Wayback Machine -nél 
  24. FIPS-186-2 Archiválva : 2009. május 18. : Digitális aláírás szabvány (DSS)]
  25. Népszerű kriptoalgoritmusok sebesség-összehasonlítása [1] Archiválva : 2008. október 15. a Wayback Machine -nél 
  26. SHS-ellenőrzési lista archiválva : 2011. augusztus 23. a Wayback Machine -nél 

Irodalom

Linkek