SHA

Allikas: Vikipeedia

Secure Hash Algorithm ehk SHA on krüptograafiliste räsifunktsioonide perekond, mis arendati välja Ameerika Ühendriikide Riikliku Standardite ja Tehnoloogia Instituudi poolt koostöös Riikliku julgeolekuagentuuriga.

SHA algoritmide perekonda kuuluvad SHA-0, SHA-1, SHA-2 ja SHA-3.

SHA-0 ja SHA-1[muuda | muuda lähteteksti]

SHA-0 algoritmi esialgne nimetus oli lihtsalt SHA, aga hiljem lisandus uuemaid sarnase põhimõttega algoritme, mistõttu võeti kasutusele nimetus SHA-0. Aastal 1993 avaldati SHA-1, mis oli esialgse algoritmi edasiarendus. Uues algoritmis oli parandatud varem leitud turvaauk, kusjuures SHA-0 ja SHA-1 erinevad ainult ühe tehte võrra. Praeguseks on SHA-1 algoritm kuulutatud ebaturvaliseks ning NIST soovitab riigiorganisatsioonidel kasutada uuemaid SHA räsifunktsioone [1].

Microsoft[2], Google[3] ja Mozilla[4] lõpetavad alates 2017. aastast brauserites SHA-1 SSL sertifikaatide aktsepteerimise.

SHA-1 räsifunktsiooni skeem

SHA-1 on kasutusel Git[5] ja Mercurial versioonihaldustarkvaras andmete terviklikuse kontrollimise eesmärgil.

SHA-2[muuda | muuda lähteteksti]

SHA-2 perekonda kuuluvad räsifunktsioonid SHA-256 ja SHA-512. SHA-256 kasutab 32-bitiseid sõnu ning SHA-512 64-bitiseid sõnu.

Rakendused[muuda | muuda lähteteksti]

SHA-2 räsifunktsioon on kasutusel mitmetes rakendustes ja protokollides, näiteks TLS, SSL, PGP, SSH, S/MIME ja IPsec.

SHA-256 funktsiooni kasutatakse Debian GNU ja Linuxi tarkvarapakettide autentimisel[6] ja DKIM sõnumite allkirjastamise standardis. SHA-512 on kasutusel süsteemis, mis autendib arhiveeritud videoid Rwanda genotsiidi tribunalist[7]. Linuxi ja UNIXi arendajatel on kavas paroolide räsimiseks võtta kasutusele SHA-256 ja SHA-512[8].

Bitcoin kasutab SHA-256 funktsiooni tehingute verifitseerimiseks ja toimingutõestuse arvutamisel.

SHA-2 räsifunktsiooni ühe iteratsiooni skeem

Teadaolevad rünnakud[muuda | muuda lähteteksti]

Artikkel Aasta Ründemeetod Rünnak Variant Tsükleid Keerukus
New Collision Attacks Against
Up To 24-step SHA-2
[9]
2008 Deterministlik Kollisioon SHA-256 24/64 228.5
SHA-512 24/80 232.5
Preimages for step-reduced SHA-2[10] 2009 Keskelkohterünne Originaalirünne SHA-256 42/64 2251.7
43/64 2254.9
SHA-512 42/80 2502.3
46/80 2511.5
Advanced meet-in-the-middle
preimage attacks
[11]
2010 Keskelkohterünne Originaalirünne SHA-256 42/64 2248.4
SHA-512 42/80 2494.6
Higher-Order Differential Attack
on Reduced SHA-256
[12]
2011 Diferentsiaalne krüptoanalüüs Pseudokollisioon SHA-256 46/64 2178
33/64 246
Bicliques for Preimages: Attacks on
Skein-512 and the SHA-2 family
[13]
2011 Keskelkohterünne Originaalirünne SHA-256 45/64 2255.5
SHA-512 50/80 2511.5
Pseudo-originaalirünne SHA-256 52/64 2255
SHA-512 57/80 2511
Improving Local Collisions: New
Attacks on Reduced SHA-256
[14]
2013 Diferentsiaalne krüptoanalüüs Kollisioon SHA-256 31/64 265.5
Pseudokollisioon SHA-256 38/64 237
Branching Heuristics in Differential Collision
Search with Applications to SHA-512
[15]
2014 Heuristiline

diferentsiaalne krüptoanalüüs

Pseudokollisioon SHA-512 38/80 240.5
Analysis of SHA-512/224 and SHA-512/256[16] 2016 Diferentsiaalne krüptoanalüüs Kollisioon SHA-256 28/64 praktiline
SHA-512 27/80 praktiline
Pseudokollisioon SHA-512 39/80 praktiline

SHA-3[muuda | muuda lähteteksti]

SHA-3 loodi Riikliku Standardite ja Tehnoloogia Instituudi poolt peetud avaliku konkursi käigus. Konkursi komisjoni poolt väljavalituks osutunud räsialgoritmi Keccak loojateks on Guido Bertoni, Joan Daemen, Michaël Peeters ja Gilles Van Assche[17]. SHA-3 loomise eesmärgiks ei olnud SHA-2 välja vahetamine, vaid pakkuda sellele alternatiivi juhul kui SHA-2 algoritmis avastatakse turvaauke.

SHA-3 perekonda kuuluvad laiendatava väljundiga räsifunktsioonid (ingl extendable-output function, XOF) SHAKE128 ja SHAKE256, mille väljundi suurust on vabalt muudetav. SHAKE-funktsioonid on esimesed Riikliku Standardite ja Tehnoloogia Instituudi poolt standardiseeritud XOF funktsioonid[18].

SHA funktsioonide võrdlus[muuda | muuda lähteteksti]

SHA funktsioonide võrdlus
Algoritmi variant Väljundi suurus
(bittides)
Sisemise oleku suurus
(bittides)
Ploki suurus
(bittides)
Maksimaalne sisendi suurus
(bittides)
Tsüklite arv Tehted Turvalisus
(bittides)
Arvutuskiirus [1]
(MiB/s)
MD5 (võrdluseks) 128 128
(4 × 32)
512 Piiramatu[19] 64 And, Xor, Rot, Add (mod 232), Or <64
(on leitud kollisioone)
335
SHA-0 160 160
(5 × 32)
512 264 − 1 80 And, Xor, Rot, Add (mod 232), Or <80
(on leitud kollisioone)
-
SHA-1 160 160
(5 × 32)
512 264 − 1 80 <80
(teoreetiline rünnak[20])
192
SHA-2 SHA-224
SHA-256
224
256
256
(8 × 32)
512 264 − 1 64 And, Xor, Rot, Add (mod 232), Or, Shr 112
128
139
SHA-384
SHA-512
SHA-512/224
SHA-512/256
384
512
224
256
512
(8 × 64)
1024 2128 − 1 80 And, Xor, Rot, Add (mod 264), Or, Shr 192
256
112
128
154
SHA-3 SHA3-224
SHA3-256
SHA3-384
SHA3-512
224
256
384
512
1600
(5 × 5 × 64)
1152
1088
832
576
Piiramatu[21] 24[22] And, Xor, Rot, Not 112
128
192
256
-
SHAKE128
SHAKE256
d (arbitraarne)
d (arbitraarne)
1344
1088
min(d/2, 128)
min(d/2, 256)
-
  1. http://csrc.nist.gov/groups/ST/hash/policy.html
  2. http://social.technet.microsoft.com/wiki/contents/articles/32288.windows-enforcement-of-authenticode-code-signing-and-timestamping.aspx
  3. https://groups.google.com/a/chromium.org/d/msg/blink-dev/2-R4XziFc7A/i_JipRRJoDQJ
  4. https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/
  5. https://www.youtube.com/watch?v=4XpnKHJAok8
  6. https://web.archive.org/web/20111107215111/http://google.com/codesearch/p?hl=en
  7. http://www.nytimes.com/2009/01/27/science/27arch.html
  8. http://people.redhat.com/drepper/sha-crypt.html
  9. Somitra Kumar Sanadhya & Palash Sarkar (2008). "New Collision Attacks Against Up To 24-step SHA-2". IACR Cryptology ePrint Archive. 2008:270. 
  10. Kazumaro Aoki; Jian Guo; Krystian Matusiewicz; Yu Sasaki & Lei Wang (2009). "Preimages for step-reduced SHA-2". Advances in Cryptology - ASIACRYPT 2009. Lecture Notes in Computer Science (Springer Berlin Heidelberg) 5912: 578–597. ISBN 978-3-642-10366-7. ISSN 0302-9743. doi:10.1007/978-3-642-10366-7_34. 
  11. Jian Guo; San Ling; Christian Rechberger & Huaxiong Wang (2010). "Advanced meet-in-the-middle preimage attacks: First results on full Tiger, and improved results on MD4 and SHA-2". Advances in Cryptology - ASIACRYPT 2010. Lecture Notes in Computer Science (Springer Berlin Heidelberg) 6477: 56–75. ISBN 978-3-642-17373-8. ISSN 0302-9743. doi:10.1007/978-3-642-17373-8_4. 
  12. Mario Lamberger & Florian Mendel (2011). "Higher-Order Differential Attack on Reduced SHA-256". IACR Cryptology ePrint Archive. 2011:37. 
  13. Dmitry Khovratovich, Christian Rechberger & Alexandra Savelieva (2011). "Bicliques for Preimages: Attacks on Skein-512 and the SHA-2 family". IACR Cryptology ePrint Archive. 2011:286. 
  14. Florian Mendel; Tomislav Nad; Martin Schläffer (2013). "Improving Local Collisions: New Attacks on Reduced SHA-256". Advances in Cryptology – EUROCRYPT 2013. Lecture Notes in Computer Science (Springer Berlin Heidelberg) 7881: 262–278. ISBN 978-3-642-38348-9. ISSN 0302-9743. doi:10.1007/978-3-642-38348-9_16. 
  15. Maria Eichlseder and Florian Mendel and Martin Schläffer (2014). "Branching Heuristics in Differential Collision Search with Applications to SHA-512". IACR Cryptology ePrint Archive. 2014:302. 
  16. Christoph Dobraunig; Maria Eichlseder & Florian Mendel (2016). "Analysis of SHA-512/224 and SHA-512/256". 
  17. http://csrc.nist.gov/groups/ST/hash/sha-3/
  18. http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf
  19. "The MD5 Message-Digest Algorithm". Vaadatud 2016-04-18. 
  20. "The SHAppening: freestart collisions for SHA-1". Vaadatud 2015-11-05. 
  21. "The Sponge Functions Corner". Vaadatud 2016-01-27. 
  22. "The Keccak sponge function family". Vaadatud 2016-01-27.